diff --git a/DEPS b/DEPS
index d6aac67..0f5e24ab 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': 'b19c78ebad8485475a14f8bfcc006099a12fdc08',
+  'skia_revision': '4ca0dacbce515bcc1b96ac574b80a9d2386b9a15',
   # 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': '6b291043ad5d35926b4e78c7b71839f4857b1196',
+  'v8_revision': '1bcbb571d7410173970be186312c601abe776c34',
   # 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.
@@ -197,7 +197,7 @@
   # 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': '8fff8c3b7dc8f6d6988e219ed6f371211259833c',
+  'swiftshader_revision': 'f324fe10ca659922a060f974ffb2027d7cea7d53',
   # 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': 'b9cc8d75a2ad37c5a1c24113cfe41c8d888f576b',
+  'catapult_revision': 'bc9b29411747ee0e529db2d9745702ad20c461c7',
   # 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': '2e45f00d3687cf39b14dd54931e91a536aae7c68',
+  'devtools_frontend_revision': '04ccecc2d7b27a688bec903bb0120a60135b6799',
   # 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.
@@ -308,15 +308,15 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'shaderc_revision': 'a32acc1be500bdb204654169026721fc728e086d',
+  'shaderc_revision': '9ad78aa7dba268ef8b808d23b135ea636fd893b1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '6b66b67f69e2f1934800b372431b5808105dc56c',
+  'dawn_revision': '8ffd3f23331dc56d3cd45d416e850cee88119330',
   # 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': 'dfabdfb6884bf8ccd92c6f818aa8764a84f5a984',
+  'quiche_revision': 'f579b5e51aaf2224e9c80ff1fb4606492bd0cba4',
   # 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.
@@ -904,7 +904,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6a5aa6680ce4da1be7d3a825b33a6f0fe92537d9',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'bdd89366d34e81683873c153d276e9be93ad086b',
 
   'src/third_party/devtools-frontend/src':
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
@@ -1186,7 +1186,7 @@
   },
 
   'src/third_party/libvpx/source/libvpx':
-    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '50d1a4aa725fbc78ee89ffde5e83b4ee4fe4893e',
+    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '7763c888e0c0a0c7b0a25746b11fdc3d53da4f70',
 
   'src/third_party/libwebm/source':
     Var('chromium_git') + '/webm/libwebm.git' + '@' + '51ca718c3adf0ddedacd7df25fe45f67dc5a9ce1',
@@ -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@71fa12130a57473da37cc0fe72411dbcb6143e03',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@c518c7f9fe9a1ddea91f962ae4dc7b923b33510f',
     'condition': 'checkout_src_internal',
   },
 
@@ -2666,6 +2666,28 @@
       'dep_type': 'cipd',
   },
 
+  'src/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core',
+              'version': 'version:1.0.0-beta08-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor',
+              'version': 'version:1.0.0-beta08-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
   'src/third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms': {
       'packages': [
           {
@@ -3194,6 +3216,17 @@
       'dep_type': 'cipd',
   },
 
+  'src/third_party/android_deps/libs/commons_cli_commons_cli': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/commons_cli_commons_cli',
+              'version': 'version:1.3.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
   'src/third_party/android_deps/libs/javax_annotation_javax_annotation_api': {
       'packages': [
           {
@@ -3293,6 +3326,39 @@
       'dep_type': 'cipd',
   },
 
+  'src/third_party/android_deps/libs/org_jdom_jdom2': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/org_jdom_jdom2',
+              'version': 'version:2.0.6-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib',
+              'version': 'version:1.3.41-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common',
+              'version': 'version:1.3.41-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
   'src/third_party/android_deps/libs/org_pcollections_pcollections': {
       'packages': [
           {
diff --git a/android_webview/browser/gfx/begin_frame_source_webview.cc b/android_webview/browser/gfx/begin_frame_source_webview.cc
index 68688ff..55cf885 100644
--- a/android_webview/browser/gfx/begin_frame_source_webview.cc
+++ b/android_webview/browser/gfx/begin_frame_source_webview.cc
@@ -11,23 +11,28 @@
 namespace android_webview {
 
 class BeginFrameSourceWebView::BeginFrameObserver
-    : public viz::BeginFrameObserverBase {
+    : public viz::BeginFrameObserver {
  public:
-  BeginFrameObserver(BeginFrameSourceWebView* owner) : owner_(owner) {
-    wants_animate_only_begin_frames_ = true;
+  BeginFrameObserver(BeginFrameSourceWebView* owner) : owner_(owner) {}
+
+  void OnBeginFrame(const viz::BeginFrameArgs& args) override {
+    last_used_begin_frame_args_ = args;
+    owner_->SendBeginFrame(args);
   }
 
-  bool OnBeginFrameDerivedImpl(const viz::BeginFrameArgs& args) override {
-    owner_->SendBeginFrame(args);
-    return true;
+  const viz::BeginFrameArgs& LastUsedBeginFrameArgs() const override {
+    return last_used_begin_frame_args_;
   }
 
   void OnBeginFrameSourcePausedChanged(bool paused) override {
     owner_->OnSetBeginFrameSourcePaused(paused);
   }
 
+  bool WantsAnimateOnlyBeginFrames() const override { return true; }
+
  private:
   BeginFrameSourceWebView* const owner_;
+  viz::BeginFrameArgs last_used_begin_frame_args_;
 };
 
 BeginFrameSourceWebView::BeginFrameSourceClient::BeginFrameSourceClient(
diff --git a/android_webview/browser/gfx/begin_frame_source_webview_unittest.cc b/android_webview/browser/gfx/begin_frame_source_webview_unittest.cc
index dd73024..905c3c4 100644
--- a/android_webview/browser/gfx/begin_frame_source_webview_unittest.cc
+++ b/android_webview/browser/gfx/begin_frame_source_webview_unittest.cc
@@ -199,4 +199,22 @@
   begin_frame_source_.RemoveObserver(&observer_);
 }
 
+TEST_F(BeginFrameSourceWebViewTest, Reentrancy) {
+  begin_frame_source_.SetParentSource(&root_begin_frame_source_);
+  begin_frame_source_.AddObserver(&observer_);
+
+  // Re-Add observer inside OnBeginFrame so it will trigger missed BeginFrame
+  EXPECT_CALL(observer_, OnBeginFrame(testing::_))
+      .WillRepeatedly(testing::Invoke([&](const viz::BeginFrameArgs& args) {
+        if (args.type == viz::BeginFrameArgs::MISSED)
+          return;
+        begin_frame_source_.RemoveObserver(&observer_);
+        begin_frame_source_.AddObserver(&observer_);
+      }));
+
+  test_begin_frame_source_.OnBeginFrame(BeginFrameArgsForTesting(1));
+
+  begin_frame_source_.RemoveObserver(&observer_);
+}
+
 }  // namespace android_webview
diff --git a/ash/app_list/views/app_list_main_view.cc b/ash/app_list/views/app_list_main_view.cc
index 89ccf656..4d18d8d 100644
--- a/ash/app_list/views/app_list_main_view.cc
+++ b/ash/app_list/views/app_list_main_view.cc
@@ -49,8 +49,6 @@
     : delegate_(delegate),
       model_(delegate->GetModel()),
       search_model_(delegate->GetSearchModel()),
-      search_box_view_(nullptr),
-      contents_view_(nullptr),
       app_list_view_(app_list_view) {
   // We need a layer to apply transform to in small display so that the apps
   // grid fits in the display.
@@ -77,11 +75,11 @@
 
 void AppListMainView::AddContentsViews() {
   DCHECK(search_box_view_);
-  contents_view_ = new ContentsView(app_list_view_);
-  contents_view_->Init(model_);
-  contents_view_->SetPaintToLayer(ui::LAYER_NOT_DRAWN);
-  contents_view_->layer()->SetMasksToBounds(true);
-  AddChildView(contents_view_);
+  auto contents_view = std::make_unique<ContentsView>(app_list_view_);
+  contents_view->Init(model_);
+  contents_view->SetPaintToLayer(ui::LAYER_NOT_DRAWN);
+  contents_view->layer()->SetMasksToBounds(true);
+  contents_view_ = AddChildView(std::move(contents_view));
 
   search_box_view_->set_contents_view(contents_view_);
 }
diff --git a/ash/app_list/views/app_list_main_view.h b/ash/app_list/views/app_list_main_view.h
index 64a133f8..5ae92d0 100644
--- a/ash/app_list/views/app_list_main_view.h
+++ b/ash/app_list/views/app_list_main_view.h
@@ -99,10 +99,10 @@
   SearchModel* search_model_;  // Unowned; ownership is handled by |delegate_|.
 
   // Created by AppListView. Owned by views hierarchy.
-  SearchBoxView* search_box_view_;
+  SearchBoxView* search_box_view_ = nullptr;
 
-  ContentsView* contents_view_;       // Owned by views hierarchy.
-  AppListView* const app_list_view_;  // Owned by views hierarchy.
+  ContentsView* contents_view_ = nullptr;  // Owned by views hierarchy.
+  AppListView* const app_list_view_;       // Owned by views hierarchy.
 
   DISALLOW_COPY_AND_ASSIGN(AppListMainView);
 };
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc
index df26170..39a81e4 100644
--- a/ash/app_list/views/app_list_view.cc
+++ b/ash/app_list/views/app_list_view.cc
@@ -618,20 +618,24 @@
   DCHECK(!search_box_view_);
   DCHECK(!announcement_view_);
 
+  auto app_list_background_shield =
+      std::make_unique<AppListBackgroundShieldView>(delegate_->GetShelfSize() /
+                                                    2);
+  app_list_background_shield->UpdateBackground(/*use_blur*/ !is_tablet_mode &&
+                                               is_background_blur_enabled_);
   app_list_background_shield_ =
-      new AppListBackgroundShieldView(delegate_->GetShelfSize() / 2);
-  app_list_background_shield_->UpdateBackground(/*use_blur*/ !is_tablet_mode &&
-                                                is_background_blur_enabled_);
-  AddChildView(app_list_background_shield_);
+      AddChildView(std::move(app_list_background_shield));
 
-  app_list_main_view_ = new AppListMainView(delegate_, this);
-  search_box_view_ = new SearchBoxView(app_list_main_view_, delegate_, this);
+  auto app_list_main_view = std::make_unique<AppListMainView>(delegate_, this);
+  search_box_view_ =
+      new SearchBoxView(app_list_main_view.get(), delegate_, this);
   search_box_view_->Init(is_tablet_mode);
 
-  app_list_main_view_->Init(0, search_box_view_);
-  AddChildView(app_list_main_view_);
-  announcement_view_ = new views::View();
-  AddChildView(announcement_view_);
+  // Assign |app_list_main_view_| here since it is accessed during Init().
+  app_list_main_view_ = app_list_main_view.get();
+  app_list_main_view->Init(0, search_box_view_);
+  AddChildView(std::move(app_list_main_view));
+  announcement_view_ = AddChildView(std::make_unique<views::View>());
 }
 
 void AppListView::InitWidget(gfx::NativeView parent) {
diff --git a/ash/app_list/views/apps_container_view.cc b/ash/app_list/views/apps_container_view.cc
index d7ba101..12e8abbf 100644
--- a/ash/app_list/views/apps_container_view.cc
+++ b/ash/app_list/views/apps_container_view.cc
@@ -62,25 +62,26 @@
     : contents_view_(contents_view) {
   SetPaintToLayer(ui::LAYER_NOT_DRAWN);
 
-  suggestion_chip_container_view_ =
-      new SuggestionChipContainerView(contents_view);
-  AddChildView(suggestion_chip_container_view_);
+  suggestion_chip_container_view_ = AddChildView(
+      std::make_unique<SuggestionChipContainerView>(contents_view));
 
-  apps_grid_view_ = new AppsGridView(contents_view_, nullptr);
-  AddChildView(apps_grid_view_);
+  apps_grid_view_ =
+      AddChildView(std::make_unique<AppsGridView>(contents_view_, nullptr));
 
   // Page switcher should be initialized after AppsGridView.
-  page_switcher_ =
-      new PageSwitcher(apps_grid_view_->pagination_model(), true /* vertical */,
-                       contents_view_->app_list_view()->is_tablet_mode());
-  AddChildView(page_switcher_);
+  auto page_switcher = std::make_unique<PageSwitcher>(
+      apps_grid_view_->pagination_model(), true /* vertical */,
+      contents_view_->app_list_view()->is_tablet_mode());
+  page_switcher_ = AddChildView(std::move(page_switcher));
 
-  app_list_folder_view_ = new AppListFolderView(this, model, contents_view_);
+  auto app_list_folder_view =
+      std::make_unique<AppListFolderView>(this, model, contents_view_);
   // The folder view is initially hidden.
-  app_list_folder_view_->SetVisible(false);
-  folder_background_view_ = new FolderBackgroundView(app_list_folder_view_);
-  AddChildView(folder_background_view_);
-  AddChildView(app_list_folder_view_);
+  app_list_folder_view->SetVisible(false);
+  auto folder_background_view =
+      std::make_unique<FolderBackgroundView>(app_list_folder_view.get());
+  folder_background_view_ = AddChildView(std::move(folder_background_view));
+  app_list_folder_view_ = AddChildView(std::move(app_list_folder_view));
 
   apps_grid_view_->SetModel(model);
   apps_grid_view_->SetItemList(model->top_level_item_list());
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index 086388db..2d1434d 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -845,15 +845,15 @@
 
   // Create a new AppListItemView to duplicate the original_drag_view in the
   // folder's grid view.
-  AppListItemView* view =
-      new AppListItemView(this, original_drag_view->item(),
-                          contents_view_->GetAppListMainView()->view_delegate(),
-                          false /* is_in_folder */);
-  items_container_->AddChildView(view);
+  auto view = std::make_unique<AppListItemView>(
+      this, original_drag_view->item(),
+      contents_view_->GetAppListMainView()->view_delegate(),
+      false /* is_in_folder */);
+  auto* view_ptr = items_container_->AddChildView(std::move(view));
   for (const auto& entry : view_model_.entries())
     static_cast<AppListItemView*>(entry.view)->EnsureLayer();
-  view->EnsureLayer();
-  drag_view_ = view;
+  view_ptr->EnsureLayer();
+  drag_view_ = view_ptr;
 
   // Dragged view should have focus. This also fixed the issue
   // https://crbug.com/834682.
@@ -1204,9 +1204,9 @@
     // Skip "page break" items.
     if (item_list_->item_at(i)->is_page_break())
       continue;
-    AppListItemView* view = CreateViewForItemAtIndex(i);
-    view_model_.Add(view, view_model_.view_size());
-    items_container_->AddChildView(view);
+    std::unique_ptr<AppListItemView> view = CreateViewForItemAtIndex(i);
+    view_model_.Add(view.get(), view_model_.view_size());
+    items_container_->AddChildView(std::move(view));
   }
   if (!folder_delegate_)
     view_structure_.LoadFromMetadata();
@@ -1268,17 +1268,18 @@
   }
 
   while (pulsing_blocks_model_.view_size() < desired) {
-    PulsingBlockView* view = new PulsingBlockView(GetTotalTileSize(), true);
-    pulsing_blocks_model_.Add(view, 0);
-    items_container_->AddChildView(view);
+    auto view = std::make_unique<PulsingBlockView>(GetTotalTileSize(), true);
+    pulsing_blocks_model_.Add(view.get(), 0);
+    items_container_->AddChildView(std::move(view));
   }
 }
 
-AppListItemView* AppsGridView::CreateViewForItemAtIndex(size_t index) {
+std::unique_ptr<AppListItemView> AppsGridView::CreateViewForItemAtIndex(
+    size_t index) {
   // The |drag_view_| might be pending for deletion, therefore |view_model_|
   // may have one more item than |item_list_|.
   DCHECK_LE(index, item_list_->item_count());
-  AppListItemView* view = new AppListItemView(
+  std::unique_ptr<AppListItemView> view = std::make_unique<AppListItemView>(
       this, item_list_->item_at(index),
       contents_view_->GetAppListMainView()->view_delegate());
   return view;
@@ -2056,14 +2057,15 @@
   DCHECK(!folder_delegate_);
   DCHECK(activated_folder_item_view_);
 
-  AppListItemView* reparented_view_in_root_grid =
-      new AppListItemView(this, reparented_view->item(),
-                          contents_view_->GetAppListMainView()->view_delegate(),
-                          false /* is_in_folder */);
+  auto reparented_view_in_root_grid = std::make_unique<AppListItemView>(
+      this, reparented_view->item(),
+      contents_view_->GetAppListMainView()->view_delegate(),
+      false /* is_in_folder */);
 
-  items_container_->AddChildView(reparented_view_in_root_grid);
-  view_model_.Add(reparented_view_in_root_grid, view_model_.view_size());
-  view_structure_.Add(reparented_view_in_root_grid, GetLastTargetIndex());
+  auto* reparented_view_in_root_grid_ptr =
+      items_container_->AddChildView(std::move(reparented_view_in_root_grid));
+  view_model_.Add(reparented_view_in_root_grid_ptr, view_model_.view_size());
+  view_structure_.Add(reparented_view_in_root_grid_ptr, GetLastTargetIndex());
 
   // Set |activated_folder_item_view_| selected so |target_index| will be
   // computed relative to the open folder.
@@ -2071,7 +2073,7 @@
   const GridIndex target_index =
       GetTargetGridIndexForKeyboardReparent(key_code);
   AnnounceReorder(target_index);
-  ReparentItemForReorder(reparented_view_in_root_grid, target_index);
+  ReparentItemForReorder(reparented_view_in_root_grid_ptr, target_index);
 
   GetViewAtIndex(target_index)->RequestFocus();
   Layout();
@@ -2282,11 +2284,12 @@
       GridIndex target_index = GetIndexOfView(target_view);
       gfx::Rect target_view_bounds = target_view->bounds();
       DeleteItemViewAtIndex(target_model_index, false /* sanitize */);
-      target_view = CreateViewForItemAtIndex(folder_item_index);
-      target_view->SetBoundsRect(target_view_bounds);
-      view_model_.Add(target_view, target_model_index);
+      std::unique_ptr<AppListItemView> new_target_view =
+          CreateViewForItemAtIndex(folder_item_index);
+      new_target_view->SetBoundsRect(target_view_bounds);
+      view_model_.Add(new_target_view.get(), target_model_index);
       if (!folder_delegate_)
-        view_structure_.Add(target_view, target_index);
+        view_structure_.Add(new_target_view.get(), target_index);
 
       // If drag view is in front of the position where it will be moved to, we
       // should skip it.
@@ -2294,8 +2297,8 @@
                                             target_model_index)
                              ? 1
                              : 0;
-      items_container_->AddChildViewAt(target_view,
-                                       target_model_index - offset);
+      target_view = items_container_->AddChildViewAt(
+          std::move(new_target_view), target_model_index - offset);
     } else {
       LOG(ERROR) << "Folder no longer in item_list: " << folder_item_id;
     }
@@ -2437,13 +2440,14 @@
       int target_model_index = view_model_.GetIndexOfView(target_view);
       GridIndex target_index = GetIndexOfView(target_view);
       DeleteItemViewAtIndex(target_model_index, false /* sanitize */);
-      AppListItemView* new_folder_view =
+      std::unique_ptr<AppListItemView> new_folder_view =
           CreateViewForItemAtIndex(new_folder_index);
       new_folder_view->SetBoundsRect(target_rect);
-      view_model_.Add(new_folder_view, target_model_index);
+      view_model_.Add(new_folder_view.get(), target_model_index);
       if (!folder_delegate_)
-        view_structure_.Add(new_folder_view, target_index);
-      items_container_->AddChildViewAt(new_folder_view, target_model_index);
+        view_structure_.Add(new_folder_view.get(), target_index);
+      items_container_->AddChildViewAt(std::move(new_folder_view),
+                                       target_model_index);
     } else {
       LOG(ERROR) << "Folder no longer in item_list: " << new_folder_id;
     }
@@ -2508,12 +2512,14 @@
     NOTREACHED();
     return;
   }
-  AppListItemView* last_item_view = CreateViewForItemAtIndex(last_item_index);
+  std::unique_ptr<AppListItemView> last_item_view =
+      CreateViewForItemAtIndex(last_item_index);
   last_item_view->SetBoundsRect(folder_rect);
-  view_model_.Add(last_item_view, target_model_index);
+  view_model_.Add(last_item_view.get(), target_model_index);
   if (!folder_delegate_)
-    view_structure_.Add(last_item_view, target_index);
-  items_container_->AddChildViewAt(last_item_view, target_model_index);
+    view_structure_.Add(last_item_view.get(), target_index);
+  items_container_->AddChildViewAt(std::move(last_item_view),
+                                   target_model_index);
 }
 
 void AppsGridView::CancelContextMenusOnCurrentPage() {
@@ -2601,10 +2607,10 @@
   EndDrag(true);
 
   if (!item->is_page_break()) {
-    AppListItemView* view = CreateViewForItemAtIndex(index);
+    std::unique_ptr<AppListItemView> view = CreateViewForItemAtIndex(index);
     int model_index = GetTargetModelIndexFromItemIndex(index);
-    view_model_.Add(view, model_index);
-    items_container_->AddChildViewAt(view, model_index);
+    view_model_.Add(view.get(), model_index);
+    items_container_->AddChildViewAt(std::move(view), model_index);
   }
 
   if (!folder_delegate_)
@@ -3363,14 +3369,15 @@
   folder_item->NotifyOfDraggedItem(drag_item);
 
   // Start animation.
-  TopIconAnimationView* animation_view = new TopIconAnimationView(
+  auto animation_view = std::make_unique<TopIconAnimationView>(
       this, drag_item->GetIcon(GetAppListConfig().type()), base::string16(),
       target_bounds, false, true);
-  items_container_->AddChildView(animation_view);
-  animation_view->SetBoundsRect(source_bounds);
-  animation_view->AddObserver(
+  auto* animation_view_ptr =
+      items_container_->AddChildView(std::move(animation_view));
+  animation_view_ptr->SetBoundsRect(source_bounds);
+  animation_view_ptr->AddObserver(
       new FolderDroppingAnimationObserver(model_, folder_item->id()));
-  animation_view->TransformView();
+  animation_view_ptr->TransformView();
 }
 
 void AppsGridView::MaybeCreateFolderDroppingAccessibilityEvent() {
@@ -3491,14 +3498,15 @@
   // GhostImageView that will fade in.
   last_ghost_view_ = current_ghost_view_;
 
-  current_ghost_view_ =
-      new GhostImageView(IsFolderItem(drag_view_->item()) /* is_folder */,
-                         folder_delegate_, reorder_placeholder_.page);
+  auto current_ghost_view = std::make_unique<GhostImageView>(
+      IsFolderItem(drag_view_->item()) /* is_folder */, folder_delegate_,
+      reorder_placeholder_.page);
   gfx::Rect ghost_view_bounds = GetExpectedTileBounds(reorder_placeholder_);
   ghost_view_bounds.Offset(
       CalculateTransitionOffset(reorder_placeholder_.page));
-  current_ghost_view_->Init(drag_view_, ghost_view_bounds);
-  items_container_->AddChildView(current_ghost_view_);
+  current_ghost_view->Init(drag_view_, ghost_view_bounds);
+  current_ghost_view_ =
+      items_container_->AddChildView(std::move(current_ghost_view));
   current_ghost_view_->FadeIn();
 }
 
diff --git a/ash/app_list/views/apps_grid_view.h b/ash/app_list/views/apps_grid_view.h
index 2aab9b1b..aae7895 100644
--- a/ash/app_list/views/apps_grid_view.h
+++ b/ash/app_list/views/apps_grid_view.h
@@ -347,7 +347,7 @@
   // number of apps.
   void UpdatePulsingBlockViews();
 
-  AppListItemView* CreateViewForItemAtIndex(size_t index);
+  std::unique_ptr<AppListItemView> CreateViewForItemAtIndex(size_t index);
 
   // Returns true if the event was handled by the pagination controller.
   bool HandleScroll(const gfx::Vector2d& offset, ui::EventType type);
diff --git a/ash/app_list/views/assistant/assistant_dialog_plate.cc b/ash/app_list/views/assistant/assistant_dialog_plate.cc
index 031d19d..ee89e476 100644
--- a/ash/app_list/views/assistant/assistant_dialog_plate.cc
+++ b/ash/app_list/views/assistant/assistant_dialog_plate.cc
@@ -52,6 +52,8 @@
     base::TimeDelta::FromMilliseconds(333);
 constexpr int kAnimationTranslationDip = 30;
 
+using keyboard::KeyboardUIController;
+
 // Textfield used for inputting text based Assistant queries.
 class AssistantTextfield : public views::Textfield {
  public:
@@ -63,8 +65,18 @@
   const char* GetClassName() const override { return "AssistantTextfield"; }
 };
 
-void HideKeyboard() {
-  keyboard::KeyboardUIController::Get()->HideKeyboardImplicitlyByUser();
+void ShowKeyboardIfEnabled() {
+  auto* keyboard_controller = KeyboardUIController::Get();
+
+  if (keyboard_controller->IsEnabled())
+    keyboard_controller->ShowKeyboard(/*lock=*/false);
+}
+
+void HideKeyboardIfEnabled() {
+  auto* keyboard_controller = KeyboardUIController::Get();
+
+  if (keyboard_controller->IsEnabled())
+    keyboard_controller->HideKeyboardImplicitlyByUser();
 }
 
 }  // namespace
@@ -118,7 +130,7 @@
       // In tablet mode the virtual keyboard should not be sticky, so we hide it
       // when committing a query.
       if (delegate_->IsTabletMode())
-        HideKeyboard();
+        HideKeyboardIfEnabled();
 
       const base::StringPiece16& trimmed_text = base::TrimWhitespace(
           textfield_->GetText(), base::TrimPositions::TRIM_ALL);
@@ -254,7 +266,7 @@
     // plate so that text does not persist across Assistant launches.
     textfield_->SetText(base::string16());
 
-    HideKeyboard();
+    HideKeyboardIfEnabled();
   }
 }
 
@@ -447,9 +459,9 @@
   bool should_show_keyboard = (input_modality() == InputModality::kKeyboard);
 
   if (should_show_keyboard)
-    keyboard::KeyboardUIController::Get()->ShowKeyboard(/*lock=*/false);
+    ShowKeyboardIfEnabled();
   else
-    HideKeyboard();
+    HideKeyboardIfEnabled();
 }
 
 void AssistantDialogPlate::OnAnimationStarted(
diff --git a/ash/app_list/views/assistant/assistant_page_view_unittest.cc b/ash/app_list/views/assistant/assistant_page_view_unittest.cc
index a1eb43a60..4cb65c0 100644
--- a/ash/app_list/views/assistant/assistant_page_view_unittest.cc
+++ b/ash/app_list/views/assistant/assistant_page_view_unittest.cc
@@ -465,6 +465,15 @@
   EXPECT_TRUE(IsKeyboardShowing());
 }
 
+TEST_F(AssistantPageViewTabletModeTest, ShouldNotShowKeyboardWhenItsDisabled) {
+  // This tests the scenario where the keyboard is disabled even in tablet mode,
+  // e.g. when an external keyboard is connected to a tablet.
+  DisableKeyboard();
+  ShowAssistantUiInTextMode();
+
+  EXPECT_FALSE(IsKeyboardShowing());
+}
+
 TEST_F(AssistantPageViewTabletModeTest,
        ShouldFocusTextFieldAfterPressingKeyboardInputToggle) {
   ShowAssistantUiInVoiceMode();
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index a030d5d..8c4addd 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -1577,10 +1577,7 @@
         Night Light turns on automatically at sunset
       </message>
       <message name="IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BODY" desc="The body of the notification shown when Night Light turns on automatically when the auto-night-light feature is enabled.">
-        Night Light makes it easier to look at your screen or read in dim light. Tap to change this.
-      </message>
-      <message name="IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BUTTON_TEXT" desc="The text of the button on the notification shown when Night Light turns on automatically when the auto-night-light feature is enabled.">
-        Turn off for tonight
+        Night Light makes it easier to look at your screen or read in dim light. Tap to change what time Night Light turns on or turn it off completely.
       </message>
 
       <message name="IDS_ASH_IME_MENU_ACCESSIBLE_NAME" desc="The accessible text for opt-in IME menu icon in status tray.">
diff --git a/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BODY.png.sha1 b/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BODY.png.sha1
index 91d5110e..3a1c997c 100644
--- a/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BODY.png.sha1
+++ b/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BODY.png.sha1
@@ -1 +1 @@
-0915488a55a496555dd9edef85ef3c9de0c38888
\ No newline at end of file
+3569ac841c498d5a2251154afda5b990f7775ba7
\ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BUTTON_TEXT.png.sha1 b/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BUTTON_TEXT.png.sha1
deleted file mode 100644
index 91d5110e..0000000
--- a/ash/ash_strings_grd/IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BUTTON_TEXT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0915488a55a496555dd9edef85ef3c9de0c38888
\ No newline at end of file
diff --git a/ash/assistant/test/assistant_ash_test_base.cc b/ash/assistant/test/assistant_ash_test_base.cc
index a083f2c..639695b 100644
--- a/ash/assistant/test/assistant_ash_test_base.cc
+++ b/ash/assistant/test/assistant_ash_test_base.cc
@@ -8,20 +8,14 @@
 #include <utility>
 
 #include "ash/app_list/app_list_controller_impl.h"
-#include "ash/app_list/views/assistant/assistant_main_view.h"
-#include "ash/app_list/views/assistant/assistant_page_view.h"
 #include "ash/assistant/assistant_controller.h"
 #include "ash/assistant/test/test_assistant_web_view_factory.h"
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
 #include "ash/keyboard/ui/test/keyboard_test_util.h"
 #include "ash/public/cpp/app_list/app_list_features.h"
-#include "ash/public/cpp/keyboard/keyboard_switches.h"
 #include "ash/public/cpp/test/assistant_test_api.h"
 #include "ash/shell.h"
-#include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "base/run_loop.h"
-#include "ui/compositor/scoped_animation_duration_scale_mode.h"
-#include "ui/views/controls/textfield/textfield.h"
 
 namespace ash {
 
@@ -72,10 +66,6 @@
   scoped_feature_list_.InitAndEnableFeature(
       app_list_features::kEnableAssistantLauncherUI);
 
-  // Enable virtual keyboard.
-  base::CommandLine::ForCurrentProcess()->AppendSwitch(
-      keyboard::switches::kEnableVirtualKeyboard);
-
   AshTestBase::SetUp();
 
   // Make the display big enough to hold the app list.
@@ -95,14 +85,13 @@
 
   test_api_->DisableAnimations();
 
-  // Wait for virtual keyboard to load.
-  SetTouchKeyboardEnabled(true);
+  EnableKeyboard();
 }
 
 void AssistantAshTestBase::TearDown() {
   windows_.clear();
   widgets_.clear();
-  SetTouchKeyboardEnabled(false);
+  DisableKeyboard();
   AshTestBase::TearDown();
   scoped_feature_list_.Reset();
 }
@@ -263,7 +252,8 @@
 }
 
 bool AssistantAshTestBase::IsKeyboardShowing() const {
-  return keyboard::IsKeyboardShowing();
+  auto* keyboard_controller = keyboard::KeyboardUIController::Get();
+  return keyboard_controller->IsEnabled() && keyboard::IsKeyboardShowing();
 }
 
 AssistantInteractionController* AssistantAshTestBase::interaction_controller() {
diff --git a/ash/assistant/test/assistant_ash_test_base.h b/ash/assistant/test/assistant_ash_test_base.h
index 83fefb8a..83a80fa 100644
--- a/ash/assistant/test/assistant_ash_test_base.h
+++ b/ash/assistant/test/assistant_ash_test_base.h
@@ -141,15 +141,17 @@
   // Return the button to enable text mode.
   views::View* keyboard_input_toggle();
 
-  // Show the on-screen keyboard.
+  // Show/Dismiss the on-screen keyboard.
   void ShowKeyboard();
-
-  // Dismiss the on-screen keyboard.
   void DismissKeyboard();
 
   // Returns if the on-screen keyboard is being displayed.
   bool IsKeyboardShowing() const;
 
+  // Enable/Disable the on-screen keyboard.
+  void EnableKeyboard() { SetVirtualKeyboardEnabled(true); }
+  void DisableKeyboard() { SetVirtualKeyboardEnabled(false); }
+
  private:
   AssistantInteractionController* interaction_controller();
   TestAssistantService* assistant_service();
diff --git a/ash/home_screen/drag_window_from_shelf_controller.cc b/ash/home_screen/drag_window_from_shelf_controller.cc
index ab728d1..4c97041a 100644
--- a/ash/home_screen/drag_window_from_shelf_controller.cc
+++ b/ash/home_screen/drag_window_from_shelf_controller.cc
@@ -9,6 +9,7 @@
 #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"
@@ -259,7 +260,7 @@
       window_drag_result = ShelfWindowDragResult::kGoToSplitviewMode;
     // For window that may drop in overview or snap in split screen, restore its
     // original backdrop mode.
-    window_->SetProperty(kBackdropWindowMode, original_backdrop_mode_);
+    WindowBackdrop::Get(window_)->RestoreBackdrop();
   }
 
   OnDragEnded(location_in_screen, drop_window_in_overview, snap_position);
@@ -273,7 +274,7 @@
   drag_started_ = false;
   // Reset the window's transform to identity transform.
   window_->SetTransform(gfx::Transform());
-  window_->SetProperty(kBackdropWindowMode, original_backdrop_mode_);
+  WindowBackdrop::Get(window_)->RestoreBackdrop();
 
   // End overview if it was opened during dragging.
   OverviewController* overview_controller = Shell::Get()->overview_controller();
@@ -319,8 +320,7 @@
       initial_location_in_screen_, HTCLIENT, ::wm::WINDOW_MOVE_SOURCE_TOUCH);
 
   // Disable the backdrop on the dragged window during dragging.
-  original_backdrop_mode_ = window_->GetProperty(kBackdropWindowMode);
-  window_->SetProperty(kBackdropWindowMode, BackdropWindowMode::kDisabled);
+  WindowBackdrop::Get(window_)->DisableBackdrop();
 
   // Hide all visible windows behind the dragged window during dragging.
   windows_hider_ = std::make_unique<WindowsHider>(window_);
@@ -632,8 +632,6 @@
     // 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,
@@ -661,8 +659,6 @@
   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 abda8b7..30d3e43 100644
--- a/ash/home_screen/drag_window_from_shelf_controller.h
+++ b/ash/home_screen/drag_window_from_shelf_controller.h
@@ -186,7 +186,6 @@
   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 4d29cec..36422ef1 100644
--- a/ash/home_screen/drag_window_from_shelf_controller_unittest.cc
+++ b/ash/home_screen/drag_window_from_shelf_controller_unittest.cc
@@ -9,6 +9,7 @@
 #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"
@@ -539,8 +540,8 @@
       Shelf::ForWindow(Shell::GetPrimaryRootWindow())->GetIdealBounds();
   auto window = CreateTestWindow();
   EXPECT_TRUE(window->layer()->GetTargetTransform().IsIdentity());
-  EXPECT_NE(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window.get());
+  EXPECT_NE(window_backdrop->mode(), WindowBackdrop::BackdropMode::kDisabled);
 
   StartDrag(window.get(), shelf_bounds.left_center(), HotseatState::kExtended);
   Drag(gfx::Point(0, 200), 0.f, 10.f);
@@ -548,8 +549,8 @@
           base::make_optional(
               -DragWindowFromShelfController::kVelocityToHomeScreenThreshold));
   EXPECT_FALSE(window->layer()->GetTargetTransform().IsIdentity());
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_NE(window_backdrop->mode(), WindowBackdrop::BackdropMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
 }
 
 // Test that if drag is cancelled, overview should be dismissed and other
@@ -787,14 +788,13 @@
   const gfx::Rect shelf_bounds =
       Shelf::ForWindow(Shell::GetPrimaryRootWindow())->GetIdealBounds();
   auto window = CreateTestWindow();
-  BackdropWindowMode original_backdrop_mode =
-      window->GetProperty(kBackdropWindowMode);
-  EXPECT_NE(original_backdrop_mode, BackdropWindowMode::kDisabled);
+  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window.get());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
 
   // For window that ends in overview:
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   DragWindowFromShelfControllerTestApi().WaitUntilOverviewIsShown(
       window_drag_controller());
@@ -803,13 +803,14 @@
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_TRUE(overview_controller->overview_session()->IsWindowInOverview(
       window.get()));
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_FALSE(window_backdrop->temporarily_disabled());
 
   // For window that ends in homescreen:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   DragWindowFromShelfControllerTestApi().WaitUntilOverviewIsShown(
       window_drag_controller());
@@ -817,38 +818,42 @@
           base::make_optional(
               -DragWindowFromShelfController::kVelocityToHomeScreenThreshold));
   EXPECT_TRUE(WindowState::Get(window.get())->IsMinimized());
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
+  EXPECT_FALSE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
 
   // For window that restores to its original bounds:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   EndDrag(shelf_bounds.CenterPoint(), base::nullopt);
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
+  EXPECT_FALSE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
 
   // 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_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
   EndDrag(gfx::Point(0, 200), base::nullopt);
   EXPECT_TRUE(WindowState::Get(window.get())->IsMinimized());
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
+  EXPECT_FALSE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
 
   // For window that ends in splitscreen:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
   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->GetProperty(kBackdropWindowMode), original_backdrop_mode);
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_FALSE(window_backdrop->temporarily_disabled());
 }
 
 TEST_F(DragWindowFromShelfControllerTest,
diff --git a/ash/home_screen/home_screen_controller.cc b/ash/home_screen/home_screen_controller.cc
index b4c961e..0d35cab 100644
--- a/ash/home_screen/home_screen_controller.cc
+++ b/ash/home_screen/home_screen_controller.cc
@@ -206,19 +206,11 @@
                        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 2bf26544f..291f3d1 100644
--- a/ash/home_screen/window_scale_animation.cc
+++ b/ash/home_screen/window_scale_animation.cc
@@ -5,6 +5,7 @@
 #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"
@@ -12,9 +13,6 @@
 #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"
@@ -41,20 +39,14 @@
 
 }  // namespace
 
-WindowScaleAnimation::WindowScaleAnimation(
-    aura::Window* window,
-    WindowScaleType scale_type,
-    base::Optional<BackdropWindowMode> original_backdrop_mode,
-    base::OnceClosure opt_callback)
+WindowScaleAnimation::WindowScaleAnimation(aura::Window* window,
+                                           WindowScaleType scale_type,
+                                           base::OnceClosure opt_callback)
     : window_(window),
-      original_backdrop_mode_(original_backdrop_mode),
       opt_callback_(std::move(opt_callback)),
-      scale_type_(scale_type),
-      scoped_backdrop_update_pause_(GetWorkspaceControllerForContext(window)
-                                        ->layout_manager()
-                                        ->backdrop_controller()
-                                        ->PauseUpdates()) {
+      scale_type_(scale_type) {
   window_observer_.Add(window);
+  WindowBackdrop::Get(window)->DisableBackdrop();
 
   ui::ScopedLayerAnimationSettings settings(window_->layer()->GetAnimator());
   settings.SetTransitionDuration(kWindowScaleUpOrDownTime);
@@ -86,8 +78,7 @@
     window_->layer()->SetTransform(gfx::Transform());
     window_->layer()->SetOpacity(1.f);
   }
-  if (original_backdrop_mode_.has_value())
-    window_->SetProperty(kBackdropWindowMode, *original_backdrop_mode_);
+  WindowBackdrop::Get(window_)->RestoreBackdrop();
 
   delete this;
 }
diff --git a/ash/home_screen/window_scale_animation.h b/ash/home_screen/window_scale_animation.h
index f001d172..24b9c9c 100644
--- a/ash/home_screen/window_scale_animation.h
+++ b/ash/home_screen/window_scale_animation.h
@@ -36,7 +36,6 @@
   WindowScaleAnimation(
       aura::Window* window,
       WindowScaleType scale_type,
-      base::Optional<BackdropWindowMode> original_backdrop_mode,
       base::OnceClosure opt_callback);
   ~WindowScaleAnimation() override;
 
@@ -52,15 +51,10 @@
   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/keyboard/virtual_keyboard_controller.cc b/ash/keyboard/virtual_keyboard_controller.cc
index bef8c7bb..c94fd93c 100644
--- a/ash/keyboard/virtual_keyboard_controller.cc
+++ b/ash/keyboard/virtual_keyboard_controller.cc
@@ -10,7 +10,6 @@
 #include "ash/keyboard/keyboard_controller_impl.h"
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
 #include "ash/keyboard/ui/keyboard_util.h"
-#include "ash/public/cpp/keyboard/keyboard_switches.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
@@ -18,7 +17,6 @@
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "base/bind.h"
 #include "base/bind_helpers.h"
-#include "base/command_line.h"
 #include "base/strings/string_util.h"
 #include "ui/base/emoji/emoji_panel_helper.h"
 #include "ui/display/display.h"
@@ -30,12 +28,6 @@
 namespace ash {
 namespace {
 
-// Checks if virtual keyboard is force-enabled by enable-virtual-keyboard flag.
-bool IsVirtualKeyboardEnabled() {
-  return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      keyboard::switches::kEnableVirtualKeyboard);
-}
-
 void ResetVirtualKeyboard() {
   keyboard::SetKeyboardEnabledFromShelf(false);
 
@@ -136,13 +128,6 @@
 }
 
 void VirtualKeyboardController::UpdateKeyboardEnabled() {
-  if (IsVirtualKeyboardEnabled()) {
-    keyboard::SetTouchKeyboardEnabled(
-        Shell::Get()
-            ->tablet_mode_controller()
-            ->AreInternalInputDeviceEventsBlocked());
-    return;
-  }
   bool ignore_internal_keyboard = Shell::Get()
                                       ->tablet_mode_controller()
                                       ->AreInternalInputDeviceEventsBlocked();
diff --git a/ash/keyboard/virtual_keyboard_unittest.cc b/ash/keyboard/virtual_keyboard_unittest.cc
index a76b8ac..2e58070 100644
--- a/ash/keyboard/virtual_keyboard_unittest.cc
+++ b/ash/keyboard/virtual_keyboard_unittest.cc
@@ -9,7 +9,6 @@
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "base/bind_helpers.h"
-#include "base/command_line.h"
 #include "ui/aura/test/test_window_delegate.h"
 #include "ui/events/test/event_generator.h"
 
@@ -21,14 +20,12 @@
   ~VirtualKeyboardTest() override = default;
 
   void SetUp() override {
-    base::CommandLine::ForCurrentProcess()->AppendSwitch(
-        keyboard::switches::kEnableVirtualKeyboard);
     AshTestBase::SetUp();
-    keyboard::SetTouchKeyboardEnabled(true);
+    SetVirtualKeyboardEnabled(true);
   }
 
   void TearDown() override {
-    keyboard::SetTouchKeyboardEnabled(false);
+    SetVirtualKeyboardEnabled(false);
     AshTestBase::TearDown();
   }
 
diff --git a/ash/login/ui/arrow_button_view.cc b/ash/login/ui/arrow_button_view.cc
index 0c84c53..13cdd962 100644
--- a/ash/login/ui/arrow_button_view.cc
+++ b/ash/login/ui/arrow_button_view.cc
@@ -5,9 +5,16 @@
 #include "ash/login/ui/arrow_button_view.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
+#include "base/time/time.h"
+#include "cc/paint/paint_flags.h"
 #include "ui/accessibility/ax_node_data.h"
+#include "ui/gfx/animation/multi_animation.h"
+#include "ui/gfx/animation/tween.h"
 #include "ui/gfx/canvas.h"
+#include "ui/gfx/color_palette.h"
+#include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/paint_vector_icon.h"
+#include "ui/gfx/skia_util.h"
 
 namespace ash {
 namespace {
@@ -16,6 +23,28 @@
 constexpr int kArrowIconSizeDp = 20;
 // An alpha value for disabled button.
 constexpr SkAlpha kButtonDisabledAlpha = 0x80;
+// How long does a single step of the loading animation take - i.e., the time it
+// takes for the arc to grow from a point to a full circle.
+constexpr base::TimeDelta kLoadingAnimationStepDuration =
+    base::TimeDelta::FromSeconds(2);
+
+void PaintLoadingArc(gfx::Canvas* canvas,
+                     const gfx::Rect& bounds,
+                     double loading_fraction) {
+  gfx::Rect oval = bounds;
+  // Inset to make sure the whole arc is inside the visible rect.
+  oval.Inset(/*horizontal=*/1, /*vertical=*/1);
+
+  SkPath path;
+  path.arcTo(RectToSkRect(oval), /*startAngle=*/-90,
+             /*sweepAngle=*/360 * loading_fraction, /*forceMoveTo=*/true);
+
+  cc::PaintFlags flags;
+  flags.setColor(gfx::kGoogleGrey100);
+  flags.setStyle(cc::PaintFlags::kStroke_Style);
+  flags.setAntiAlias(true);
+  canvas->DrawPath(path, flags);
+}
 
 }  // namespace
 
@@ -51,7 +80,12 @@
 
   // Draw arrow icon.
   views::ImageButton::PaintButtonContents(canvas);
+
+  // Draw the arc of the loading animation.
+  if (loading_animation_)
+    PaintLoadingArc(canvas, rect, loading_animation_->GetCurrentValue());
 }
+
 void ArrowButtonView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   LoginButton::GetAccessibleNodeData(node_data);
   // TODO(tbarzic): Fix this - https://crbug.com/961930.
@@ -64,4 +98,40 @@
   SchedulePaint();
 }
 
+void ArrowButtonView::EnableLoadingAnimation(bool enabled) {
+  if (!enabled) {
+    if (!loading_animation_)
+      return;
+    loading_animation_.reset();
+    SchedulePaint();
+    return;
+  }
+
+  if (loading_animation_)
+    return;
+
+  // Use MultiAnimation in order to have a continuously running analog of
+  // LinearAnimation.
+  loading_animation_ = std::make_unique<gfx::MultiAnimation>(
+      gfx::MultiAnimation::Parts{
+          gfx::MultiAnimation::Part(kLoadingAnimationStepDuration,
+                                    gfx::Tween::LINEAR),
+      },
+      gfx::MultiAnimation::kDefaultTimerInterval);
+  loading_animation_->set_delegate(&loading_animation_delegate_);
+  loading_animation_->Start();
+}
+
+ArrowButtonView::LoadingAnimationDelegate::LoadingAnimationDelegate(
+    ArrowButtonView* owner)
+    : owner_(owner) {}
+
+ArrowButtonView::LoadingAnimationDelegate::~LoadingAnimationDelegate() =
+    default;
+
+void ArrowButtonView::LoadingAnimationDelegate::AnimationProgressed(
+    const gfx::Animation* /*animation*/) {
+  owner_->SchedulePaint();
+}
+
 }  // namespace ash
diff --git a/ash/login/ui/arrow_button_view.h b/ash/login/ui/arrow_button_view.h
index ff61ccc..fd497be 100644
--- a/ash/login/ui/arrow_button_view.h
+++ b/ash/login/ui/arrow_button_view.h
@@ -5,9 +5,16 @@
 #ifndef ASH_LOGIN_UI_ARROW_BUTTON_VIEW_H_
 #define ASH_LOGIN_UI_ARROW_BUTTON_VIEW_H_
 
+#include <memory>
+
 #include "ash/login/ui/login_button.h"
+#include "ui/gfx/animation/animation_delegate.h"
 #include "ui/views/controls/image_view.h"
 
+namespace gfx {
+class MultiAnimation;
+}
+
 namespace ash {
 
 // A round button with arrow icon in the middle.
@@ -25,9 +32,33 @@
   // Set background color of the button.
   void SetBackgroundColor(SkColor color);
 
+  // Allows to control the loading animation (disabled by default). The
+  // animation is an arc that gradually increases from a point to a full circle;
+  // the animation is looped.
+  void EnableLoadingAnimation(bool enabled);
+
  private:
+  // Helper class that translates events from the loading animation events into
+  // scheduling painting.
+  class LoadingAnimationDelegate : public gfx::AnimationDelegate {
+   public:
+    explicit LoadingAnimationDelegate(ArrowButtonView* owner);
+    LoadingAnimationDelegate(const LoadingAnimationDelegate&) = delete;
+    LoadingAnimationDelegate& operator=(const LoadingAnimationDelegate&) =
+        delete;
+    ~LoadingAnimationDelegate() override;
+
+    // views::AnimationDelegateViews:
+    void AnimationProgressed(const gfx::Animation* animation) override;
+
+   private:
+    ArrowButtonView* const owner_;
+  };
+
   int size_;
   SkColor background_color_;
+  LoadingAnimationDelegate loading_animation_delegate_{this};
+  std::unique_ptr<gfx::MultiAnimation> loading_animation_;
 
   DISALLOW_COPY_AND_ASSIGN(ArrowButtonView);
 };
diff --git a/ash/login/ui/login_auth_user_view.cc b/ash/login/ui/login_auth_user_view.cc
index a78f46c..c9085539 100644
--- a/ash/login/ui/login_auth_user_view.cc
+++ b/ash/login/ui/login_auth_user_view.cc
@@ -561,7 +561,7 @@
 
     arrow_to_icon_spacer_ = AddChildView(std::make_unique<NonAccessibleView>());
     arrow_to_icon_spacer_->SetPreferredSize(
-        gfx::Size(0, GetArrowToIconSpacerHeight()));
+        gfx::Size(0, kSpacingBetweenChallengeResponseArrowAndIconDp));
 
     icon_ = AddChildView(std::make_unique<views::ImageView>());
     icon_->SetImage(GetImageForIcon());
@@ -587,8 +587,9 @@
   // views::ButtonListener:
   void ButtonPressed(views::Button* sender, const ui::Event& event) override {
     if (sender == arrow_button_) {
-      DCHECK_NE(state_, State::kAuthenticating);
-      on_start_tap_.Run();
+      // Ignore further clicks while handling the previous one.
+      if (state_ != State::kAuthenticating)
+        on_start_tap_.Run();
     } else {
       NOTREACHED();
     }
@@ -607,9 +608,7 @@
                               base::Unretained(this), State::kInitial));
     }
 
-    arrow_button_->SetVisible(state_ != State::kAuthenticating);
-    arrow_to_icon_spacer_->SetPreferredSize(
-        gfx::Size(0, GetArrowToIconSpacerHeight()));
+    arrow_button_->EnableLoadingAnimation(state == State::kAuthenticating);
     icon_->SetImage(GetImageForIcon());
     label_->SetText(GetTextForLabel());
 
@@ -619,15 +618,6 @@
   void RequestFocus() override { arrow_button_->RequestFocus(); }
 
  private:
-  int GetArrowToIconSpacerHeight() const {
-    int spacer_height = kSpacingBetweenChallengeResponseArrowAndIconDp;
-    // During authentication, the arrow button is hidden, so the spacer should
-    // consume this space to avoid moving controls below it.
-    if (state_ == State::kAuthenticating)
-      spacer_height += kChallengeResponseArrowSizeDp;
-    return spacer_height;
-  }
-
   gfx::ImageSkia GetImageForIcon() const {
     switch (state_) {
       case State::kInitial:
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn
index cef9d11..4ede1178 100644
--- a/ash/public/cpp/BUILD.gn
+++ b/ash/public/cpp/BUILD.gn
@@ -223,6 +223,8 @@
     "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/ash_constants.h b/ash/public/cpp/ash_constants.h
index 5d84972..a1c377f 100644
--- a/ash/public/cpp/ash_constants.h
+++ b/ash/public/cpp/ash_constants.h
@@ -32,8 +32,7 @@
 // Background color used for the Chrome OS boot splash screen.
 constexpr SkColor kChromeOsBootColor = SkColorSetRGB(0xfe, 0xfe, 0xfe);
 
-// The border color of keyboard focus for launcher items and system tray.
-constexpr SkColor kFocusBorderColor = SkColorSetA(gfx::kGoogleBlue500, 0x99);
+// The border thickness of keyboard focus for launcher items and system tray.
 constexpr int kFocusBorderThickness = 2;
 
 constexpr int kDefaultLargeCursorSize = 64;
diff --git a/ash/public/cpp/window_backdrop.cc b/ash/public/cpp/window_backdrop.cc
new file mode 100644
index 0000000..d8ec3fa2
--- /dev/null
+++ b/ash/public/cpp/window_backdrop.cc
@@ -0,0 +1,88 @@
+// 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
new file mode 100644
index 0000000..1157f29
--- /dev/null
+++ b/ash/public/cpp/window_backdrop.h
@@ -0,0 +1,95 @@
+// 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 d4117a6..fb7959d 100644
--- a/ash/public/cpp/window_properties.cc
+++ b/ash/public/cpp/window_properties.cc
@@ -7,6 +7,7 @@
 #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"
@@ -14,16 +15,13 @@
 
 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::BackdropWindowMode)
+DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT, ash::WindowBackdrop*)
 
 namespace ash {
 
 DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kAppIDKey, nullptr)
 DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kArcPackageNameKey, nullptr)
-DEFINE_UI_CLASS_PROPERTY_KEY(BackdropWindowMode,
-                             kBackdropWindowMode,
-                             BackdropWindowMode::kAutoOpaque)
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WindowBackdrop, kWindowBackdropKey, nullptr)
 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 f038f21..7efb801 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,13 +27,7 @@
 enum class WindowPinType;
 enum class WindowStateType;
 
-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.
-};
+class WindowBackdrop;
 
 // Shell-specific window property keys for use by ash and its clients.
 
@@ -48,10 +42,11 @@
 ASH_PUBLIC_EXPORT extern const aura::WindowProperty<std::string*>* const
     kArcPackageNameKey;
 
-// 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;
+// 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;
 
 // 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/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc
index 0c381f3..fe13a20 100644
--- a/ash/root_window_controller_unittest.cc
+++ b/ash/root_window_controller_unittest.cc
@@ -23,7 +23,6 @@
 #include "ash/wm/window_properties.h"
 #include "ash/wm/window_state.h"
 #include "ash/wm/window_util.h"
-#include "base/command_line.h"
 #include "base/run_loop.h"
 #include "ui/aura/client/focus_change_observer.h"
 #include "ui/aura/client/focus_client.h"
@@ -719,14 +718,12 @@
   ~VirtualKeyboardRootWindowControllerTest() override = default;
 
   void SetUp() override {
-    base::CommandLine::ForCurrentProcess()->AppendSwitch(
-        keyboard::switches::kEnableVirtualKeyboard);
     AshTestBase::SetUp();
-    SetTouchKeyboardEnabled(true);
+    SetVirtualKeyboardEnabled(true);
   }
 
   void TearDown() override {
-    SetTouchKeyboardEnabled(false);
+    SetVirtualKeyboardEnabled(false);
     AshTestBase::TearDown();
   }
 
diff --git a/ash/shelf/hotseat_widget.cc b/ash/shelf/hotseat_widget.cc
index 9e86d52..c368fc2 100644
--- a/ash/shelf/hotseat_widget.cc
+++ b/ash/shelf/hotseat_widget.cc
@@ -126,6 +126,9 @@
   // The WallpaperController, responsible for providing proper colors.
   WallpaperControllerImpl* wallpaper_controller_;
 
+  // The most recent color that the |opaque_background_| has been animated to.
+  SkColor target_color_;
+
   DISALLOW_COPY_AND_ASSIGN(DelegateView);
 };
 
@@ -167,7 +170,20 @@
   DCHECK(HotseatWidget::ShouldShowHotseatBackground());
 
   opaque_background_.SetVisible(true);
-  opaque_background_.SetColor(ShelfConfig::Get()->GetDefaultShelfColor());
+
+  if (ShelfConfig::Get()->GetDefaultShelfColor() != target_color_) {
+    target_color_ = ShelfConfig::Get()->GetDefaultShelfColor();
+
+    ui::ScopedLayerAnimationSettings animation_setter(
+        opaque_background_.GetAnimator());
+    animation_setter.SetTransitionDuration(
+        ShelfConfig::Get()->shelf_animation_duration());
+    animation_setter.SetTweenType(gfx::Tween::EASE_OUT);
+    animation_setter.SetPreemptionStrategy(
+        ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
+
+    opaque_background_.SetColor(target_color_);
+  }
 
   const int radius = ShelfConfig::Get()->hotseat_size() / 2;
   gfx::RoundedCornersF rounded_corners = {radius, radius, radius, radius};
diff --git a/ash/shelf/shelf_app_button.cc b/ash/shelf/shelf_app_button.cc
index e258520..7cb36981 100644
--- a/ash/shelf/shelf_app_button.cc
+++ b/ash/shelf/shelf_app_button.cc
@@ -515,6 +515,13 @@
   return icon_width == ShelfConfig::Get()->button_icon_size();
 }
 
+bool ShelfAppButton::FireDragTimerForTest() {
+  if (!drag_timer_.IsRunning())
+    return false;
+  drag_timer_.FireNow();
+  return true;
+}
+
 void ShelfAppButton::FireRippleActivationTimerForTest() {
   ripple_activation_timer_.FireNow();
 }
diff --git a/ash/shelf/shelf_app_button.h b/ash/shelf/shelf_app_button.h
index 573d223..3aef6389 100644
--- a/ash/shelf/shelf_app_button.h
+++ b/ash/shelf/shelf_app_button.h
@@ -92,6 +92,7 @@
   // Returns whether the icon size is up to date.
   bool IsIconSizeCurrent();
 
+  bool FireDragTimerForTest();
   void FireRippleActivationTimerForTest();
 
  protected:
diff --git a/ash/shelf/shelf_config.cc b/ash/shelf/shelf_config.cc
index 9c6b9ed..d5350f9 100644
--- a/ash/shelf/shelf_config.cc
+++ b/ash/shelf/shelf_config.cc
@@ -304,10 +304,20 @@
         AshColorProvider::AshColorMode::kDark);
   }
 
+  AshColorProvider::BaseLayerType layer_type;
+  if (!chromeos::switches::ShouldShowShelfHotseat()) {
+    layer_type = IsTabletMode()
+                     ? AshColorProvider::BaseLayerType::kTransparent60
+                     : AshColorProvider::BaseLayerType::kTransparent74;
+  } else if (IsTabletMode()) {
+    layer_type = is_in_app() ? AshColorProvider::BaseLayerType::kTransparent90
+                             : AshColorProvider::BaseLayerType::kTransparent60;
+  } else {
+    layer_type = AshColorProvider::BaseLayerType::kTransparent74;
+  }
+
   SkColor final_color = AshColorProvider::Get()->GetBaseLayerColor(
-      IsTabletMode() ? AshColorProvider::BaseLayerType::kTransparent60
-                     : AshColorProvider::BaseLayerType::kTransparent74,
-      AshColorProvider::AshColorMode::kDark);
+      layer_type, AshColorProvider::AshColorMode::kDark);
 
   return GetThemedColorFromWallpaper(final_color);
 }
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 6f87938..84551c0 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -427,6 +427,11 @@
 }
 
 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.
@@ -914,6 +919,13 @@
   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 b526e89..c918ec5bb 100644
--- a/ash/shelf/shelf_layout_manager.h
+++ b/ash/shelf/shelf_layout_manager.h
@@ -187,6 +187,7 @@
   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/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc
index 85c2a20..3de9a93 100644
--- a/ash/shelf/shelf_view.cc
+++ b/ash/shelf/shelf_view.cc
@@ -872,11 +872,13 @@
   }
 
   item_awaiting_response_ = item->id;
+  context_menu_callback_.Reset(base::BindOnce(
+      &ShelfView::ShowShelfContextMenu, weak_factory_.GetWeakPtr(), item->id,
+      point, source, source_type));
+
   const int64_t display_id = GetDisplayIdForView(this);
   model_->GetShelfItemDelegate(item->id)->GetContextMenu(
-      display_id, base::BindOnce(&ShelfView::ShowShelfContextMenu,
-                                 weak_factory_.GetWeakPtr(), item->id, point,
-                                 source, source_type));
+      display_id, context_menu_callback_.callback());
 }
 
 void ShelfView::OnTabletModeStarted() {
@@ -1575,6 +1577,14 @@
     return;
   }
 
+  // Cancel in-flight request for app item context menu model (made when app
+  // context menu is requested), to prevent the pending callback from showing
+  // a context menu just after drag starts.
+  if (!context_menu_callback_.IsCancelled()) {
+    context_menu_callback_.Cancel();
+    item_awaiting_response_ = ShelfID();
+  }
+
   // Move the view to the front so that it appears on top of other views.
   ReorderChildView(drag_view_, -1);
   bounds_animator_->StopAnimatingView(drag_view_);
@@ -2438,9 +2448,12 @@
   if (action == SHELF_ACTION_APP_LIST_DISMISSED) {
     ink_drop->SnapToActivated();
     ink_drop->AnimateToState(views::InkDropState::HIDDEN);
-  } else if (action != SHELF_ACTION_APP_LIST_SHOWN) {
-    if (action != SHELF_ACTION_NEW_WINDOW_CREATED && menu_items.size() > 1) {
-      // Show the app menu with 2 or more items, if no window was created.
+  } else if (action != SHELF_ACTION_APP_LIST_SHOWN && !dragging()) {
+    if (action != SHELF_ACTION_NEW_WINDOW_CREATED && menu_items.size() > 1 &&
+        !dragging()) {
+      // Show the app menu with 2 or more items, if no window was created. The
+      // menu is not shown in case item drag started while the selection request
+      // was in progress.
       ink_drop->AnimateToState(views::InkDropState::ACTIVATED);
       context_menu_id_ = item.id;
       ShowMenu(std::make_unique<ShelfApplicationMenuModel>(
diff --git a/ash/shelf/shelf_view.h b/ash/shelf/shelf_view.h
index 6b8d082..dfec4ae 100644
--- a/ash/shelf/shelf_view.h
+++ b/ash/shelf/shelf_view.h
@@ -643,6 +643,12 @@
   // Used to avoid multiple concurrent menu requests. The value is null if none.
   ShelfID item_awaiting_response_;
 
+  // The callback for in-flight async request for a context menu.
+  // Used to cancel the request if context menu should be
+  // cancelled, for example if shelf item drag starts.
+  base::CancelableOnceCallback<void(std::unique_ptr<ui::SimpleMenuModel> model)>
+      context_menu_callback_;
+
   // The timestamp of the event which closed the last menu - or 0.
   base::TimeTicks closing_event_time_;
 
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 3acecf46..8504f20a 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -149,6 +149,37 @@
   DISALLOW_COPY_AND_ASSIGN(TestShelfObserver);
 };
 
+// A ShelfItemDelegate that tracks the last context menu request, and exposes a
+// method tests can use to finish the tracked request.
+class AsyncContextMenuShelfItemDelegate : public ShelfItemDelegate {
+ public:
+  AsyncContextMenuShelfItemDelegate() : ShelfItemDelegate(ShelfID()) {}
+  ~AsyncContextMenuShelfItemDelegate() override = default;
+
+  bool RunPendingContextMenuCallback(
+      std::unique_ptr<ui::SimpleMenuModel> model) {
+    if (pending_context_menu_callback_.is_null())
+      return false;
+    std::move(pending_context_menu_callback_).Run(std::move(model));
+    return true;
+  }
+  bool HasPendingContextMenuCallback() const {
+    return !pending_context_menu_callback_.is_null();
+  }
+
+ private:
+  // ShelfItemDelegate:
+  void GetContextMenu(int64_t display_id,
+                      GetContextMenuCallback callback) override {
+    ASSERT_TRUE(pending_context_menu_callback_.is_null());
+    pending_context_menu_callback_ = std::move(callback);
+  }
+  void ExecuteCommand(bool, int64_t, int32_t, int64_t) override {}
+  void Close() override {}
+
+  GetContextMenuCallback pending_context_menu_callback_;
+};
+
 }  // namespace
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -2388,6 +2419,128 @@
   EXPECT_FALSE(shelf_view_->drag_view());
 }
 
+// Tests that context menu show is cancelled if item drag starts during context
+// menu show (while constructing the item menu model).
+TEST_F(ShelfViewTest, InProgressItemDragPreventsContextMenuShow) {
+  const ShelfID app_id = AddAppShortcut();
+  auto item_delegate_owned =
+      std::make_unique<AsyncContextMenuShelfItemDelegate>();
+  AsyncContextMenuShelfItemDelegate* item_delegate = item_delegate_owned.get();
+  model_->SetShelfItemDelegate(app_id, std::move(item_delegate_owned));
+
+  ShelfAppButton* button = GetButtonByID(app_id);
+  ASSERT_TRUE(button);
+
+  const gfx::Point location = button->GetBoundsInScreen().CenterPoint();
+  ui::test::EventGenerator* generator = GetEventGenerator();
+  generator->set_current_screen_location(location);
+  generator->PressTouch();
+
+  // Generate long press, which should start context menu request.
+  ui::GestureEventDetails event_details(ui::ET_GESTURE_LONG_PRESS);
+  ui::GestureEvent long_press(location.x(), location.y(), 0,
+                              ui::EventTimeForNow(), event_details);
+  generator->Dispatch(&long_press);
+
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_FALSE(shelf_view_->drag_view());
+  EXPECT_TRUE(item_delegate->HasPendingContextMenuCallback());
+
+  // Drag the app icon while context menu callback is pending..
+  ASSERT_TRUE(button->FireDragTimerForTest());
+  generator->MoveTouchBy(0, -10);
+
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_TRUE(shelf_view_->drag_view());
+
+  // Return the context menu model.
+  auto menu_model = std::make_unique<ui::SimpleMenuModel>(nullptr);
+  menu_model->AddItem(203, base::ASCIIToUTF16("item"));
+  ASSERT_TRUE(
+      item_delegate->RunPendingContextMenuCallback(std::move(menu_model)));
+
+  // The context menu show is expected to be canceled by the item drag.
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_TRUE(shelf_view_->drag_view());
+
+  // Drag state should be cleared when the drag ends.
+  generator->ReleaseTouch();
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_FALSE(shelf_view_->drag_view());
+
+  // Another long press starts context menu request.
+  generator->set_current_screen_location(location);
+  generator->PressTouch();
+  ui::GestureEventDetails second_press_event_details(ui::ET_GESTURE_LONG_PRESS);
+  ui::GestureEvent second_long_press(location.x(), location.y(), 0,
+                                     ui::EventTimeForNow(),
+                                     second_press_event_details);
+  generator->Dispatch(&second_long_press);
+  EXPECT_TRUE(item_delegate->HasPendingContextMenuCallback());
+}
+
+// Tests that context menu show is cancelled if item drag starts and ends during
+// context menu show (while constructing the item menu model).
+TEST_F(ShelfViewTest, CompletedItemDragPreventsContextMenuShow) {
+  const ShelfID app_id = AddAppShortcut();
+  auto item_delegate_owned =
+      std::make_unique<AsyncContextMenuShelfItemDelegate>();
+  AsyncContextMenuShelfItemDelegate* item_delegate = item_delegate_owned.get();
+  model_->SetShelfItemDelegate(app_id, std::move(item_delegate_owned));
+
+  ShelfAppButton* button = GetButtonByID(app_id);
+  ASSERT_TRUE(button);
+
+  const gfx::Point location = button->GetBoundsInScreen().CenterPoint();
+  ui::test::EventGenerator* generator = GetEventGenerator();
+  generator->set_current_screen_location(location);
+  generator->PressTouch();
+
+  // Generate long press, which should start context menu request.
+  ui::GestureEventDetails event_details(ui::ET_GESTURE_LONG_PRESS);
+  ui::GestureEvent long_press(location.x(), location.y(), 0,
+                              ui::EventTimeForNow(), event_details);
+  generator->Dispatch(&long_press);
+
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_FALSE(shelf_view_->drag_view());
+  EXPECT_TRUE(item_delegate->HasPendingContextMenuCallback());
+
+  // Drag the app icon while context menu callback is pending.
+  ASSERT_TRUE(button->FireDragTimerForTest());
+  generator->MoveTouchBy(0, -10);
+
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_TRUE(shelf_view_->drag_view());
+
+  // Drag state should be cleared when the drag ends.
+  generator->ReleaseTouch();
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_FALSE(shelf_view_->drag_view());
+
+  // Return the context menu model.
+  auto menu_model = std::make_unique<ui::SimpleMenuModel>(nullptr);
+  menu_model->AddItem(203, base::ASCIIToUTF16("item"));
+  ASSERT_TRUE(
+      item_delegate->RunPendingContextMenuCallback(std::move(menu_model)));
+
+  // The context menu show is expected to be canceled by the item drag, so it
+  // should not be shown even though there is no in-progress drag when the
+  // context menu model is received.
+  EXPECT_FALSE(shelf_view_->IsShowingMenu());
+  EXPECT_FALSE(shelf_view_->drag_view());
+
+  // Another long press starts context menu request.
+  generator->set_current_screen_location(location);
+  generator->PressTouch();
+  ui::GestureEventDetails second_press_event_details(ui::ET_GESTURE_LONG_PRESS);
+  ui::GestureEvent second_long_press(location.x(), location.y(), 0,
+                                     ui::EventTimeForNow(),
+                                     second_press_event_details);
+  generator->Dispatch(&second_long_press);
+  EXPECT_TRUE(item_delegate->HasPendingContextMenuCallback());
+}
+
 // Tests that shelf items in always shown shelf can be dragged through gesture
 // events after context menu is shown.
 TEST_F(ShelfViewTest, DragAppAfterContextMenuIsShownInAlwaysShownShelf) {
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index e8c4b2f..c14a44f 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -134,7 +134,7 @@
 <translation id="2653659639078652383">சமர்ப்பி</translation>
 <translation id="2658778018866295321">கிளிக் செய்து இழுக்கும்</translation>
 <translation id="2700493154570097719">எனது விசைப்பலகையை அமை</translation>
-<translation id="2704781753052663061">பிற வைஃபை நெட்வொர்க்குகளில் இணை</translation>
+<translation id="2704781753052663061">பிற வைஃபை நெட்வொர்க்குகளில் இணையுங்கள்</translation>
 <translation id="2718395828230677721">நைட் லைட்</translation>
 <translation id="2727977024730340865">குறைந்த சக்தியிலான சார்ஜர் செருகப்பட்டுள்ளது. பேட்டரி சார்ஜிங் நம்பகமானதாக இல்லாமல் இருக்கலாம்.</translation>
 <translation id="2792498699870441125">Alt+தேடல்</translation>
diff --git a/ash/style/default_color_constants.h b/ash/style/default_color_constants.h
index 6a76f69..704246a 100644
--- a/ash/style/default_color_constants.h
+++ b/ash/style/default_color_constants.h
@@ -21,7 +21,6 @@
     SkColorSetA(kUnifiedMenuBackgroundColor, 0x99);  // 60%
 
 constexpr SkColor kNotificationBackgroundColor = SK_ColorWHITE;
-constexpr SkColor kUnifiedMenuTextColor = gfx::kGoogleGrey100;
 constexpr SkColor kUnifiedMenuButtonColor =
     SkColorSetA(gfx::kGoogleGrey200, 0x14);
 constexpr SkColor kUnifiedMenuButtonColorActive = gfx::kGoogleBlueDark600;
diff --git a/ash/system/audio/unified_volume_view.cc b/ash/system/audio/unified_volume_view.cc
index 17346a2..32f4fbf 100644
--- a/ash/system/audio/unified_volume_view.cc
+++ b/ash/system/audio/unified_volume_view.cc
@@ -89,6 +89,7 @@
     TrayPopupUtils::ConfigureTrayPopupButton(this);
 
     views::InstallPillHighlightPathGenerator(this);
+    focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
   }
 
   ~MoreButton() override = default;
diff --git a/ash/system/ime_menu/ime_list_view.cc b/ash/system/ime_menu/ime_list_view.cc
index bc27ba8a..7d0abfb 100644
--- a/ash/system/ime_menu/ime_list_view.cc
+++ b/ash/system/ime_menu/ime_list_view.cc
@@ -66,10 +66,9 @@
     // |id_label| contains the IME short name (e.g., 'US', 'GB', 'IT').
     views::Label* id_label = TrayPopupUtils::CreateDefaultLabel();
     if (use_unified_theme) {
-      id_label->SetEnabledColor(
-          AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-              AshColorProvider::ContentLayerType::kTextPrimary,
-              kUnifiedMenuTextColor));
+      id_label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+          AshColorProvider::ContentLayerType::kTextPrimary,
+          AshColorProvider::AshColorMode::kDark));
       id_label->SetAutoColorReadabilityEnabled(false);
     }
     id_label->SetText(id);
diff --git a/ash/system/locale/locale_detailed_view.cc b/ash/system/locale/locale_detailed_view.cc
index 2479dc9..56f985c 100644
--- a/ash/system/locale/locale_detailed_view.cc
+++ b/ash/system/locale/locale_detailed_view.cc
@@ -53,9 +53,9 @@
 
     views::Label* iso_code_label = TrayPopupUtils::CreateDefaultLabel();
     iso_code_label->SetEnabledColor(
-        AshColorProvider::Get()->DeprecatedGetContentLayerColor(
+        AshColorProvider::Get()->GetContentLayerColor(
             AshColorProvider::ContentLayerType::kTextPrimary,
-            kUnifiedMenuTextColor));
+            AshColorProvider::AshColorMode::kDark));
     iso_code_label->SetAutoColorReadabilityEnabled(false);
     iso_code_label->SetText(base::i18n::ToUpper(
         base::UTF8ToUTF16(l10n_util::GetLanguage(iso_code))));
diff --git a/ash/system/message_center/notifier_settings_view.cc b/ash/system/message_center/notifier_settings_view.cc
index a105c9b..1cdb678c 100644
--- a/ash/system/message_center/notifier_settings_view.cc
+++ b/ash/system/message_center/notifier_settings_view.cc
@@ -240,9 +240,8 @@
 class EmptyNotifierView : public views::View {
  public:
   EmptyNotifierView() {
-    const SkColor text_color =
-        AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-            ContentLayerType::kTextPrimary, kUnifiedMenuTextColor);
+    const SkColor text_color = AshColorProvider::Get()->GetContentLayerColor(
+        ContentLayerType::kTextPrimary, AshColorMode::kDark);
     auto layout = std::make_unique<views::BoxLayout>(
         views::BoxLayout::Orientation::kVertical, gfx::Insets(), 0);
     layout->set_main_axis_alignment(
@@ -292,9 +291,8 @@
   auto checkbox =
       std::make_unique<views::Checkbox>(base::string16(), this /* listener */);
   name_view->SetAutoColorReadabilityEnabled(false);
-  name_view->SetEnabledColor(
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor));
+  name_view->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark));
   name_view->SetSubpixelRenderingEnabled(false);
   // "Roboto-Regular, 13sp" is specified in the mock.
   name_view->SetFontList(
@@ -438,9 +436,8 @@
   auto quiet_mode_label =
       std::make_unique<views::Label>(l10n_util::GetStringUTF16(
           IDS_ASH_MESSAGE_CENTER_QUIET_MODE_BUTTON_TOOLTIP));
-  const SkColor text_color =
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor);
+  const SkColor text_color = AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark);
   quiet_mode_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
   // "Roboto-Regular, 13sp" is specified in the mock.
   quiet_mode_label->SetFontList(
diff --git a/ash/system/night_light/night_light_controller_impl.cc b/ash/system/night_light/night_light_controller_impl.cc
index a689c63..a22051bb 100644
--- a/ash/system/night_light/night_light_controller_impl.cc
+++ b/ash/system/night_light/night_light_controller_impl.cc
@@ -58,8 +58,8 @@
 enum class AutoNightLightNotificationState {
   kClosedByUser = 0,
   kBodyClicked = 1,
-  kButtonClicked = 2,
-  kMaxValue = kButtonClicked,
+  kButtonClickedDeprecated = 2,
+  kMaxValue = kButtonClickedDeprecated,
 };
 
 // The name of the histogram reporting the state of the user's interaction with
@@ -695,22 +695,15 @@
     const base::Optional<base::string16>& reply) {
   auto* shell = Shell::Get();
 
-  const bool body_clicked = !button_index.has_value();
-  if (body_clicked) {
-    // Body has been clicked.
-    SystemTrayClient* tray_client = shell->system_tray_model()->client();
-    auto* session_controller = shell->session_controller();
-    if (session_controller->ShouldEnableSettings() && tray_client)
-      tray_client->ShowDisplaySettings();
-  } else {
-    DCHECK_EQ(0, *button_index);
-    SetEnabled(false, AnimationDuration::kShort);
-  }
+  DCHECK(!button_index.has_value());
+  // Body has been clicked.
+  SystemTrayClient* tray_client = shell->system_tray_model()->client();
+  auto* session_controller = shell->session_controller();
+  if (session_controller->ShouldEnableSettings() && tray_client)
+    tray_client->ShowDisplaySettings();
 
-  UMA_HISTOGRAM_ENUMERATION(
-      kAutoNightLightNotificationStateHistogram,
-      body_clicked ? AutoNightLightNotificationState::kBodyClicked
-                   : AutoNightLightNotificationState::kButtonClicked);
+  UMA_HISTOGRAM_ENUMERATION(kAutoNightLightNotificationStateHistogram,
+                            AutoNightLightNotificationState::kBodyClicked);
 
   message_center::MessageCenter::Get()->RemoveNotification(kNotificationId,
                                                            /*by_user=*/false);
@@ -774,10 +767,6 @@
   DCHECK(!UserHasEverDismissedAutoNightLightNotification());
   DCHECK_EQ(ScheduleType::kSunsetToSunrise, GetScheduleType());
 
-  message_center::RichNotificationData data;
-  data.buttons.push_back(message_center::ButtonInfo(
-      l10n_util::GetStringUTF16(IDS_ASH_AUTO_NIGHT_LIGHT_NOTIFY_BUTTON_TEXT)));
-
   std::unique_ptr<message_center::Notification> notification =
       CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId,
@@ -786,7 +775,7 @@
           base::string16(), GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT, kNotifierId),
-          data,
+          message_center::RichNotificationData{},
           base::MakeRefCounted<message_center::ThunkNotificationDelegate>(
               weak_ptr_factory_.GetWeakPtr()),
           kUnifiedMenuNightLightIcon,
diff --git a/ash/system/night_light/night_light_controller_unittest.cc b/ash/system/night_light/night_light_controller_unittest.cc
index 06d8880..597bbb73 100644
--- a/ash/system/night_light/night_light_controller_unittest.cc
+++ b/ash/system/night_light/night_light_controller_unittest.cc
@@ -1550,9 +1550,12 @@
   ASSERT_TRUE(notification);
   ASSERT_TRUE(notification->delegate());
 
-  // Simulate the user clicking the notification button, Night Light should now
-  // be disabled, and the notification should be dismissed.
-  notification->delegate()->Click(base::make_optional<int>(0), base::nullopt);
+  // Simulate the user clicking the notification body to go to settings, and
+  // turning off Night Light manually for tonight. The notification should be
+  // dismissed.
+  notification->delegate()->Click(base::nullopt, base::nullopt);
+  controller->SetEnabled(false,
+                         NightLightControllerImpl::AnimationDuration::kShort);
   EXPECT_FALSE(controller->GetEnabled());
   EXPECT_FALSE(controller->GetAutoNightLightNotificationForTesting());
 
diff --git a/ash/system/tray/tray_popup_item_style.cc b/ash/system/tray/tray_popup_item_style.cc
index 5e9384b..0d8d679 100644
--- a/ash/system/tray/tray_popup_item_style.cc
+++ b/ash/system/tray/tray_popup_item_style.cc
@@ -59,11 +59,10 @@
 
 SkColor TrayPopupItemStyle::GetTextColor() const {
   const SkColor kBaseTextColor =
-      use_unified_theme_
-          ? AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-                AshColorProvider::ContentLayerType::kTextPrimary,
-                kUnifiedMenuTextColor)
-          : SkColorSetA(SK_ColorBLACK, 0xDE);
+      use_unified_theme_ ? AshColorProvider::Get()->GetContentLayerColor(
+                               AshColorProvider::ContentLayerType::kTextPrimary,
+                               AshColorProvider::AshColorMode::kDark)
+                         : SkColorSetA(SK_ColorBLACK, 0xDE);
 
   switch (color_style_) {
     case ColorStyle::ACTIVE:
diff --git a/ash/system/tray/tray_popup_utils.cc b/ash/system/tray/tray_popup_utils.cc
index 07b3eed..3bc5bcb 100644
--- a/ash/system/tray/tray_popup_utils.cc
+++ b/ash/system/tray/tray_popup_utils.cc
@@ -19,6 +19,7 @@
 #include "ash/system/tray/size_range_layout.h"
 #include "ash/system/tray/tray_constants.h"
 #include "ash/system/tray/unfocusable_label.h"
+#include "ash/system/unified/unified_system_tray_view.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/color_palette.h"
 #include "ui/gfx/geometry/insets.h"
@@ -253,7 +254,8 @@
 
 std::unique_ptr<views::Painter> TrayPopupUtils::CreateFocusPainter() {
   return views::Painter::CreateSolidFocusPainter(
-      kFocusBorderColor, kFocusBorderThickness, gfx::InsetsF());
+      UnifiedSystemTrayView::GetFocusRingColor(), kFocusBorderThickness,
+      gfx::InsetsF());
 }
 
 void TrayPopupUtils::ConfigureTrayPopupButton(views::Button* button) {
diff --git a/ash/system/unified/custom_shape_button.cc b/ash/system/unified/custom_shape_button.cc
index e86bfe6..da60c2a 100644
--- a/ash/system/unified/custom_shape_button.cc
+++ b/ash/system/unified/custom_shape_button.cc
@@ -41,6 +41,7 @@
   TrayPopupUtils::ConfigureTrayPopupButton(this);
   views::HighlightPathGenerator::Install(
       this, std::make_unique<CustomShapeButtonHighlightPathGenerator>());
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 CustomShapeButton::~CustomShapeButton() = default;
diff --git a/ash/system/unified/feature_pod_button.cc b/ash/system/unified/feature_pod_button.cc
index 60fca9c4..1e4d63cf 100644
--- a/ash/system/unified/feature_pod_button.cc
+++ b/ash/system/unified/feature_pod_button.cc
@@ -63,6 +63,7 @@
   TrayPopupUtils::ConfigureTrayPopupButton(this);
   views::InstallCircleHighlightPathGenerator(this);
   GetViewAccessibility().OverrideIsLeaf(true);
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 FeaturePodIconButton::~FeaturePodIconButton() = default;
@@ -171,6 +172,8 @@
 
   SetPaintToLayer();
   layer()->SetFillsBoundsOpaquely(false);
+
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 FeaturePodLabelButton::~FeaturePodLabelButton() = default;
@@ -267,9 +270,8 @@
 
 void FeaturePodLabelButton::OnEnabledChanged() {
   const AshColorProvider* color_provider = AshColorProvider::Get();
-  const SkColor primary_text_color =
-      color_provider->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor);
+  const SkColor primary_text_color = color_provider->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark);
   const SkColor secondary_text_color = color_provider->GetContentLayerColor(
       ContentLayerType::kTextSecondary, AshColorMode::kDark);
   label_->SetEnabledColor(
diff --git a/ash/system/unified/notification_hidden_view.cc b/ash/system/unified/notification_hidden_view.cc
index e744399..519333f9 100644
--- a/ash/system/unified/notification_hidden_view.cc
+++ b/ash/system/unified/notification_hidden_view.cc
@@ -37,10 +37,9 @@
 
 NotificationHiddenView::NotificationHiddenView() {
   auto* label = new views::Label;
-  label->SetEnabledColor(
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          AshColorProvider::ContentLayerType::kTextPrimary,
-          kUnifiedMenuTextColor));
+  label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      AshColorProvider::ContentLayerType::kTextPrimary,
+      AshColorProvider::AshColorMode::kDark));
   label->SetAutoColorReadabilityEnabled(false);
   label->SetText(
       l10n_util::GetStringUTF16(IDS_ASH_MESSAGE_CENTER_LOCKSCREEN_UNIFIED));
diff --git a/ash/system/unified/rounded_label_button.cc b/ash/system/unified/rounded_label_button.cc
index 46b7d7b..a7622e37 100644
--- a/ash/system/unified/rounded_label_button.cc
+++ b/ash/system/unified/rounded_label_button.cc
@@ -21,8 +21,9 @@
 RoundedLabelButton::RoundedLabelButton(views::ButtonListener* listener,
                                        const base::string16& text)
     : views::LabelButton(listener, text) {
-  SetEnabledTextColors(AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-      AshColorProvider::ContentLayerType::kTextPrimary, kUnifiedMenuTextColor));
+  SetEnabledTextColors(AshColorProvider::Get()->GetContentLayerColor(
+      AshColorProvider::ContentLayerType::kTextPrimary,
+      AshColorProvider::AshColorMode::kDark));
   SetHorizontalAlignment(gfx::ALIGN_CENTER);
   SetBorder(views::CreateEmptyBorder(gfx::Insets()));
   label()->SetElideBehavior(gfx::NO_ELIDE);
@@ -31,6 +32,8 @@
       1, gfx::Font::NORMAL, gfx::Font::Weight::MEDIUM));
   TrayPopupUtils::ConfigureTrayPopupButton(this);
   views::InstallPillHighlightPathGenerator(this);
+
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 RoundedLabelButton::~RoundedLabelButton() = default;
diff --git a/ash/system/unified/top_shortcut_button.cc b/ash/system/unified/top_shortcut_button.cc
index 00b74335..bdab402 100644
--- a/ash/system/unified/top_shortcut_button.cc
+++ b/ash/system/unified/top_shortcut_button.cc
@@ -30,6 +30,8 @@
                    AshColorProvider::ContentLayerType::kIconPrimary,
                    AshColorProvider::AshColorMode::kDark)));
   SetEnabled(false);
+
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 TopShortcutButton::TopShortcutButton(views::ButtonListener* listener,
@@ -46,6 +48,8 @@
       views::Button::STATE_DISABLED,
       gfx::CreateVectorIcon(icon, kTrayTopShortcutButtonIconSize,
                             AshColorProvider::GetDisabledColor(icon_color)));
+
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 TopShortcutButton::TopShortcutButton(views::ButtonListener* listener,
@@ -59,6 +63,8 @@
   TrayPopupUtils::ConfigureTrayPopupButton(this);
 
   views::InstallCircleHighlightPathGenerator(this);
+
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 TopShortcutButton::~TopShortcutButton() = default;
diff --git a/ash/system/unified/top_shortcuts_view.cc b/ash/system/unified/top_shortcuts_view.cc
index e49c89c..9f69806 100644
--- a/ash/system/unified/top_shortcuts_view.cc
+++ b/ash/system/unified/top_shortcuts_view.cc
@@ -19,6 +19,7 @@
 #include "ash/system/unified/sign_out_button.h"
 #include "ash/system/unified/top_shortcut_button.h"
 #include "ash/system/unified/unified_system_tray_controller.h"
+#include "ash/system/unified/unified_system_tray_view.h"
 #include "ash/system/unified/user_chooser_detailed_view_controller.h"
 #include "ash/system/unified/user_chooser_view.h"
 #include "base/numerics/ranges.h"
@@ -52,6 +53,7 @@
   SetFocusForPlatform();
 
   views::InstallCircleHighlightPathGenerator(this);
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 }
 
 }  // namespace
diff --git a/ash/system/unified/unified_system_info_view.cc b/ash/system/unified/unified_system_info_view.cc
index 707dd104..f732477 100644
--- a/ash/system/unified/unified_system_info_view.cc
+++ b/ash/system/unified/unified_system_info_view.cc
@@ -22,6 +22,7 @@
 #include "ash/system/supervised/supervised_icon_string.h"
 #include "ash/system/tray/system_tray_notifier.h"
 #include "ash/system/tray/tray_popup_utils.h"
+#include "ash/system/unified/unified_system_tray_view.h"
 #include "base/i18n/time_formatting.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
@@ -97,9 +98,8 @@
 
   label_->SetAutoColorReadabilityEnabled(false);
   label_->SetSubpixelRenderingEnabled(false);
-  label_->SetEnabledColor(
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor));
+  label_->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark));
   Update();
 
   Shell::Get()->system_tray_model()->clock()->AddObserver(this);
@@ -108,6 +108,7 @@
 
   SetInstallFocusRingOnFocus(true);
   SetFocusForPlatform();
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 
   SetInkDropMode(views::InkDropHostView::InkDropMode::OFF);
 }
@@ -278,6 +279,7 @@
 
   SetInstallFocusRingOnFocus(true);
   SetFocusForPlatform();
+  focus_ring()->SetColor(UnifiedSystemTrayView::GetFocusRingColor());
 
   SetInkDropMode(views::InkDropHostView::InkDropMode::OFF);
 }
diff --git a/ash/system/unified/unified_system_tray_view.cc b/ash/system/unified/unified_system_tray_view.cc
index d71535f..93f0772 100644
--- a/ash/system/unified/unified_system_tray_view.cc
+++ b/ash/system/unified/unified_system_tray_view.cc
@@ -283,6 +283,11 @@
 }
 
 // static
+SkColor UnifiedSystemTrayView::GetFocusRingColor() {
+  return ShelfConfig::Get()->shelf_focus_border_color();
+}
+
+// static
 std::unique_ptr<views::Background> UnifiedSystemTrayView::CreateBackground() {
   return views::CreateBackgroundFromPainter(
       views::Painter::CreateSolidRoundRectPainter(GetBackgroundColor(),
diff --git a/ash/system/unified/unified_system_tray_view.h b/ash/system/unified/unified_system_tray_view.h
index e4f03af2..14599e6 100644
--- a/ash/system/unified/unified_system_tray_view.h
+++ b/ash/system/unified/unified_system_tray_view.h
@@ -64,6 +64,9 @@
   // Get the background color of unified system tray.
   static SkColor GetBackgroundColor();
 
+  // Get focus ring color for system tray elements.
+  static SkColor GetFocusRingColor();
+
   // Create background of UnifiedSystemTray with rounded corners.
   static std::unique_ptr<views::Background> CreateBackground();
 
diff --git a/ash/system/unified/user_chooser_view.cc b/ash/system/unified/user_chooser_view.cc
index a08eac9..86ef84f 100644
--- a/ash/system/unified/user_chooser_view.cc
+++ b/ash/system/unified/user_chooser_view.cc
@@ -97,9 +97,8 @@
 
   auto* label = new views::Label(
       l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT));
-  label->SetEnabledColor(
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor));
+  label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark));
   label->SetAutoColorReadabilityEnabled(false);
   label->SetSubpixelRenderingEnabled(false);
   AddChildView(label);
@@ -139,9 +138,8 @@
 
 views::View* CreateAddUserErrorView(const base::string16& message) {
   auto* label = new views::Label(message);
-  label->SetEnabledColor(
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor));
+  label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark));
   label->SetAutoColorReadabilityEnabled(false);
   label->SetSubpixelRenderingEnabled(false);
   label->SetBorder(
@@ -230,9 +228,8 @@
       Shell::Get()->session_controller()->GetUserSession(user_index);
 
   name_->SetText(base::UTF8ToUTF16(user_session->user_info.display_name));
-  name_->SetEnabledColor(
-      AshColorProvider::Get()->DeprecatedGetContentLayerColor(
-          ContentLayerType::kTextPrimary, kUnifiedMenuTextColor));
+  name_->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kTextPrimary, AshColorMode::kDark));
   name_->SetAutoColorReadabilityEnabled(false);
   name_->SetSubpixelRenderingEnabled(false);
   vertical_labels->AddChildView(name_);
diff --git a/ash/test/ash_test_base.cc b/ash/test/ash_test_base.cc
index ddeb61e..3d6d66e1 100644
--- a/ash/test/ash_test_base.cc
+++ b/ash/test/ash_test_base.cc
@@ -482,12 +482,25 @@
   GetSessionControllerClient()->UnlockScreen();
 }
 
-void AshTestBase::SetTouchKeyboardEnabled(bool enabled) {
-  auto flag = keyboard::KeyboardEnableFlag::kTouchEnabled;
-  if (enabled)
-    Shell::Get()->keyboard_controller()->SetEnableFlag(flag);
-  else
-    Shell::Get()->keyboard_controller()->ClearEnableFlag(flag);
+void AshTestBase::SetVirtualKeyboardEnabled(bool enabled) {
+  // Note there are a lot of flags that can be set to control whether the
+  // keyboard is shown or not. You can see the logic in
+  // |KeyboardUIController::IsKeyboardEnableRequested|.
+  // The |kTouchEnabled| flag seems like a logical candidate to pick, but it
+  // does not work because the flag will automatically be toggled off once the
+  // |DeviceDataManager| detects there is a physical keyboard present. That's
+  // why I picked the |kPolicyEnabled| and |kPolicyDisabled| flags instead.
+  auto enable_flag = keyboard::KeyboardEnableFlag::kPolicyEnabled;
+  auto disable_flag = keyboard::KeyboardEnableFlag::kPolicyDisabled;
+  auto* keyboard_controller = Shell::Get()->keyboard_controller();
+
+  if (enabled) {
+    keyboard_controller->SetEnableFlag(enable_flag);
+    keyboard_controller->ClearEnableFlag(disable_flag);
+  } else {
+    keyboard_controller->ClearEnableFlag(enable_flag);
+    keyboard_controller->SetEnableFlag(disable_flag);
+  }
   // Ensure that observer methods and mojo calls between KeyboardControllerImpl,
   // keyboard::KeyboardUIController*, and AshKeyboardUI complete.
   base::RunLoop().RunUntilIdle();
diff --git a/ash/test/ash_test_base.h b/ash/test/ash_test_base.h
index 95bc2b9..4faae64d 100644
--- a/ash/test/ash_test_base.h
+++ b/ash/test/ash_test_base.h
@@ -264,9 +264,9 @@
   void BlockUserSession(UserSessionBlockReason block_reason);
   void UnblockUserSession();
 
-  // Enable or disable the keyboard for touch and run the message loop to
-  // allow observer operations to complete.
-  void SetTouchKeyboardEnabled(bool enabled);
+  // Enable or disable the virtual on-screen keyboard and run the message loop
+  // to allow observer operations to complete.
+  void SetVirtualKeyboardEnabled(bool enabled);
 
   void DisableIME();
 
diff --git a/ash/wm/collision_detection/collision_detection_utils_unittest.cc b/ash/wm/collision_detection/collision_detection_utils_unittest.cc
index ccf75bb5..7210fc72 100644
--- a/ash/wm/collision_detection/collision_detection_utils_unittest.cc
+++ b/ash/wm/collision_detection/collision_detection_utils_unittest.cc
@@ -17,7 +17,6 @@
 #include "ash/wm/window_state.h"
 #include "ash/wm/wm_event.h"
 #include "base/bind_helpers.h"
-#include "base/command_line.h"
 #include "ui/aura/window.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/wm/core/coordinate_conversion.h"
@@ -82,9 +81,8 @@
           std::tuple<std::string, std::size_t>> {
  public:
   void SetUp() override {
-    base::CommandLine::ForCurrentProcess()->AppendSwitch(
-        keyboard::switches::kEnableVirtualKeyboard);
     AshTestBase::SetUp();
+    SetVirtualKeyboardEnabled(true);
 
     const std::string& display_string = std::get<0>(GetParam());
     const std::size_t root_window_index = std::get<1>(GetParam());
@@ -206,7 +204,7 @@
 
 TEST_P(CollisionDetectionUtilsDisplayTest,
        RestingPositionWorksIfKeyboardIsDisabled) {
-  SetTouchKeyboardEnabled(false);
+  SetVirtualKeyboardEnabled(false);
   auto display = GetDisplay();
 
   // Snap near top edge to top.
diff --git a/ash/wm/overview/overview_item.cc b/ash/wm/overview/overview_item.cc
index 7a3ee76..8cd4eae 100644
--- a/ash/wm/overview/overview_item.cc
+++ b/ash/wm/overview/overview_item.cc
@@ -763,9 +763,14 @@
       !disable_mask_ && !is_shutting_down &&
       !overview_controller->IsInStartAnimation();
 
-  transform_window_.UpdateRoundedCorners(
-      should_show_rounded_corners,
-      /*update_clip=*/should_show_rounded_corners);
+  if (transform_window_.IsMinimized()) {
+    overview_item_view_->UpdatePreviewRoundedCorners(
+        should_show_rounded_corners);
+  } else {
+    transform_window_.UpdateRoundedCorners(
+        should_show_rounded_corners,
+        /*update_clip=*/should_show_rounded_corners);
+  }
 
   // In addition, the shadow should be hidden if
   // 1) this overview item is the drop target window or
@@ -777,14 +782,15 @@
            ->layer()
            ->GetAnimator()
            ->is_animating();
-
-  SetShadowBounds(
-      should_show_shadow
-          ? base::make_optional(transform_window_.GetTransformedBounds())
-          : base::nullopt);
-  if (transform_window_.IsMinimized()) {
-    overview_item_view_->UpdatePreviewRoundedCorners(
-        should_show_rounded_corners);
+  if (should_show_shadow) {
+    const gfx::RectF shadow_bounds =
+        transform_window_.IsMinimized()
+            ? gfx::RectF(
+                  overview_item_view_->preview_view()->GetBoundsInScreen())
+            : transform_window_.GetTransformedBounds();
+    SetShadowBounds(base::make_optional(shadow_bounds));
+  } else {
+    SetShadowBounds(base::nullopt);
   }
 }
 
diff --git a/ash/wm/overview/overview_item_view.cc b/ash/wm/overview/overview_item_view.cc
index 31c85a7..5c84d305 100644
--- a/ash/wm/overview/overview_item_view.cc
+++ b/ash/wm/overview/overview_item_view.cc
@@ -21,6 +21,7 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
+#include "ui/gfx/geometry/size_conversions.h"
 #include "ui/gfx/paint_vector_icon.h"
 #include "ui/strings/grit/ui_strings.h"
 #include "ui/views/animation/flood_fill_ink_drop_ripple.h"
@@ -274,6 +275,29 @@
                    kHeaderHeightDp);
 }
 
+gfx::Size OverviewItemView::GetPreviewViewSize() const {
+  // The preview should expand to fit the bounds allocated for the content,
+  // except if it is letterboxed or pillarboxed.
+  const gfx::SizeF preview_pref_size(preview_view()->GetPreferredSize());
+  const float aspect_ratio =
+      preview_pref_size.width() / preview_pref_size.height();
+  gfx::SizeF target_size(GetContentAreaBounds().size());
+  ScopedOverviewTransformWindow::GridWindowFillMode fill_mode =
+      overview_item_->GetWindowDimensionsType();
+  switch (fill_mode) {
+    case ScopedOverviewTransformWindow::GridWindowFillMode::kNormal:
+      break;
+    case ScopedOverviewTransformWindow::GridWindowFillMode::kLetterBoxed:
+      target_size.set_height(target_size.width() / aspect_ratio);
+      break;
+    case ScopedOverviewTransformWindow::GridWindowFillMode::kPillarBoxed:
+      target_size.set_width(target_size.height() * aspect_ratio);
+      break;
+  }
+
+  return gfx::ToRoundedSize(target_size);
+}
+
 views::View* OverviewItemView::GetView() {
   return this;
 }
diff --git a/ash/wm/overview/overview_item_view.h b/ash/wm/overview/overview_item_view.h
index 998a37d7..0887d46 100644
--- a/ash/wm/overview/overview_item_view.h
+++ b/ash/wm/overview/overview_item_view.h
@@ -64,6 +64,7 @@
   // WindowMiniView:
   int GetMargin() const override;
   gfx::Rect GetHeaderBounds() const override;
+  gfx::Size GetPreviewViewSize() const override;
 
   // OverviewHighlightController::OverviewHighlightableView:
   views::View* GetView() override;
diff --git a/ash/wm/pip/pip_window_resizer_unittest.cc b/ash/wm/pip/pip_window_resizer_unittest.cc
index dcb8999..a18eb72 100644
--- a/ash/wm/pip/pip_window_resizer_unittest.cc
+++ b/ash/wm/pip/pip_window_resizer_unittest.cc
@@ -21,7 +21,6 @@
 #include "ash/wm/window_state.h"
 #include "ash/wm/wm_event.h"
 #include "base/bind_helpers.h"
-#include "base/command_line.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/window.h"
@@ -80,10 +79,8 @@
   ~PipWindowResizerTest() override = default;
 
   void SetUp() override {
-    base::CommandLine::ForCurrentProcess()->AppendSwitch(
-        keyboard::switches::kEnableVirtualKeyboard);
     AshTestBase::SetUp();
-    SetTouchKeyboardEnabled(true);
+    SetVirtualKeyboardEnabled(true);
 
     const std::string& display_string = std::get<0>(GetParam());
     const std::size_t root_window_index = std::get<1>(GetParam());
@@ -96,7 +93,7 @@
 
   void TearDown() override {
     scoped_root_.reset();
-    SetTouchKeyboardEnabled(false);
+    SetVirtualKeyboardEnabled(false);
     AshTestBase::TearDown();
   }
 
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc
index 516d85ca..261c102 100644
--- a/ash/wm/splitview/split_view_controller_unittest.cc
+++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -19,6 +19,7 @@
 #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"
@@ -2896,22 +2897,26 @@
   const gfx::Rect bounds(0, 0, 400, 400);
   std::unique_ptr<aura::Window> window(
       CreateWindowWithType(bounds, AppType::BROWSER));
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kAutoOpaque);
+  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window.get());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
 
   std::unique_ptr<WindowResizer> resizer =
       StartDrag(window.get(), window.get());
   ASSERT_TRUE(resizer.get());
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
 
   resizer->Drag(gfx::PointF(), 0);
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kDisabled);
+  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
 
   resizer->CompleteDrag();
-  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
-            BackdropWindowMode::kAutoOpaque);
+  EXPECT_FALSE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
 }
 
 // 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 27c131f2..c0e0b5f 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,6 +9,7 @@
 #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"
@@ -125,9 +126,7 @@
     DCHECK(source_window);
 
     // Disable the backdrop for |source_window| during dragging.
-    source_window_backdrop_ = source_window->GetProperty(kBackdropWindowMode);
-    source_window->SetProperty(kBackdropWindowMode,
-                               BackdropWindowMode::kDisabled);
+    WindowBackdrop::Get(source_window)->DisableBackdrop();
 
     DCHECK(!Shell::Get()->overview_controller()->InOverviewSession());
 
@@ -162,7 +161,7 @@
     aura::Window* source_window =
         dragged_window_->GetProperty(kTabDraggingSourceWindowKey);
     if (source_window)
-      source_window->SetProperty(kBackdropWindowMode, source_window_backdrop_);
+      WindowBackdrop::Get(source_window)->RestoreBackdrop();
 
     for (auto iter = window_visibility_map_.begin();
          iter != window_visibility_map_.end(); ++iter) {
@@ -213,10 +212,6 @@
   // 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 c998a35..0a959d2 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.cc
+++ b/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.cc
@@ -5,6 +5,7 @@
 #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"
@@ -149,9 +150,7 @@
       ->UpdateVisibilityState();
 
   // Disable the backdrop on the dragged window.
-  original_backdrop_mode_ = dragged_window_->GetProperty(kBackdropWindowMode);
-  dragged_window_->SetProperty(kBackdropWindowMode,
-                               BackdropWindowMode::kDisabled);
+  WindowBackdrop::Get(dragged_window_)->DisableBackdrop();
 
   OverviewController* controller = Shell::Get()->overview_controller();
   bool was_overview_open = controller->InOverviewSession();
@@ -264,7 +263,7 @@
     const gfx::PointF& location_in_screen) {
   EndingWindowDrag(result, location_in_screen);
 
-  dragged_window_->SetProperty(kBackdropWindowMode, original_backdrop_mode_);
+  WindowBackdrop::Get(dragged_window_)->RestoreBackdrop();
   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 f22b664..8a99d09 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h
+++ b/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h
@@ -127,9 +127,6 @@
 
   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/window_mini_view.cc b/ash/wm/window_mini_view.cc
index 1b1cfb2..791e0c8a 100644
--- a/ash/wm/window_mini_view.cc
+++ b/ash/wm/window_mini_view.cc
@@ -155,18 +155,21 @@
   SetBorder(std::move(border));
 }
 
-void WindowMiniView::Layout() {
-  gfx::Rect bounds = GetContentsBounds();
+gfx::Rect WindowMiniView::GetContentAreaBounds() const {
+  const int margin = GetMargin();
+  gfx::Rect bounds(GetLocalBounds());
+  bounds.Inset(margin, margin);
+  bounds.Inset(0, kHeaderHeightDp, 0, 0);
+  return bounds;
+}
 
-  if (backdrop_view_) {
-    gfx::Rect backdrop_bounds = bounds;
-    backdrop_bounds.Inset(0, kHeaderHeightDp, 0, 0);
-    backdrop_view_->SetBoundsRect(backdrop_bounds);
-  }
+void WindowMiniView::Layout() {
+  const gfx::Rect content_area_bounds = GetContentAreaBounds();
+  if (backdrop_view_)
+    backdrop_view_->SetBoundsRect(content_area_bounds);
 
   if (preview_view_) {
-    gfx::Rect preview_bounds = bounds;
-    preview_bounds.Inset(0, kHeaderHeightDp, 0, 0);
+    gfx::Rect preview_bounds = content_area_bounds;
     preview_bounds.ClampToCenteredSize(GetPreviewViewSize());
     preview_view_->SetBoundsRect(preview_bounds);
   }
diff --git a/ash/wm/window_mini_view.h b/ash/wm/window_mini_view.h
index eb254f1..e3d053f 100644
--- a/ash/wm/window_mini_view.h
+++ b/ash/wm/window_mini_view.h
@@ -55,6 +55,9 @@
 
   WmHighlightItemBorder* border_ptr() { return border_ptr_; }
 
+  // Returns the bounds where the backdrop and preview should go.
+  gfx::Rect GetContentAreaBounds() const;
+
   // Subclasses can override these functions to provide customization for
   // margins and layouts of certain elements.
   virtual int GetMargin() const;
diff --git a/ash/wm/workspace/backdrop_controller.cc b/ash/wm/workspace/backdrop_controller.cc
index 2f9d3327e..9f9928e 100644
--- a/ash/wm/workspace/backdrop_controller.cc
+++ b/ash/wm/workspace/backdrop_controller.cc
@@ -13,6 +13,7 @@
 #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"
@@ -38,18 +39,6 @@
 
 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:
 
@@ -239,11 +228,15 @@
 }
 
 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();
 }
@@ -253,12 +246,6 @@
     UpdateBackdrop();
 }
 
-void BackdropController::OnBackdropWindowModePropertyChanged(
-    aura::Window* window) {
-  if (DoesWindowCauseBackdropUpdates(window))
-    UpdateBackdrop();
-}
-
 void BackdropController::OnWindowStackingChanged(aura::Window* window) {
   if (DoesWindowCauseBackdropUpdates(window))
     UpdateBackdrop();
@@ -371,10 +358,9 @@
 void BackdropController::OnWallpaperPreviewStarted() {
   aura::Window* active_window = window_util::GetActiveWindow();
   if (active_window) {
-    active_window->SetProperty(kBackdropWindowMode,
-                               BackdropWindowMode::kDisabled);
+    WindowBackdrop::Get(active_window)
+        ->SetBackdropMode(WindowBackdrop::BackdropMode::kDisabled);
   }
-  UpdateBackdrop();
 }
 
 void BackdropController::OnTabletModeStarted() {
@@ -385,6 +371,11 @@
   UpdateBackdrop();
 }
 
+void BackdropController::OnWindowBackdropPropertyChanged(aura::Window* window) {
+  if (DoesWindowCauseBackdropUpdates(window))
+    UpdateBackdrop();
+}
+
 void BackdropController::RestoreUpdates() {
   pause_update_ = false;
   UpdateBackdrop();
@@ -424,9 +415,8 @@
 void BackdropController::EnsureBackdropWidget() {
   DCHECK(window_having_backdrop_);
 
-  const BackdropWindowMode mode =
-      window_having_backdrop_->GetProperty(kBackdropWindowMode);
-  const SkColor backdrop_color = GetBackdropColorByMode(mode);
+  const SkColor backdrop_color =
+      WindowBackdrop::Get(window_having_backdrop_)->GetBackdropColor();
 
   if (backdrop_) {
     if (backdrop_window_->layer()->GetTargetColor() != backdrop_color)
@@ -479,13 +469,15 @@
 }
 
 bool BackdropController::WindowShouldHaveBackdrop(aura::Window* window) {
-  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;
-  }
+  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| 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 8f31cd84..10a466a 100644
--- a/ash/wm/workspace/backdrop_controller.h
+++ b/ash/wm/workspace/backdrop_controller.h
@@ -11,6 +11,7 @@
 #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"
@@ -18,6 +19,7 @@
 #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 {
@@ -47,7 +49,8 @@
                                       public OverviewObserver,
                                       public SplitViewObserver,
                                       public WallpaperControllerObserver,
-                                      public TabletModeObserver {
+                                      public TabletModeObserver,
+                                      public WindowBackdrop::Observer {
  public:
   explicit BackdropController(aura::Window* container);
   ~BackdropController() override;
@@ -55,7 +58,6 @@
   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();
@@ -96,6 +98,9 @@
   void OnTabletModeStarted() override;
   void OnTabletModeEnded() override;
 
+  // WindowBackdrop::Observer:
+  void OnWindowBackdropPropertyChanged(aura::Window* window) override;
+
  private:
   class WindowAnimationWaiter;
   friend class WorkspaceControllerTestApi;
@@ -173,6 +178,9 @@
   // 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 756677e..61185be 100644
--- a/ash/wm/workspace/workspace_layout_manager.cc
+++ b/ash/wm/workspace/workspace_layout_manager.cc
@@ -310,8 +310,9 @@
       if (window->parent() != container)
         container->AddChild(window);
     }
-  } else if (key == kBackdropWindowMode) {
-    backdrop_controller_->OnBackdropWindowModePropertyChanged(window);
+  } else if (key == kWindowBackdropKey) {
+    // kWindowBackdropKey is not supposed to be cleared.
+    DCHECK(window->GetProperty(kWindowBackdropKey));
   }
 }
 
@@ -336,8 +337,7 @@
     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 66014d9..db27ff9 100644
--- a/ash/wm/workspace/workspace_layout_manager_unittest.cc
+++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -21,6 +21,7 @@
 #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"
@@ -48,7 +49,6 @@
 #include "ash/wm/workspace/workspace_window_resizer.h"
 #include "ash/wm/workspace_controller_test_api.h"
 #include "base/bind_helpers.h"
-#include "base/command_line.h"
 #include "base/run_loop.h"
 #include "chromeos/audio/chromeos_sounds.h"
 #include "ui/aura/client/aura_constants.h"
@@ -1313,7 +1313,8 @@
   window3->Show();
   EXPECT_FALSE(test_helper.GetBackdropWindow());
 
-  window2->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
+  WindowBackdrop::Get(window2.get())
+      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
   aura::Window* backdrop = test_helper.GetBackdropWindow();
   EXPECT_TRUE(backdrop);
   {
@@ -1327,7 +1328,8 @@
 
   // Setting the property to the one below the backdrop window shouldn't change
   // the state.
-  window1->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
+  WindowBackdrop::Get(window1.get())
+      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1338,7 +1340,8 @@
   }
 
   // Setting the property to the top will move the backdrop up.
-  window3->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
+  WindowBackdrop::Get(window3.get())
+      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1348,8 +1351,8 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Clearing the property in the middle will not change the backdrop position.
-  window2->ClearProperty(kBackdropWindowMode);
+  // Disabling the backdrop in the middle will not change the backdrop position.
+  WindowBackdrop::Get(window2.get())->DisableBackdrop();
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1359,8 +1362,8 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Clearing the property on top will move the backdrop to bottom.
-  window3->ClearProperty(kBackdropWindowMode);
+  // Disabling the backdrop on top will move the backdrop to bottom.
+  WindowBackdrop::Get(window3.get())->DisableBackdrop();
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1391,11 +1394,23 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Enabling tablet mode will put the backdrop on the top most window.
+  // Enabling tablet mode will put the backdrop on the top most window that can
+  // have backdrop.
   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]);
@@ -1422,32 +1437,31 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Exiting tablet mode will move the backdrop back to window1.
+  // Exiting tablet mode will move the backdrop back to window3 as window3 is
+  // the top most window with kEnabled backdrop mode.
   SetTabletModeEnabled(false);
   {
     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]);
-  }
-
-  // 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());
     EXPECT_EQ(window1.get(), children[0]);
     EXPECT_EQ(window2.get(), children[1]);
     EXPECT_EQ(backdrop, children[2]);
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Setting the property explicitly to kDisabled will move the backdrop to
-  // window2.
-  window3->SetProperty(kBackdropWindowMode, BackdropWindowMode::kDisabled);
+  // Re-enter tablet mode. window3 still has the backdrop.
+  SetTabletModeEnabled(true);
+  {
+    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(window3.get(), children[3]);
+  }
+
+  // Explicitly disable backdrop on window3 will move the backdrop to window2.
+  WindowBackdrop::Get(window3.get())->DisableBackdrop();
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1508,7 +1522,8 @@
       &delegate, 0, gfx::Rect(0, 0, 100, 100)));
   window->Show();
 
-  window->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
+  WindowBackdrop::Get(window.get())
+      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
   EXPECT_TRUE(test_helper.GetBackdropWindow());
 
   ui::test::EventGenerator* generator = GetEventGenerator();
@@ -1906,10 +1921,8 @@
 
   // AshTestBase:
   void SetUp() override {
-    base::CommandLine::ForCurrentProcess()->AppendSwitch(
-        keyboard::switches::kEnableVirtualKeyboard);
     AshTestBase::SetUp();
-    SetTouchKeyboardEnabled(true);
+    SetVirtualKeyboardEnabled(true);
 
     window_ = CreateTestWindowInShellWithBounds(gfx::Rect(0, 0, 100, 100));
     WindowState* window_state = WindowState::Get(window_);
@@ -1919,7 +1932,7 @@
   }
 
   void TearDown() override {
-    SetTouchKeyboardEnabled(false);
+    SetVirtualKeyboardEnabled(false);
     AshTestBase::TearDown();
   }
 
@@ -2020,8 +2033,8 @@
   always_on_top_window->Show();
   always_on_top_window->SetProperty(aura::client::kZOrderingKey,
                                     ui::ZOrderLevel::kFloatingWindow);
-  always_on_top_window->SetProperty(kBackdropWindowMode,
-                                    BackdropWindowMode::kEnabled);
+  WindowBackdrop::Get(always_on_top_window.get())
+      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
 
   aura::Window* always_on_top_container =
   always_on_top_controller->GetContainer(always_on_top_window.get());
diff --git a/build/config/fuchsia/BUILD.gn b/build/config/fuchsia/BUILD.gn
index e6abcc3..56d79f41 100644
--- a/build/config/fuchsia/BUILD.gn
+++ b/build/config/fuchsia/BUILD.gn
@@ -49,6 +49,14 @@
   # Add SDK lib dir for -lfdio above.
   lib_dirs = [ "${fuchsia_sdk}/arch/${current_cpu}/lib" ]
 
+  # TODO(crbug.com/821951): Clang enables SafeStack by default when targeting
+  # Fuchsia, but it breaks some tests, notably in V8.
+  # Force the toolchain to use shadow-call-stack instead, until that is default.
+  cflags += [
+    "-fno-sanitize=safe-stack",
+    "-fsanitize=shadow-call-stack",
+  ]
+
   libs = [ "zircon" ]
 }
 
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 0a087beb..2d64cb3 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -927,9 +927,16 @@
   gfx::Vector2dF transform_scales =
       MathUtil::ComputeTransform2dScaleComponents(transform, default_scale);
 
+  return GetPreferredRasterScale(transform_scales);
+}
+
+float LayerImpl::GetPreferredRasterScale(
+    gfx::Vector2dF raster_space_scale_factor) {
   constexpr float kMaxScaleRatio = 5.f;
-  float lower_scale = std::min(transform_scales.x(), transform_scales.y());
-  float higher_scale = std::max(transform_scales.x(), transform_scales.y());
+  float lower_scale =
+      std::min(raster_space_scale_factor.x(), raster_space_scale_factor.y());
+  float higher_scale =
+      std::max(raster_space_scale_factor.x(), raster_space_scale_factor.y());
   return std::min(kMaxScaleRatio * lower_scale, higher_scale);
 }
 
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index 284e10cf..9fe42ff5 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -454,6 +454,9 @@
                              SkColor color,
                              float width) const;
 
+  static float GetPreferredRasterScale(
+      gfx::Vector2dF raster_space_scale_factor);
+
  private:
   void ValidateQuadResourcesInternal(viz::DrawQuad* quad) const;
 
diff --git a/cc/layers/picture_image_layer.cc b/cc/layers/picture_image_layer.cc
index f9999f60..2208b11 100644
--- a/cc/layers/picture_image_layer.cc
+++ b/cc/layers/picture_image_layer.cc
@@ -24,13 +24,6 @@
   ClearClient();
 }
 
-std::unique_ptr<LayerImpl> PictureImageLayer::CreateLayerImpl(
-    LayerTreeImpl* tree_impl) {
-  auto layer_impl = PictureLayerImpl::Create(tree_impl, id());
-  layer_impl->set_is_directly_composited_image(true);
-  return std::move(layer_impl);
-}
-
 bool PictureImageLayer::HasDrawableContent() const {
   return image_ && PictureLayer::HasDrawableContent();
 }
@@ -50,6 +43,12 @@
   image_ = std::move(image);
   matrix_ = matrix;
   uses_width_as_height_ = uses_width_as_height;
+
+  int width = uses_width_as_height_ ? image_.height() : image_.width();
+  int height = uses_width_as_height_ ? image_.width() : image_.height();
+  picture_layer_inputs_.directly_composited_image_size =
+      gfx::Size(width, height);
+
   UpdateDrawsContent(HasDrawableContent());
   SetNeedsDisplay();
 }
@@ -65,15 +64,16 @@
   DCHECK_GT(image_.height(), 0);
   DCHECK(layer_tree_host());
 
-  int width = uses_width_as_height_ ? image_.height() : image_.width();
-  int height = uses_width_as_height_ ? image_.width() : image_.height();
-
-  float content_to_layer_scale_x = static_cast<float>(bounds().width()) / width;
+  gfx::Size image_size =
+      picture_layer_inputs_.directly_composited_image_size.value();
+  float content_to_layer_scale_x =
+      static_cast<float>(bounds().width()) / image_size.width();
   float content_to_layer_scale_y =
-      static_cast<float>(bounds().height()) / height;
+      static_cast<float>(bounds().height()) / image_size.height();
 
   bool has_scale = !MathUtil::IsWithinEpsilon(content_to_layer_scale_x, 1.f) ||
                    !MathUtil::IsWithinEpsilon(content_to_layer_scale_y, 1.f);
+  DCHECK(!has_scale);
   bool needs_save = has_scale || !matrix_.isIdentity();
 
   auto display_list = base::MakeRefCounted<DisplayItemList>();
@@ -101,6 +101,7 @@
 
   display_list->EndPaintOfUnpaired(PaintableRegion());
   display_list->Finalize();
+
   return display_list;
 }
 
diff --git a/cc/layers/picture_image_layer.h b/cc/layers/picture_image_layer.h
index b9a424f..92fddfa 100644
--- a/cc/layers/picture_image_layer.h
+++ b/cc/layers/picture_image_layer.h
@@ -27,9 +27,6 @@
                 const SkMatrix& matrix,
                 bool uses_width_as_height);
 
-  // Layer implementation.
-  std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
-
   gfx::Rect PaintableRegion() override;
 
   // ContentLayerClient implementation.
diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
index 47477510..957bcef 100644
--- a/cc/layers/picture_layer.cc
+++ b/cc/layers/picture_layer.cc
@@ -62,6 +62,8 @@
   layer_impl->set_gpu_raster_max_texture_size(
       layer_tree_host()->device_viewport_rect().size());
   layer_impl->SetIsBackdropFilterMask(is_backdrop_filter_mask());
+  layer_impl->SetDirectlyCompositedImageSize(
+      picture_layer_inputs_.directly_composited_image_size);
 
   // TODO(enne): http://crbug.com/918126 debugging
   CHECK(this);
diff --git a/cc/layers/picture_layer.h b/cc/layers/picture_layer.h
index 9fe8d0d..8fdfba82 100644
--- a/cc/layers/picture_layer.h
+++ b/cc/layers/picture_layer.h
@@ -72,6 +72,7 @@
     bool transformed_rasterization_allowed = false;
     bool is_backdrop_filter_mask = false;
     scoped_refptr<DisplayItemList> display_list;
+    base::Optional<gfx::Size> directly_composited_image_size = base::nullopt;
     size_t painter_reported_memory_usage = 0;
   };
 
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 7c535bd..4536acf 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -96,8 +96,8 @@
       only_used_low_res_last_append_quads_(false),
       nearest_neighbor_(false),
       use_transformed_rasterization_(false),
-      is_directly_composited_image_(false),
       can_use_lcd_text_(true),
+      directly_composited_image_size_(base::nullopt),
       tile_size_calculator_(this) {
   layer_tree_impl()->RegisterPictureLayerImpl(this);
 }
@@ -152,6 +152,7 @@
 
   layer_impl->SetNearestNeighbor(nearest_neighbor_);
   layer_impl->SetUseTransformedRasterization(use_transformed_rasterization_);
+  layer_impl->SetDirectlyCompositedImageSize(directly_composited_image_size_);
   layer_impl->SetIsBackdropFilterMask(is_backdrop_filter_mask_);
 
   // Solid color layers have no tilings.
@@ -174,7 +175,6 @@
   layer_impl->raster_source_scale_ = raster_source_scale_;
   layer_impl->raster_contents_scale_ = raster_contents_scale_;
   layer_impl->low_res_raster_contents_scale_ = low_res_raster_contents_scale_;
-  layer_impl->is_directly_composited_image_ = is_directly_composited_image_;
   // Simply push the value to the active tree without any extra invalidations,
   // since the pending tree tiles would have this handled. This is here to
   // ensure the state is consistent for future raster.
@@ -976,6 +976,25 @@
   NoteLayerPropertyChanged();
 }
 
+void PictureLayerImpl::SetDirectlyCompositedImageSize(
+    base::Optional<gfx::Size> size) {
+  if (directly_composited_image_size_ == size)
+    return;
+
+  directly_composited_image_size_ = size;
+  NoteLayerPropertyChanged();
+}
+
+float PictureLayerImpl::GetDirectlyCompositedImageRasterScale() const {
+  float x = static_cast<float>(directly_composited_image_size_->width()) /
+            bounds().width();
+  float y = static_cast<float>(directly_composited_image_size_->height()) /
+            bounds().height();
+  DCHECK_EQ(x, 1.f);
+  DCHECK_EQ(y, 1.f);
+  return GetPreferredRasterScale(gfx::Vector2dF(x, y));
+}
+
 PictureLayerTiling* PictureLayerImpl::AddTiling(
     const gfx::AxisTransform2d& contents_transform) {
   DCHECK(CanHaveTilings());
@@ -1033,8 +1052,9 @@
 }
 
 bool PictureLayerImpl::ShouldAdjustRasterScale() const {
-  if (is_directly_composited_image_) {
-    float max_scale = std::max(1.f, MinimumContentsScale());
+  if (directly_composited_image_size_) {
+    float desired_raster_scale = GetDirectlyCompositedImageRasterScale();
+    float max_scale = std::max(desired_raster_scale, MinimumContentsScale());
     if (raster_source_scale_ < std::min(ideal_source_scale_, max_scale))
       return true;
     if (raster_source_scale_ > 4 * ideal_source_scale_)
@@ -1121,12 +1141,13 @@
 }
 
 void PictureLayerImpl::RecalculateRasterScales() {
-  if (is_directly_composited_image_) {
+  if (directly_composited_image_size_) {
     if (!raster_source_scale_)
-      raster_source_scale_ = 1.f;
+      raster_source_scale_ = GetDirectlyCompositedImageRasterScale();
 
     float min_scale = MinimumContentsScale();
-    float max_scale = std::max(1.f, MinimumContentsScale());
+    float desired_raster_scale = GetDirectlyCompositedImageRasterScale();
+    float max_scale = std::max(desired_raster_scale, MinimumContentsScale());
     float clamped_ideal_source_scale =
         base::ClampToRange(ideal_source_scale_, min_scale, max_scale);
 
@@ -1464,7 +1485,7 @@
   float device_scale_factor =
       layer_tree_impl() ? layer_tree_impl()->device_scale_factor() : 1;
 
-  if (is_directly_composited_image_) {
+  if (directly_composited_image_size_) {
     *color = DebugColors::ImageLayerBorderColor();
     *width = DebugColors::ImageLayerBorderWidth(device_scale_factor);
   } else {
diff --git a/cc/layers/picture_layer_impl.h b/cc/layers/picture_layer_impl.h
index d2459c4..3888c9f1 100644
--- a/cc/layers/picture_layer_impl.h
+++ b/cc/layers/picture_layer_impl.h
@@ -104,6 +104,8 @@
 
   void SetUseTransformedRasterization(bool use);
 
+  void SetDirectlyCompositedImageSize(base::Optional<gfx::Size>);
+
   size_t GPUMemoryUsageInBytes() const override;
 
   void RunMicroBenchmark(MicroBenchmarkImpl* benchmark) override;
@@ -119,10 +121,6 @@
   // Used for benchmarking
   RasterSource* GetRasterSource() const { return raster_source_.get(); }
 
-  void set_is_directly_composited_image(bool is_directly_composited_image) {
-    is_directly_composited_image_ = is_directly_composited_image;
-  }
-
   // This enum is the return value of the InvalidateRegionForImages() call. The
   // possible values represent the fact that there are no images on this layer
   // (kNoImages), the fact that the invalidation images don't cause an
@@ -174,6 +172,7 @@
   float MaximumContentsScale() const;
   void UpdateViewportRectForTilePriorityInContentSpace();
   PictureLayerImpl* GetRecycledTwinLayer() const;
+  float GetDirectlyCompositedImageRasterScale() const;
 
   void SanityCheckTilingState() const;
 
@@ -230,9 +229,10 @@
 
   bool nearest_neighbor_ : 1;
   bool use_transformed_rasterization_ : 1;
-  bool is_directly_composited_image_ : 1;
   bool can_use_lcd_text_ : 1;
 
+  base::Optional<gfx::Size> directly_composited_image_size_;
+
   // Use this instead of |visible_layer_rect()| for tiling calculations. This
   // takes external viewport and transform for tile priority into account.
   gfx::Rect viewport_rect_for_tile_priority_in_content_space_;
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 67e1df67..3b5e5877 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -5194,7 +5194,7 @@
   std::unique_ptr<FakePictureLayerImpl> pending_layer =
       FakePictureLayerImpl::Create(pending_tree, root_id(),
                                    pending_raster_source);
-  pending_layer->set_is_directly_composited_image(true);
+  pending_layer->SetDirectlyCompositedImageSize(layer_bounds);
   pending_layer->SetDrawsContent(true);
   FakePictureLayerImpl* pending_layer_ptr = pending_layer.get();
   pending_tree->SetRootLayerForTesting(std::move(pending_layer));
@@ -5219,7 +5219,7 @@
   std::unique_ptr<FakePictureLayerImpl> pending_layer =
       FakePictureLayerImpl::Create(pending_tree, root_id(),
                                    pending_raster_source);
-  pending_layer->set_is_directly_composited_image(true);
+  pending_layer->SetDirectlyCompositedImageSize(layer_bounds);
   pending_layer->SetDrawsContent(true);
   FakePictureLayerImpl* pending_layer_ptr = pending_layer.get();
   pending_tree->SetRootLayerForTesting(std::move(pending_layer));
@@ -5277,7 +5277,7 @@
       FakeRasterSource::CreateFilled(layer_bounds);
 
   SetupPendingTree(pending_raster_source);
-  pending_layer()->set_is_directly_composited_image(true);
+  pending_layer()->SetDirectlyCompositedImageSize(layer_bounds);
 
   float expected_contents_scale = 0.25f;
   for (int i = 1; i < 30; ++i) {
diff --git a/cc/metrics/frame_sequence_tracker.cc b/cc/metrics/frame_sequence_tracker.cc
index 1cd55fe..666d58ae 100644
--- a/cc/metrics/frame_sequence_tracker.cc
+++ b/cc/metrics/frame_sequence_tracker.cc
@@ -163,7 +163,7 @@
          main_throughput_.frames_expected > 0;
 }
 
-void FrameSequenceMetrics::ReportMetrics(const std::string& debug_trace) {
+void FrameSequenceMetrics::ReportMetrics(std::string debug_trace) {
   DCHECK_LE(impl_throughput_.frames_produced, impl_throughput_.frames_expected);
   DCHECK_LE(main_throughput_.frames_produced, main_throughput_.frames_expected);
   TRACE_EVENT_NESTABLE_ASYNC_END2(
@@ -368,7 +368,9 @@
       }
       if (metrics->HasEnoughDataForReporting()) {
 #if DCHECK_IS_ON()
-        metrics->ReportMetrics(tracker->frame_sequence_trace_.str());
+        std::string output = tracker->frame_sequence_trace_.str().substr(
+            tracker->ignored_trace_char_count_);
+        metrics->ReportMetrics(std::move(output));
 #else
         metrics->ReportMetrics();
 #endif
@@ -655,10 +657,14 @@
         << TRACKER_DCHECK_MSG;
     --impl_throughput().frames_expected;
 #if DCHECK_IS_ON()
-    DCHECK_LT(impl_throughput().frames_processed,
-              impl_throughput().frames_received)
-        << TRACKER_DCHECK_MSG;
     ++impl_throughput().frames_processed;
+    // If these two are the same, it means that each impl frame is either
+    // no-damage or submitted. That's expected, so we don't need those in the
+    // output of DCHECK.
+    if (impl_throughput().frames_processed == impl_throughput().frames_received)
+      ignored_trace_char_count_ = frame_sequence_trace_.str().size();
+    else
+      NOTREACHED() << TRACKER_DCHECK_MSG;
 #endif
     begin_impl_frame_data_.previous_sequence = 0;
   }
diff --git a/cc/metrics/frame_sequence_tracker.h b/cc/metrics/frame_sequence_tracker.h
index 0b53f1b..2d63973 100644
--- a/cc/metrics/frame_sequence_tracker.h
+++ b/cc/metrics/frame_sequence_tracker.h
@@ -110,7 +110,7 @@
   bool HasEnoughDataForReporting() const;
   bool HasDataLeftForReporting() const;
   // Report related metrics: throughput, checkboarding...
-  void ReportMetrics(const std::string& debug_trace = std::string());
+  void ReportMetrics(std::string debug_trace = std::string());
 
   ThroughputData& impl_throughput() { return impl_throughput_; }
   ThroughputData& main_throughput() { return main_throughput_; }
@@ -431,6 +431,11 @@
   // when DCHECK is on.
   std::stringstream frame_sequence_trace_;
 
+  // |frame_sequence_trace_| can be very long, in some cases we just need a
+  // substring of it. This var tells us how many chars can be ignored from the
+  // beginning of that debug string.
+  unsigned ignored_trace_char_count_ = 0;
+
   // If ReportBeginImplFrame is never called on a arg, then ReportBeginMainFrame
   // should ignore that arg.
   base::flat_set<viz::BeginFrameId> impl_frames_;
diff --git a/cc/trees/layer_tree_host_pixeltest_masks.cc b/cc/trees/layer_tree_host_pixeltest_masks.cc
index cf40c8f..df967f6 100644
--- a/cc/trees/layer_tree_host_pixeltest_masks.cc
+++ b/cc/trees/layer_tree_host_pixeltest_masks.cc
@@ -321,9 +321,8 @@
   MaskContentLayerClient client(mask_bounds_);
   scoped_refptr<PictureImageLayer> mask_layer = PictureImageLayer::Create();
 
-  sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(200, 200);
+  sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(50, 50);
   SkCanvas* canvas = surface->getCanvas();
-  canvas->scale(SkIntToScalar(4), SkIntToScalar(4));
   scoped_refptr<DisplayItemList> mask_display_list =
       client.PaintContentsToDisplayList(
           ContentLayerClient::PAINTING_BEHAVIOR_NORMAL);
@@ -355,9 +354,8 @@
   mask->SetIsDrawable(true);
   mask->SetBounds(mask_bounds);
 
-  sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(200, 200);
+  sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(50, 50);
   SkCanvas* canvas = surface->getCanvas();
-  canvas->scale(SkIntToScalar(4), SkIntToScalar(4));
   MaskContentLayerClient client(mask_bounds);
   scoped_refptr<DisplayItemList> mask_display_list =
       client.PaintContentsToDisplayList(
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index ba83db7..14651ae 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -255,6 +255,7 @@
     "//chrome/browser/android/thin_webview:factory_java",
     "//chrome/browser/android/thin_webview:java",
     "//chrome/browser/download/android:java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/image_fetcher:java",
     "//chrome/browser/notifications/chime/android:java",
     "//chrome/browser/preferences:java",
@@ -263,6 +264,7 @@
     "//chrome/browser/share/android:screenshot_java",
     "//chrome/browser/ui/android/appmenu:factory_java",
     "//chrome/browser/ui/android/appmenu:java",
+    "//chrome/browser/ui/android/native_page:java",
     "//chrome/browser/ui/android/widget:java",
     "//chrome/browser/ui/messages/android:java",
     "//chrome/browser/util:java",
@@ -529,6 +531,7 @@
     "//chrome/android/features/media_router:jni_headers",
     "//chrome/android/public/profiles:jni_headers",
     "//chrome/browser/download/android:jni_headers",
+    "//chrome/browser/flags:jni_headers",
     "//chrome/browser/image_fetcher:jni_headers",
     "//chrome/browser/preferences:jni_headers",
     "//chrome/browser/touch_to_fill/android:jni_headers",
@@ -769,6 +772,7 @@
     "//chrome/browser/android/metrics:ukm_java_test_support",
     "//chrome/browser/android/metrics:ukm_javatests",
     "//chrome/browser/download/android:java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/preferences:java",
     "//chrome/browser/settings:java",
     "//chrome/browser/ui/android/appmenu:java",
@@ -2624,7 +2628,6 @@
     "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java",
     "java/src/org/chromium/chrome/browser/feedback/SystemInfoFeedbackSource.java",
     "java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java",
-    "java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java",
     "java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
     "java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java",
     "java/src/org/chromium/chrome/browser/gesturenav/CompositorNavigationGlow.java",
@@ -2854,6 +2857,7 @@
     "//base:jni_java",
     "//base/test:test_support_java",
     "//chrome/android:chrome_java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/util:java",
     "//chrome/test/android:chrome_java_test_support",
     "//components/payments/content/android:java",
diff --git a/chrome/android/DEPS b/chrome/android/DEPS
index 96b273a4..0cdae9d 100644
--- a/chrome/android/DEPS
+++ b/chrome/android/DEPS
@@ -2,6 +2,7 @@
   "+chrome/browser/notifications",
   "+chrome/browser/preferences/android/java",
   "+chrome/browser/settings/android",
+  "+chrome/browser/ui/android/native_page",
   "+chrome/browser/ui/android/widget",
   "+chrome/browser/util/android/java",
   "+components/app_modal/android",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index 612dc03..b704ce5 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -734,7 +734,6 @@
   "java/src/org/chromium/chrome/browser/firstrun/TabbedModeFirstRunActivity.java",
   "java/src/org/chromium/chrome/browser/firstrun/ToSAckedReceiver.java",
   "java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java",
-  "java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java",
   "java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
   "java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java",
   "java/src/org/chromium/chrome/browser/fullscreen/BrowserStateBrowserControlsVisibilityDelegate.java",
@@ -933,14 +932,10 @@
   "java/src/org/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcher.java",
   "java/src/org/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl.java",
   "java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java",
-  "java/src/org/chromium/chrome/browser/native_page/BasicNativePage.java",
   "java/src/org/chromium/chrome/browser/native_page/BrowserControlsMarginSupplier.java",
   "java/src/org/chromium/chrome/browser/native_page/ContextMenuManager.java",
-  "java/src/org/chromium/chrome/browser/native_page/FrozenNativePage.java",
-  "java/src/org/chromium/chrome/browser/native_page/NativePage.java",
   "java/src/org/chromium/chrome/browser/native_page/NativePageAssassin.java",
   "java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java",
-  "java/src/org/chromium/chrome/browser/native_page/NativePageHost.java",
   "java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegate.java",
   "java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java",
   "java/src/org/chromium/chrome/browser/net/nqe/NetworkQualityObserver.java",
diff --git a/chrome/android/features/keyboard_accessory/internal/BUILD.gn b/chrome/android/features/keyboard_accessory/internal/BUILD.gn
index af264c5..4955497 100644
--- a/chrome/android/features/keyboard_accessory/internal/BUILD.gn
+++ b/chrome/android/features/keyboard_accessory/internal/BUILD.gn
@@ -17,6 +17,7 @@
     "//chrome/android:chrome_public_java",
     "//chrome/android/features/keyboard_accessory/public:public_java",
     "//chrome/android/public/profiles:java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/ui/android/widget:java",
     "//chrome/browser/util:java",
     "//components/autofill/android:autofill_java",
diff --git a/chrome/android/features/start_surface/internal/BUILD.gn b/chrome/android/features/start_surface/internal/BUILD.gn
index c7e9764..a260b464 100644
--- a/chrome/android/features/start_surface/internal/BUILD.gn
+++ b/chrome/android/features/start_surface/internal/BUILD.gn
@@ -47,6 +47,7 @@
     "//base:base_java",
     "//chrome/android:chrome_java",
     "//chrome/android/third_party/compositor_animator:compositor_animator_java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/preferences:java",
     "//chrome/browser/ui/android/widget:java",
     "//components/browser_ui/widget/android:java",
diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn
index 9c2fde5..0e5177d 100644
--- a/chrome/android/features/tab_ui/BUILD.gn
+++ b/chrome/android/features/tab_ui/BUILD.gn
@@ -123,6 +123,7 @@
     "//chrome/android/features/start_surface/internal:java",
     "//chrome/android/public/profiles:java",
     "//chrome/app:java_strings_grd",
+    "//chrome/browser/flags:java",
     "//chrome/browser/ui/android/strings:ui_strings_grd",
     "//chrome/browser/ui/android/widget:java",
     "//chrome/browser/ui/messages/android:java",
diff --git a/chrome/android/features/vr/BUILD.gn b/chrome/android/features/vr/BUILD.gn
index 8500ffe..c8e2e14 100644
--- a/chrome/android/features/vr/BUILD.gn
+++ b/chrome/android/features/vr/BUILD.gn
@@ -67,6 +67,7 @@
     "//base:base_java",
     "//base:jni_java",
     "//chrome/android:chrome_java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/preferences:java",
     "//chrome/browser/util:java",
     "//components/browser_ui/modaldialog/android:java",
diff --git a/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrCompositorSurfaceManager.java b/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrCompositorSurfaceManager.java
index 56928f6..29801964 100644
--- a/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrCompositorSurfaceManager.java
+++ b/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrCompositorSurfaceManager.java
@@ -98,9 +98,6 @@
     public void recreateSurface() {}
 
     @Override
-    public void recreateTranslucentSurfaceForSurfaceControl() {}
-
-    @Override
     public void setBackgroundDrawable(Drawable background) {}
 
     @Override
diff --git a/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrFeedbackStatus.java b/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrFeedbackStatus.java
index bf5b9e9..37a1a74 100644
--- a/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrFeedbackStatus.java
+++ b/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrFeedbackStatus.java
@@ -4,8 +4,9 @@
 
 package org.chromium.chrome.browser.vr;
 
-import org.chromium.base.ContextUtils;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
 
 /**
  * Gets and sets preferences related to the status of the Vr feedback infobar.
@@ -14,9 +15,6 @@
     private static final String FEEDBACK_FREQUENCY_PARAM_NAME = "feedback_frequency";
     private static final int DEFAULT_FEEDBACK_FREQUENCY = 10;
 
-    private static final String VR_FEEDBACK_OPT_OUT = "VR_FEEDBACK_OPT_OUT";
-    private static final String VR_EXIT_TO_2D_COUNT = "VR_EXIT_TO_2D_COUNT";
-
     /**
      * Returns how often we should show the feedback prompt.
      */
@@ -31,17 +29,16 @@
      * @param optOut Whether the VR feedback option has been opted-out of.
      */
     public static void setFeedbackOptOut(boolean optOut) {
-        ContextUtils.getAppSharedPreferences()
-                .edit()
-                .putBoolean(VR_FEEDBACK_OPT_OUT, optOut)
-                .apply();
+        SharedPreferencesManager.getInstance().writeBoolean(
+                ChromePreferenceKeys.VR_FEEDBACK_OPT_OUT, optOut);
     }
 
     /**
      * Returns whether the user opted out of entering feedback for their VR experience.
      */
     public static boolean getFeedbackOptOut() {
-        return ContextUtils.getAppSharedPreferences().getBoolean(VR_FEEDBACK_OPT_OUT, false);
+        return SharedPreferencesManager.getInstance().readBoolean(
+                ChromePreferenceKeys.VR_FEEDBACK_OPT_OUT, false);
     }
 
     /**
@@ -49,7 +46,8 @@
      * @param count The number of times the user exited VR and entered 2D browsing mode
      */
     public static void setUserExitedAndEntered2DCount(int count) {
-        ContextUtils.getAppSharedPreferences().edit().putInt(VR_EXIT_TO_2D_COUNT, count).apply();
+        SharedPreferencesManager.getInstance().writeInt(
+                ChromePreferenceKeys.VR_EXIT_TO_2D_COUNT, count);
     }
 
     /**
@@ -57,6 +55,7 @@
      * mode.
      */
     public static int getUserExitedAndEntered2DCount() {
-        return ContextUtils.getAppSharedPreferences().getInt(VR_EXIT_TO_2D_COUNT, 0);
+        return SharedPreferencesManager.getInstance().readInt(
+                ChromePreferenceKeys.VR_EXIT_TO_2D_COUNT, 0);
     }
 }
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java
index 1f373ed..79317d27 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java
@@ -373,15 +373,6 @@
                 mNativeFeedLoggingBridge, FeedLoggingBridge.this);
     }
 
-    private void onManageInterestsClicked(int position) {
-        // Bridge could have been destroyed for policy when this is called.
-        // See https://crbug.com/901414.
-        if (mNativeFeedLoggingBridge == 0) return;
-
-        FeedLoggingBridgeJni.get().onManageInterestsClicked(
-                mNativeFeedLoggingBridge, FeedLoggingBridge.this, position);
-    }
-
     /**
      * One-shot reporter that records the first time the user scrolls in the {@link Stream}.
      */
@@ -463,7 +454,5 @@
         void onContentTargetVisited(long nativeFeedLoggingBridge, FeedLoggingBridge caller,
                 long visitTimeMs, boolean isOffline, boolean returnToNtp);
         void reportScrolledAfterOpen(long nativeFeedLoggingBridge, FeedLoggingBridge caller);
-        void onManageInterestsClicked(
-                long nativeFeedLoggingBridge, FeedLoggingBridge caller, int position);
     }
 }
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java
index dbd407bc..09ba9ed 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java
@@ -23,7 +23,6 @@
 import org.chromium.chrome.browser.feed.library.api.host.action.ActionApi;
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.chrome.browser.native_page.ContextMenuManager;
-import org.chromium.chrome.browser.native_page.NativePageHost;
 import org.chromium.chrome.browser.ntp.NewTabPage;
 import org.chromium.chrome.browser.ntp.NewTabPageLayout;
 import org.chromium.chrome.browser.ntp.NewTabPageUma;
@@ -33,6 +32,7 @@
 import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
 import org.chromium.chrome.browser.tab.TabImpl;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.ui.base.DeviceFormFactor;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
index 31ae7ed..fed94f5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
@@ -25,10 +25,10 @@
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.favicon.LargeIconBridge;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
-import org.chromium.chrome.browser.native_page.BasicNativePage;
 import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
 import org.chromium.chrome.browser.ui.widget.dragreorder.DragStateDelegate;
 import org.chromium.chrome.browser.util.ConversionUtils;
 import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
index 24143cfb..c31e4c8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
@@ -8,8 +8,8 @@
 
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.native_page.BasicNativePage;
-import org.chromium.chrome.browser.native_page.NativePageHost;
+import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java
index d6259fb9..1b49569 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java
@@ -52,14 +52,6 @@
     void recreateSurface();
 
     /**
-     * Called by client to re-create the translucent surface after surface control is enabled. For
-     * surface control mode, the translucent surface should have a different z-order and should be
-     * recreated if the surface control mode is changed.
-     * TODO(crbug.com/1031636): Remove this method once SurfaceControl is always enabled on Q.
-     */
-    void recreateTranslucentSurfaceForSurfaceControl();
-
-    /**
      * Update the background drawable on all surfaces.
      */
     void setBackgroundDrawable(Drawable background);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java
index 880329e..fab9e95 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java
@@ -55,8 +55,7 @@
         // Parent ViewGroup, or null.
         private ViewGroup mParent;
 
-        public SurfaceState(Context context, int format, boolean supportMediaOverlay,
-                SurfaceHolder.Callback2 callback) {
+        public SurfaceState(Context context, int format, SurfaceHolder.Callback2 callback) {
             surfaceView = new SurfaceView(context);
 
             // Media overlays require a translucent surface for the compositor which should be
@@ -66,9 +65,7 @@
             // stacked on top of the translucent one, the framework doesn't draw any content
             // underneath it and shows its background instead when it has no content during the
             // transition.
-            if (format == PixelFormat.TRANSLUCENT && supportMediaOverlay) {
-                surfaceView.setZOrderMediaOverlay(true);
-            }
+            if (format == PixelFormat.TRANSLUCENT) surfaceView.setZOrderMediaOverlay(true);
             surfaceView.setVisibility(View.INVISIBLE);
             surfaceHolder().setFormat(format);
             surfaceHolder().addCallback(callback);
@@ -110,7 +107,7 @@
     private static final String TAG = "CompositorSurfaceMgr";
 
     // SurfaceView with a translucent PixelFormat.
-    private SurfaceState mTranslucent;
+    private final SurfaceState mTranslucent;
 
     // SurfaceView with an opaque PixelFormat.
     private final SurfaceState mOpaque;
@@ -130,15 +127,12 @@
     // View to which we'll attach the SurfaceView.
     private final ViewGroup mParentView;
 
-    public CompositorSurfaceManagerImpl(ViewGroup parentView, SurfaceManagerCallbackTarget client,
-            boolean supportMediaOverlay) {
+    public CompositorSurfaceManagerImpl(ViewGroup parentView, SurfaceManagerCallbackTarget client) {
         mParentView = parentView;
         mClient = client;
 
-        mTranslucent = new SurfaceState(
-                parentView.getContext(), PixelFormat.TRANSLUCENT, supportMediaOverlay, this);
-        mOpaque = new SurfaceState(
-                mParentView.getContext(), PixelFormat.OPAQUE, supportMediaOverlay, this);
+        mTranslucent = new SurfaceState(parentView.getContext(), PixelFormat.TRANSLUCENT, this);
+        mOpaque = new SurfaceState(mParentView.getContext(), PixelFormat.OPAQUE, this);
     }
 
     /**
@@ -246,18 +240,6 @@
     }
 
     @Override
-    public void recreateTranslucentSurfaceForSurfaceControl() {
-        // Recreate the translucent surface only if it hasn't been used or requested by client yet.
-        // This should be very early in the flow and until now the opaque one should be the one
-        // being used.
-        if (mTranslucent.isAttached() || mTranslucent == mRequestedByClient) return;
-
-        mTranslucent.surfaceHolder().removeCallback(this);
-        mTranslucent =
-                new SurfaceState(mParentView.getContext(), PixelFormat.TRANSLUCENT, false, this);
-    }
-
-    @Override
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
         SurfaceState state = getStateForHolder(holder);
         assert state != null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
index 0da84cdf..ecebe3f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -134,7 +134,7 @@
             return;
         }
 
-        mCompositorSurfaceManager = new CompositorSurfaceManagerImpl(this, this, false);
+        mCompositorSurfaceManager = new CompositorSurfaceManagerImpl(this, this);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
             mScreenStateReceiver = new ScreenStateReceiverWorkaround();
         }
@@ -343,19 +343,6 @@
      * @param enabled Whether to enter or leave overlay immersive ar mode.
      */
     public void setOverlayImmersiveArMode(boolean enabled) {
-        if (mIsSurfaceControlEnabled) {
-            // SurfaceControl doesn't mark the translucent SurfaceView as a media overlay by
-            // default, but we need that to allow the DOM content drawn by the compositor to show
-            // above the WebXR content. Replace the surface manager with a customized one
-            // for the duration of the immersive-ar session.
-            if (enabled) {
-                mCompositorSurfaceManager.shutDown();
-                createCompositorSurfaceManager(true);
-            } else {
-                mCompositorSurfaceManager.shutDown();
-                createCompositorSurfaceManager();
-            }
-        }
         setOverlayVideoMode(enabled);
         CompositorViewJni.get().setOverlayImmersiveArMode(
                 mNativeCompositorView, CompositorView.this, enabled);
@@ -500,7 +487,6 @@
     @CalledByNative
     private void notifyWillUseSurfaceControl() {
         mIsSurfaceControlEnabled = true;
-        mCompositorSurfaceManager.recreateTranslucentSurfaceForSurfaceControl();
     }
 
     /**
@@ -615,21 +601,13 @@
         createCompositorSurfaceManager();
     }
 
-    private void createCompositorSurfaceManager(boolean supportMediaOverlay) {
-        mCompositorSurfaceManager =
-                new CompositorSurfaceManagerImpl(this, this, supportMediaOverlay);
+    private void createCompositorSurfaceManager() {
+        mCompositorSurfaceManager = new CompositorSurfaceManagerImpl(this, this);
         mCompositorSurfaceManager.requestSurface(getSurfacePixelFormat());
         CompositorViewJni.get().setNeedsComposite(mNativeCompositorView, CompositorView.this);
         mCompositorSurfaceManager.setVisibility(getVisibility());
     }
 
-    private void createCompositorSurfaceManager() {
-        // If surface control is available, video overlays don't need a translucent media
-        // overlay view, so disable support for that. This lets other components such
-        // as ThinWebView use ZOrderMediaOverlay.
-        createCompositorSurfaceManager(!mIsSurfaceControlEnabled);
-    }
-
     /**
      * Notifies the native compositor that a tab change has occurred. This
      * should be called when changing to a valid tab.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java
index d82fa3c..d9a087a66 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java
@@ -34,10 +34,10 @@
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.FeatureUtilities;
-import org.chromium.chrome.browser.native_page.FrozenNativePage;
-import org.chromium.chrome.browser.native_page.NativePage;
 import org.chromium.chrome.browser.tab.SadTab;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.ui.native_page.FrozenNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.usage_stats.SuspendedTab;
 import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.display.DisplayAndroid;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
index ee5860d..5af6ebfb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
@@ -13,8 +13,8 @@
 import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator;
 import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactory;
 import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
-import org.chromium.chrome.browser.native_page.BasicNativePage;
-import org.chromium.chrome.browser.native_page.NativePageHost;
+import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java b/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java
index fd840ae..0dcbc75 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java
@@ -23,9 +23,7 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.favicon.RoundedIconGenerator;
-import org.chromium.chrome.browser.native_page.BasicNativePage;
 import org.chromium.chrome.browser.native_page.ContextMenuManager;
-import org.chromium.chrome.browser.native_page.NativePageHost;
 import org.chromium.chrome.browser.native_page.NativePageNavigationDelegate;
 import org.chromium.chrome.browser.native_page.NativePageNavigationDelegateImpl;
 import org.chromium.chrome.browser.profiles.Profile;
@@ -33,6 +31,8 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabImpl;
 import org.chromium.chrome.browser.tab.TabObserver;
+import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.content_public.browser.NavigationController;
 import org.chromium.content_public.browser.NavigationEntry;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
index fe091ace..991dc2e36b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
@@ -10,8 +10,8 @@
 
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.native_page.BasicNativePage;
-import org.chromium.chrome.browser.native_page.NativePageHost;
+import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/BasicNativePage.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/BasicNativePage.java
deleted file mode 100644
index 6899cf4..0000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/BasicNativePage.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2016 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.native_page;
-
-import android.graphics.Rect;
-import android.view.View;
-import android.widget.FrameLayout.LayoutParams;
-
-import org.chromium.base.Callback;
-import org.chromium.base.supplier.DestroyableObservableSupplier;
-import org.chromium.components.browser_ui.styles.ChromeColors;
-import org.chromium.content_public.browser.LoadUrlParams;
-
-/**
- * A basic implementation of a white {@link NativePage} that docks below the toolbar. This class
- * handles default behavior for background color, URL updates and margins.
- *
- * Sub-classes must call {@link #initWithView(View)} to finish setup.
- */
-public abstract class BasicNativePage implements NativePage {
-    private final NativePageHost mHost;
-    private final int mBackgroundColor;
-    private DestroyableObservableSupplier<Rect> mMarginSupplier;
-    private Callback<Rect> mMarginObserver;
-    private View mView;
-    private String mUrl;
-
-    protected BasicNativePage(NativePageHost host) {
-        mHost = host;
-        mBackgroundColor =
-                ChromeColors.getPrimaryBackgroundColor(host.getContext().getResources(), false);
-    }
-
-    /**
-     * Sets the View contained in this native page and finishes BasicNativePage initialization.
-     */
-    protected void initWithView(View view) {
-        assert mView == null : "initWithView() should only be called once";
-        mView = view;
-
-        mMarginObserver = result -> updateMargins(result);
-        mMarginSupplier = mHost.createDefaultMarginSupplier();
-        mMarginSupplier.addObserver(mMarginObserver);
-
-        // Update margins immediately if available rather than waiting for a posted notification.
-        // Waiting for a posted notification could allow a layout pass to occur before the margins
-        // are set.
-        if (mMarginSupplier.get() != null) {
-            updateMargins(mMarginSupplier.get());
-        }
-    }
-
-    @Override
-    public final View getView() {
-        assert mView != null : "Need to call initWithView()";
-
-        return mView;
-    }
-
-    @Override
-    public String getUrl() {
-        return mUrl;
-    }
-
-    @Override
-    public int getBackgroundColor() {
-        return mBackgroundColor;
-    }
-
-    @Override
-    public boolean needsToolbarShadow() {
-        return true;
-    }
-
-    @Override
-    public void updateForUrl(String url) {
-        mUrl = url;
-    }
-
-    @Override
-    public void destroy() {
-        if (mMarginSupplier != null) {
-            mMarginSupplier.removeObserver(mMarginObserver);
-            mMarginSupplier.destroy();
-        }
-    }
-
-    /**
-     * Tells the native page framework that the url should be changed.
-     * @param url The URL of the page.
-     * @param replaceLastUrl Whether the last navigation entry should be replaced with the new URL.
-     */
-    public void onStateChange(String url, boolean replaceLastUrl) {
-        if (url.equals(mUrl)) return;
-        LoadUrlParams params = new LoadUrlParams(url);
-        params.setShouldReplaceCurrentEntry(replaceLastUrl);
-        mHost.loadUrl(params, /* incognito = */ false);
-    }
-    /**
-     * Updates the top margin depending on whether the browser controls are shown or hidden.
-     */
-    private void updateMargins(Rect margins) {
-        LayoutParams layoutParams =
-                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
-        layoutParams.setMargins(margins.left, margins.top, margins.left, margins.bottom);
-        getView().setLayoutParams(layoutParams);
-    }
-}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/FrozenNativePage.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/FrozenNativePage.java
deleted file mode 100644
index 27e5086..0000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/FrozenNativePage.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2014 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.native_page;
-
-import android.view.View;
-
-/**
- * A empty stand-in for a native page. An inactive NativePage may be replaced with a
- * FrozenNativePage to free up resources.
- *
- * Any method may be called on this object, except for getView(), which will trigger an assert and
- * return null.
- */
-public class FrozenNativePage implements NativePage {
-    private final String mUrl;
-    private final String mHost;
-    private final String mTitle;
-    private final int mBackgroundColor;
-
-    /**
-     * Creates a FrozenNativePage to replace the given NativePage and destroys the NativePage.
-     */
-    public static FrozenNativePage freeze(NativePage nativePage) {
-        FrozenNativePage fnp = new FrozenNativePage(nativePage);
-        nativePage.destroy();
-        return fnp;
-    }
-
-    private FrozenNativePage(NativePage nativePage) {
-        mHost = nativePage.getHost();
-        mUrl = nativePage.getUrl();
-        mTitle = nativePage.getTitle();
-        mBackgroundColor = nativePage.getBackgroundColor();
-    }
-
-    @Override
-    public View getView() {
-        assert false;
-        return null;
-    }
-
-    @Override
-    public String getTitle() {
-        return mTitle;
-    }
-
-    @Override
-    public String getUrl() {
-        return mUrl;
-    }
-
-    @Override
-    public String getHost() {
-        return mHost;
-    }
-
-    @Override
-    public int getBackgroundColor() {
-        return mBackgroundColor;
-    }
-
-    @Override
-    public boolean needsToolbarShadow() {
-        return true;
-    }
-
-    @Override
-    public void updateForUrl(String url) {
-    }
-
-    @Override
-    public boolean isFrozen() {
-        return true;
-    }
-
-    @Override
-    public void destroy() {
-    }
-}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePage.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePage.java
deleted file mode 100644
index ff1a9f8..0000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePage.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2013 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.native_page;
-
-import android.view.View;
-
-/**
- * An interface for pages that will be using Android views instead of html/rendered Web content.
- */
-public interface NativePage {
-    /**
-     * @return The View to display the page. This is always non-null.
-     */
-    View getView();
-
-    /**
-     * @return The title of the page.
-     */
-    String getTitle();
-
-    /**
-     * @return The URL of the page.
-     */
-    String getUrl();
-
-    /**
-     * @return The hostname for this page, e.g. "newtab" or "bookmarks".
-     */
-    String getHost();
-
-    /**
-     * @return The background color of the page.
-     */
-    int getBackgroundColor();
-
-    /**
-     * @return True if the native page needs the toolbar shadow to be drawn.
-     */
-    boolean needsToolbarShadow();
-
-    /**
-     * Updates the native page based on the given url.
-     */
-    void updateForUrl(String url);
-
-    /**
-     * @return {@code true} if the native page is in inactive/frozen state.
-     */
-    default boolean isFrozen() {
-        return false;
-    }
-
-    /**
-     * Called after a page has been removed from the view hierarchy and will no longer be used.
-     */
-    void destroy();
-}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
index 3b01e24..4742088 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -30,6 +30,8 @@
 import org.chromium.chrome.browser.tab.TabImpl;
 import org.chromium.chrome.browser.tab.TabLaunchType;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.content_public.browser.LoadUrlParams;
 
@@ -44,8 +46,8 @@
 
     @VisibleForTesting
     static class NativePageBuilder {
-        protected NativePage buildNewTabPage(ChromeActivity activity, Tab tab,
-                TabModelSelector tabModelSelector) {
+        protected NativePage buildNewTabPage(
+                ChromeActivity activity, Tab tab, TabModelSelector tabModelSelector) {
             ActivityTabProvider activityTabProvider = activity.getActivityTabProvider();
             ActivityLifecycleDispatcher activityLifecycleDispatcher =
                     activity.getLifecycleDispatcher();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageHost.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageHost.java
deleted file mode 100644
index d8cea68..0000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageHost.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-
-package org.chromium.chrome.browser.native_page;
-
-import android.content.Context;
-import android.graphics.Rect;
-
-import org.chromium.base.supplier.DestroyableObservableSupplier;
-import org.chromium.content_public.browser.LoadUrlParams;
-
-/**
- * This interface represents a view that is capable of hosting a NativePage.
- */
-public interface NativePageHost {
-    /**
-     * @return A context to use for inflating views and obtaining resources.
-     */
-    Context getContext();
-
-    /**
-     * Load a non-native URL in an active tab. This should be used to either navigate away from
-     * the current native page or load external content in a content area (i.e. a tab or web
-     * contents).
-     * @param urlParams The params describing the URL to be loaded.
-     * @param incognito Whether the URL should be loaded in incognito mode.
-     */
-    void loadUrl(LoadUrlParams urlParams, boolean incognito);
-
-    /**
-     * If the host is a tab, get the ID of its parent.
-     * @return The ID of the parent tab or INVALID_TAB_ID.
-     */
-    int getParentId();
-
-    /** @return whether the hosted native page is currently visible. */
-    boolean isVisible();
-
-    /**
-     * Creates a default margin supplier. Once created, the NativePage is responsible for calling
-     * {@link DestroyableObservableSupplier#destroy()} to clean-up the supplier once it is no longer
-     * needed.
-     * @return A {@link DestroyableObservableSupplier} to use for setting margins.
-     */
-    DestroyableObservableSupplier<Rect> createDefaultMarginSupplier();
-}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
index 97a51dd0..ed2d313 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
@@ -18,6 +18,7 @@
 import org.chromium.chrome.browser.tab.TabLaunchType;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController.SheetState;
 import org.chromium.content_public.browser.LoadUrlParams;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/FakeboxDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/FakeboxDelegate.java
index 2be47eed..5864579 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/FakeboxDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/FakeboxDelegate.java
@@ -6,10 +6,10 @@
 
 import androidx.annotation.Nullable;
 
-import org.chromium.chrome.browser.native_page.NativePage;
 import org.chromium.chrome.browser.omnibox.LocationBar.OmniboxFocusReason;
 import org.chromium.chrome.browser.omnibox.LocationBarVoiceRecognitionHandler;
 import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 
 /**
  * Handles user interaction with the fakebox (the URL bar in the NTP and tasks surface).
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/IncognitoNewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/IncognitoNewTabPage.java
index 787856e..d651056 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/IncognitoNewTabPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/IncognitoNewTabPage.java
@@ -17,10 +17,10 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider;
 import org.chromium.chrome.browser.help.HelpAndFeedback;
-import org.chromium.chrome.browser.native_page.BasicNativePage;
-import org.chromium.chrome.browser.native_page.NativePageHost;
 import org.chromium.chrome.browser.ntp.IncognitoNewTabPageView.IncognitoNewTabPageManager;
 import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.chrome.browser.vr.VrModuleProvider;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
index 6545bc5..3c87b5d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
@@ -35,8 +35,6 @@
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.chrome.browser.lifecycle.LifecycleObserver;
 import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver;
-import org.chromium.chrome.browser.native_page.NativePage;
-import org.chromium.chrome.browser.native_page.NativePageHost;
 import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
 import org.chromium.chrome.browser.ntp.cards.ItemViewType;
 import org.chromium.chrome.browser.ntp.cards.NewTabPageAdapter;
@@ -61,6 +59,8 @@
 import org.chromium.chrome.browser.tab.TabSelectionType;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.chrome.browser.util.UrlUtilities;
 import org.chromium.chrome.browser.vr.VrModuleProvider;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java
index 6ee740a..24b0b86 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java
@@ -24,8 +24,8 @@
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider;
 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
-import org.chromium.chrome.browser.native_page.NativePage;
-import org.chromium.chrome.browser.native_page.NativePageHost;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.base.ViewUtils;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
index 31c1c75..a64c588 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -37,7 +37,6 @@
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.WindowDelegate;
 import org.chromium.chrome.browser.locale.LocaleManager;
-import org.chromium.chrome.browser.native_page.NativePage;
 import org.chromium.chrome.browser.native_page.NativePageFactory;
 import org.chromium.chrome.browser.ntp.FakeboxDelegate;
 import org.chromium.chrome.browser.ntp.NewTabPage;
@@ -58,6 +57,7 @@
 import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
 import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
 import org.chromium.chrome.browser.toolbar.top.ToolbarActionModeCallback;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.ui.widget.CompositeTouchDelegate;
 import org.chromium.chrome.browser.util.AccessibilityUtil;
 import org.chromium.chrome.browser.util.ColorUtils;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
index 3ef59fb..a871575 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
@@ -6,7 +6,6 @@
 
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
-import org.chromium.chrome.browser.native_page.NativePageHost;
 import org.chromium.chrome.browser.native_page.NativePageNavigationDelegateImpl;
 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
 import org.chromium.chrome.browser.ntp.NewTabPageUma;
@@ -16,6 +15,7 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.components.offline_items_collection.LaunchLocation;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.common.Referrer;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsUiDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsUiDelegateImpl.java
index 6126c32..e8837d4c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsUiDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsUiDelegateImpl.java
@@ -7,11 +7,11 @@
 import androidx.annotation.Nullable;
 
 import org.chromium.base.DiscardableReferencePool;
-import org.chromium.chrome.browser.native_page.NativePageHost;
 import org.chromium.chrome.browser.ntp.snippets.EmptySuggestionsSource;
 import org.chromium.chrome.browser.ntp.snippets.SuggestionsSource;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS
index 28d1044..81c8f9da 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS
@@ -9,6 +9,7 @@
   "+chrome/android/java/src/org/chromium/chrome/browser/tab",
   "+chrome/android/java/src/org/chromium/chrome/browser/webapps/WebDisplayMode.java",
   "+chrome/browser/preferences",
+  "+chrome/browser/ui/android/native_page",
   "+chrome/browser/ui/android/widget",
   "+components/browser_ui/styles/android",
   "+content/public/android/java/src/org/chromium/content_public",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
index a9d9060..a5ced47 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
@@ -11,7 +11,7 @@
 import androidx.annotation.Nullable;
 
 import org.chromium.base.UserDataHost;
-import org.chromium.chrome.browser.native_page.NativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.components.embedder_support.view.ContentView;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.browser.WebContents;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
index 80935d70..23f8197 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
@@ -4,8 +4,6 @@
 
 package org.chromium.chrome.browser.tab;
 
-import static org.chromium.chrome.browser.tab.Tab.INVALID_TAB_ID;
-
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
@@ -32,8 +30,6 @@
 import org.chromium.chrome.browser.WebContentsFactory;
 import org.chromium.chrome.browser.content.ContentUtils;
 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator;
-import org.chromium.chrome.browser.native_page.FrozenNativePage;
-import org.chromium.chrome.browser.native_page.NativePage;
 import org.chromium.chrome.browser.native_page.NativePageAssassin;
 import org.chromium.chrome.browser.native_page.NativePageFactory;
 import org.chromium.chrome.browser.night_mode.NightModeUtils;
@@ -43,6 +39,8 @@
 import org.chromium.chrome.browser.rlz.RevenueStats;
 import org.chromium.chrome.browser.tab.TabState.WebContentsState;
 import org.chromium.chrome.browser.tab.TabUma.TabCreationState;
+import org.chromium.chrome.browser.ui.native_page.FrozenNativePage;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.chrome.browser.vr.VrModuleProvider;
 import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
index 699d900..da82d40 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -58,7 +58,6 @@
 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager.FullscreenListener;
 import org.chromium.chrome.browser.fullscreen.FullscreenOptions;
 import org.chromium.chrome.browser.metrics.OmniboxStartupMetrics;
-import org.chromium.chrome.browser.native_page.NativePage;
 import org.chromium.chrome.browser.native_page.NativePageFactory;
 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
 import org.chromium.chrome.browser.ntp.FakeboxDelegate;
@@ -109,6 +108,7 @@
 import org.chromium.chrome.browser.ui.appmenu.AppMenuObserver;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate;
 import org.chromium.chrome.browser.ui.appmenu.MenuButtonDelegate;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.ui.widget.textbubble.TextBubble;
 import org.chromium.chrome.browser.util.UrlConstants;
 import org.chromium.chrome.browser.widget.ScrimView;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/CustomTabToolbar.java
index 8e19082..5f241ff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/CustomTabToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/CustomTabToolbar.java
@@ -47,7 +47,6 @@
 import org.chromium.chrome.browser.ActivityTabProvider;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.WindowDelegate;
-import org.chromium.chrome.browser.native_page.NativePage;
 import org.chromium.chrome.browser.native_page.NativePageFactory;
 import org.chromium.chrome.browser.ntp.NewTabPage;
 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
@@ -65,6 +64,7 @@
 import org.chromium.chrome.browser.toolbar.ToolbarColors;
 import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
 import org.chromium.chrome.browser.toolbar.ToolbarTabController;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.util.ColorUtils;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.components.browser_ui.widget.TintedDrawable;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImplTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImplTest.java
index c6bbdb4..33938aa1 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImplTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImplTest.java
@@ -129,7 +129,7 @@
         MockitoAnnotations.initMocks(this);
         Activity activity = Robolectric.buildActivity(Activity.class).setup().get();
         mLayout = new FrameLayout(activity);
-        mManager = new CompositorSurfaceManagerImpl(mLayout, mCallback, false);
+        mManager = new CompositorSurfaceManagerImpl(mLayout, mCallback);
     }
 
     private void runDelayedTasks() {
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java
index c913a5b..849713fe 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java
@@ -17,6 +17,7 @@
 import org.chromium.chrome.browser.native_page.NativePageFactory.NativePageType;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.util.UrlConstants;
 
 /**
diff --git a/chrome/android/webapk/libs/client/junit/src/org/chromium/webapk/lib/client/WebApkValidatorTest.java b/chrome/android/webapk/libs/client/junit/src/org/chromium/webapk/lib/client/WebApkValidatorTest.java
index 5d7ba1e7..f58dfdb 100644
--- a/chrome/android/webapk/libs/client/junit/src/org/chromium/webapk/lib/client/WebApkValidatorTest.java
+++ b/chrome/android/webapk/libs/client/junit/src/org/chromium/webapk/lib/client/WebApkValidatorTest.java
@@ -11,6 +11,7 @@
 
 import static org.chromium.webapk.lib.common.WebApkMetaDataKeys.SCOPE;
 import static org.chromium.webapk.lib.common.WebApkMetaDataKeys.START_URL;
+import static org.chromium.webapk.lib.common.WebApkMetaDataKeys.WEB_MANIFEST_URL;
 
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
@@ -46,6 +47,7 @@
     private static final String TEST_STARTURL = "https://non-empty.com/starturl";
     private static final String MAPSLITE_PACKAGE_NAME = "com.google.android.apps.mapslite";
     private static final String MAPSLITE_EXAMPLE_STARTURL = "https://www.google.com/maps";
+    private static final String MANIFEST_URL = "https://www.foo.com/manifest.json";
 
     private static final byte[] EXPECTED_SIGNATURE = new byte[] {48, -126, 3, -121, 48, -126, 2,
             111, -96, 3, 2, 1, 2, 2, 4, 20, -104, -66, -126, 48, 13, 6, 9, 42, -122, 72, -122, -9,
@@ -90,7 +92,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
             assertEquals(WEBAPK_PACKAGE_NAME,
                     WebApkValidator.queryFirstWebApkPackage(
@@ -111,7 +113,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
             assertNull(WebApkValidator.queryFirstWebApkPackage(
                     RuntimeEnvironment.application, URL_OF_WEBAPK));
@@ -132,7 +134,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
             assertNull(WebApkValidator.queryFirstWebApkPackage(
                     RuntimeEnvironment.application, URL_WITHOUT_WEBAPK));
@@ -154,7 +156,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
             assertTrue(WebApkValidator.canWebApkHandleUrl(
                     RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME, URL_OF_WEBAPK));
@@ -176,7 +178,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(SIGNATURE_1), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(SIGNATURE_1), TEST_STARTURL, null));
 
             assertFalse(WebApkValidator.canWebApkHandleUrl(
                     RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME, URL_OF_WEBAPK));
@@ -196,7 +198,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
             assertFalse(WebApkValidator.canWebApkHandleUrl(
                     RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME, URL_OF_WEBAPK));
@@ -218,7 +220,7 @@
 
             mPackageManager.addResolveInfoForIntent(intent, newResolveInfo(WEBAPK_PACKAGE_NAME));
             mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                    WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
             assertFalse(WebApkValidator.canWebApkHandleUrl(
                     RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME, URL_WITHOUT_WEBAPK));
@@ -234,7 +236,7 @@
     @Test
     public void testIsValidWebApkReturnsTrueForValidWebApk() {
         mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+                WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
         assertTrue(
                 WebApkValidator.isValidWebApk(RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME));
@@ -246,8 +248,8 @@
      */
     @Test
     public void testIsValidWebApkFalseForInvalidPackageName() {
-        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                INVALID_WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), TEST_STARTURL));
+        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(INVALID_WEBAPK_PACKAGE_NAME,
+                new Signature(EXPECTED_SIGNATURE), TEST_STARTURL, null));
 
         assertFalse(WebApkValidator.isValidWebApk(
                 RuntimeEnvironment.application, INVALID_WEBAPK_PACKAGE_NAME));
@@ -259,11 +261,11 @@
      */
     @Test
     public void testIsValidWebApkForMapsLite() {
-        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                MAPSLITE_PACKAGE_NAME, new Signature(SIGNATURE_1), MAPSLITE_EXAMPLE_STARTURL));
+        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(MAPSLITE_PACKAGE_NAME,
+                new Signature(SIGNATURE_1), MAPSLITE_EXAMPLE_STARTURL, null));
         mPackageManager.addPackage(
                 newPackageInfoWithBrowserSignature(MAPSLITE_PACKAGE_NAME + ".other",
-                        new Signature(SIGNATURE_1), MAPSLITE_EXAMPLE_STARTURL));
+                        new Signature(SIGNATURE_1), MAPSLITE_EXAMPLE_STARTURL, null));
 
         assertTrue(WebApkValidator.isValidWebApk(
                 RuntimeEnvironment.application, MAPSLITE_PACKAGE_NAME));
@@ -280,7 +282,7 @@
     @Test
     public void testIsNotValidWebApkForMapsLiteBadStartUrl() {
         mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
-                MAPSLITE_PACKAGE_NAME, new Signature(SIGNATURE_1), TEST_STARTURL));
+                MAPSLITE_PACKAGE_NAME, new Signature(SIGNATURE_1), TEST_STARTURL, null));
         assertFalse(WebApkValidator.isValidWebApk(
                 RuntimeEnvironment.application, MAPSLITE_PACKAGE_NAME));
     }
@@ -294,7 +296,7 @@
         Signature[] signatures = new Signature[] {new Signature(SIGNATURE_1),
                 new Signature(EXPECTED_SIGNATURE), new Signature(SIGNATURE_2)};
         mPackageManager.addPackage(
-                newPackageInfo(WEBAPK_PACKAGE_NAME, signatures, null, TEST_STARTURL));
+                newPackageInfo(WEBAPK_PACKAGE_NAME, signatures, null, TEST_STARTURL, null));
 
         assertFalse(
                 WebApkValidator.isValidWebApk(RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME));
@@ -309,7 +311,7 @@
         Signature signatures[] =
                 new Signature[] {new Signature(SIGNATURE_1), new Signature(SIGNATURE_2)};
         mPackageManager.addPackage(
-                newPackageInfo(WEBAPK_PACKAGE_NAME, signatures, null, TEST_STARTURL));
+                newPackageInfo(WEBAPK_PACKAGE_NAME, signatures, null, TEST_STARTURL, null));
 
         assertFalse(
                 WebApkValidator.isValidWebApk(RuntimeEnvironment.application, WEBAPK_PACKAGE_NAME));
@@ -326,8 +328,8 @@
 
         for (String filename : filenames) {
             mPackageManager.removePackage(packageName);
-            mPackageManager.addPackage(
-                    newPackageInfo(packageName, signature, testFilePath(filename), TEST_STARTURL));
+            mPackageManager.addPackage(newPackageInfo(
+                    packageName, signature, testFilePath(filename), TEST_STARTURL, null));
             assertTrue(filename + " did not verify",
                     WebApkValidator.isValidWebApk(RuntimeEnvironment.application, packageName));
         }
@@ -352,13 +354,62 @@
 
         for (String filename : filenames) {
             mPackageManager.removePackage(packageName);
-            mPackageManager.addPackage(
-                    newPackageInfo(packageName, signature, testFilePath(filename), TEST_STARTURL));
+            mPackageManager.addPackage(newPackageInfo(
+                    packageName, signature, testFilePath(filename), TEST_STARTURL, null));
             assertFalse(filename,
                     WebApkValidator.isValidWebApk(RuntimeEnvironment.application, packageName));
         }
     }
 
+    /**
+     * Tests {@link WebApkValidator#queryBoundWebApkForManifestUrl()} for a valid installed entry.
+     */
+    @Test
+    public void testQueryBoundWebApkForManifestUrl() {
+        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
+                WEBAPK_PACKAGE_NAME, new Signature(EXPECTED_SIGNATURE), null, MANIFEST_URL));
+
+        assertEquals(WEBAPK_PACKAGE_NAME,
+                WebApkValidator.queryBoundWebApkForManifestUrl(
+                        RuntimeEnvironment.application, MANIFEST_URL));
+    }
+
+    /**
+     * Tests {@link WebApkValidator#queryBoundWebApkForManifestUrl()} with an invalid package name.
+     */
+    @Test
+    public void testQueryBoundWebApkForManifestUrlWithInvalidPackageName() {
+        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(INVALID_WEBAPK_PACKAGE_NAME,
+                new Signature(EXPECTED_SIGNATURE), null, MANIFEST_URL));
+
+        assertNull(WebApkValidator.queryBoundWebApkForManifestUrl(
+                RuntimeEnvironment.application, MANIFEST_URL));
+    }
+
+    /**
+     * Tests {@link WebApkValidator#queryBoundWebApkForManifestUrl()} with an invalid signature.
+     */
+    @Test
+    public void testQueryBoundWebApkForManifestUrlWithInvalidSignature() {
+        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
+                WEBAPK_PACKAGE_NAME, new Signature(SIGNATURE_1), null, MANIFEST_URL));
+
+        assertNull(WebApkValidator.queryBoundWebApkForManifestUrl(
+                RuntimeEnvironment.application, MANIFEST_URL));
+    }
+
+    /**
+     * Tests {@link WebApkValidator#queryBoundWebApkForManifestUrl()} with an invalid manifest URL.
+     */
+    @Test
+    public void testQueryBoundWebApkForManifestUrlWithInvalidManifestUrl() {
+        mPackageManager.addPackage(newPackageInfoWithBrowserSignature(
+                WEBAPK_PACKAGE_NAME, new Signature(SIGNATURE_1), null, MANIFEST_URL));
+
+        assertNull(WebApkValidator.queryBoundWebApkForManifestUrl(
+                RuntimeEnvironment.application, "https://evil.com/manifest.json"));
+    }
+
     // Get the full test file path.
     private static String testFilePath(String fileName) {
         return TestDir.getTestFilePath(TEST_DATA_DIR + fileName);
@@ -372,8 +423,8 @@
         return resolveInfo;
     }
 
-    private static PackageInfo newPackageInfo(
-            String packageName, Signature[] signatures, String sourceDir, String startUrl) {
+    private static PackageInfo newPackageInfo(String packageName, Signature[] signatures,
+            String sourceDir, String startUrl, String manifestUrl) {
         PackageInfo packageInfo = new PackageInfo();
         packageInfo.packageName = packageName;
         packageInfo.signatures = signatures;
@@ -381,6 +432,7 @@
         packageInfo.applicationInfo.metaData = new Bundle();
         packageInfo.applicationInfo.metaData.putString(START_URL, startUrl + "?morestuff");
         packageInfo.applicationInfo.metaData.putString(SCOPE, startUrl);
+        packageInfo.applicationInfo.metaData.putString(WEB_MANIFEST_URL, manifestUrl);
         packageInfo.applicationInfo.sourceDir = sourceDir;
         return packageInfo;
     }
@@ -388,8 +440,8 @@
     // The browser signature is expected to always be the second signature - the first (and any
     // additional ones after the second) are ignored.
     private static PackageInfo newPackageInfoWithBrowserSignature(
-            String packageName, Signature signature, String startUrl) {
-        return newPackageInfo(
-                packageName, new Signature[] {new Signature(""), signature}, null, startUrl);
+            String packageName, Signature signature, String startUrl, String manifestUrl) {
+        return newPackageInfo(packageName, new Signature[] {new Signature(""), signature}, null,
+                startUrl, manifestUrl);
     }
 }
diff --git a/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkValidator.java b/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkValidator.java
index aa206fc..8372700 100644
--- a/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkValidator.java
+++ b/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkValidator.java
@@ -7,6 +7,7 @@
 import static org.chromium.webapk.lib.common.WebApkConstants.WEBAPK_PACKAGE_PREFIX;
 import static org.chromium.webapk.lib.common.WebApkMetaDataKeys.SCOPE;
 import static org.chromium.webapk.lib.common.WebApkMetaDataKeys.START_URL;
+import static org.chromium.webapk.lib.common.WebApkMetaDataKeys.WEB_MANIFEST_URL;
 
 import android.content.Context;
 import android.content.Intent;
@@ -357,6 +358,40 @@
     }
 
     /**
+     * Determines if a bound WebAPK generated from |manifestUrl| is installed on the device.
+     * @param context The context to use to check whether WebAPK is valid.
+     * @param manifestUrl The URL of the manifest that was used to generate the WebAPK.
+     * @return The WebAPK's package name if installed, or null otherwise.
+     */
+    public static @Nullable String queryBoundWebApkForManifestUrl(
+            Context context, String manifestUrl) {
+        assert manifestUrl != null;
+
+        List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(
+                PackageManager.GET_SIGNATURES | PackageManager.GET_META_DATA);
+
+        // Filter out unbound & invalid WebAPKs.
+        for (int i = 0; i < packages.size(); i++) {
+            PackageInfo info = packages.get(i);
+
+            if (!verifyV1WebApk(info, info.packageName)) {
+                continue;
+            }
+
+            // |info| belongs to a valid, bound, WebAPK. Check that the metadata contains
+            // |manifestUrl|.
+            String packageManifestUrl = info.applicationInfo.metaData.getString(WEB_MANIFEST_URL);
+            if (!TextUtils.equals(packageManifestUrl, manifestUrl)) {
+                continue;
+            }
+
+            return info.packageName;
+        }
+
+        return null;
+    }
+
+    /**
      * Initializes the WebApkValidator.
      * @param expectedSignature V1 WebAPK RSA signature.
      * @param v2PublicKeyBytes New comment signed public key bytes as x509 encoded public key.
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 342b036..468203f 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Kragwas vereis vir volgende herselflaai</translation>
 <translation id="8102159139658438129">Gaan na <ph name="LINK_BEGIN" />Instellings<ph name="LINK_END" /> om opsies vir jou gekoppelde foon te sien</translation>
 <translation id="8104696615244072556">Powerwash jou <ph name="IDS_SHORT_PRODUCT_NAME" />-toestel en keer na die vorige weergawe terug.</translation>
-<translation id="8106661353233173262">Iets is fout. Die geskandeerde lêer het uitgetel.</translation>
 <translation id="8107015733319732394">Installeer tans die Google Play Winkel op jou <ph name="DEVICE_TYPE" />. Dit kan 'n paar minute neem.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Geen derdeparty-webkoekies nie}=1{1 derdeparty-webkoekie is geblokkeer}other{# derdeparty-webkoekies is geblokkeer}}</translation>
 <translation id="810875025413331850">Geen nabygeleë toestelle gevind nie.</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 46184f81..64ac78af31 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -5025,7 +5025,6 @@
 <translation id="8101987792947961127">በቀጣዩ ዳግም ማስነሳት ላይ Powerwash  ያስፈልጋል</translation>
 <translation id="8102159139658438129">ለተገናኘው ስልክዎ አማራጮችን ለማየት ወደ <ph name="LINK_BEGIN" />ቅንብሮች<ph name="LINK_END" /> ይሂዱ</translation>
 <translation id="8104696615244072556">የእርስዎ <ph name="IDS_SHORT_PRODUCT_NAME" /> መሣሪያ Powerwash ያድርጉትና ወደ ቀዳሚው ስሪት ይመለሱ።</translation>
-<translation id="8106661353233173262">የሆነ ችግር ተፈጥሯል። የተቃኘው ፋይል ጊዜው አብቅቷል።</translation>
 <translation id="8107015733319732394">የGoogle Play መደብርን በእርስዎ <ph name="DEVICE_TYPE" /> ላይ በመጫን ላይ። ይሄ ጥቂት ደቂቃዎችን ሊወስድ ይችላል።</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{የሶስተኛ ወገን ኩኪዎች የሉም}=1{1 የሶስተኛ ወገን ኩኪ ታግዷል}one{# የሶስተኛ ወገን ኩኪዎች ታግደዋል}other{# የሶስተኛ ወገን ኩኪዎች ታግደዋል}}</translation>
 <translation id="810875025413331850">በአቅራቢያ ያሉ ምንም መሣሪያዎች አልተገኙም።</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 61f557c..d5656781 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -396,7 +396,7 @@
 <translation id="1545177026077493356">وضع الكشك التلقائي</translation>
 <translation id="1545775234664667895">تم تثبيت المظهر "<ph name="THEME_NAME" />".</translation>
 <translation id="1546280085599573572">غيّرت هذه الإضافة الصفحة التي تظهر عند النقر على زر الصفحة الرئيسية.</translation>
-<translation id="1549275686094429035">‏تم تفعيل وقت تشغيل التطبيقات في Chrome</translation>
+<translation id="1549275686094429035">‏تم تفعيل "وقت تشغيل التطبيقات في Chrome"</translation>
 <translation id="1549788673239553762">يريد <ph name="APP_NAME" /> الوصول إلى <ph name="VOLUME_NAME" />. قد يعدّل أو يحذف ملفاتك.</translation>
 <translation id="1553538517812678578">غير محدودة</translation>
 <translation id="1554390798506296774">السماح دومًا للمكونات الإضافية غير المحمية <ph name="HOST" /></translation>
@@ -651,7 +651,7 @@
 <translation id="1879000426787380528">تسجيل الدخول باسم</translation>
 <translation id="1880905663253319515">هل تريد حذف الشهادة "<ph name="CERTIFICATE_NAME" />"؟</translation>
 <translation id="1884013283844450420">الشبكة <ph name="NETWORK_INDEX" /> من <ph name="NETWORK_COUNT" />، الشبكة <ph name="NETWORK_NAME" />، الاتصال</translation>
-<translation id="1884930769492918228">تتبُع موضع الكاميرا وربطها مع غرفتك</translation>
+<translation id="1884930769492918228">تتبُع موضع الكاميرا وتصوير غرفتك</translation>
 <translation id="1886996562706621347">السماح لمواقع الويب بأن تطلب أن تصبح معالجات تلقائية للبروتوكولات (مستحسن)</translation>
 <translation id="1887442540531652736">خطأ في تسجيل الدخول</translation>
 <translation id="1887597546629269384">‏يُرجى قول "Hey Google" مرة أخرى.</translation>
@@ -764,7 +764,7 @@
 <translation id="2059913712424898428">المنطقة الزمنية</translation>
 <translation id="2065405795449409761">‏يتم التحكم في Chrome من خلال برامج اختبار مبرمجة.</translation>
 <translation id="2071393345806050157">ليس هناك ملف سجل محلي.</translation>
-<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{انقر لتثبيت الإضافة.}zero{ما مِن إضافات لتثبيتها.}two{انقر لتثبيت هاتَين الإضافتَين.}few{انقر لتثبيت هذه الإضافات.}many{انقر لتثبيت هذه الإضافات.}other{انقر لتثبيت هذه الإضافات.}}</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{انقر لتثبيت الإضافة.}zero{انقر لتثبيت الإضافات.}two{انقر لتثبيت هاتَين الإضافتَين.}few{انقر لتثبيت هذه الإضافات.}many{انقر لتثبيت هذه الإضافات.}other{انقر لتثبيت هذه الإضافات.}}</translation>
 <translation id="2075474481720804517">البطارية <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="2075959085554270910">تتيح لك تفعيل ميزة الضغط للنقر وميزة السحب بالنقر أو إيقافهما.</translation>
 <translation id="2076269580855484719">إخفاء هذا المكون الإضافي</translation>
@@ -2041,7 +2041,7 @@
 <translation id="3819800052061700452">م&amp;لء الشاشة</translation>
 <translation id="3820172043799983114">رقم التعريف الشخصي غير صالح.</translation>
 <translation id="3820749202859700794">‏منحنى SECG ناقص المقطع secp521r1‏ (aka NIST P-521)</translation>
-<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{تمت الموافقة على إضافة واحدة.}zero{لم تتم الموافقة على إيّ إضافة.}two{تمت الموافقة على إضافتَين.}few{تمت الموافقة على # إضافات.}many{تمت الموافقة على # إضافةً.}other{تمت الموافقة على # إضافة.}}</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{تمت الموافقة على إضافة واحدة.}zero{تمّت الموافقة على # إضافة.}two{تمت الموافقة على إضافتَين.}few{تمت الموافقة على # إضافات.}many{تمت الموافقة على # إضافةً.}other{تمت الموافقة على # إضافة.}}</translation>
 <translation id="3822559385185038546">تم فرض هذا الخادم الوكيل بواسطة المشرف</translation>
 <translation id="3826440694796503677">‏لقد أوقف المشرف إمكانية إضافة المزيد من حسابات Google.</translation>
 <translation id="3827306204503227641">متابعة السماح للمكونات الإضافية غير المحمية</translation>
@@ -2397,7 +2397,7 @@
 <translation id="4353114845960720315">أثناء استخدامك وضع "الواقع الافتراضي"، يمكن لهذا الموقع الإلكتروني التعرُّف على ما يلي:</translation>
 <translation id="4354344420232759511">ستظهر المواقع التي تزورها هنا.</translation>
 <translation id="435527878592612277">اختيار صورتك</translation>
-<translation id="4357784477082216550">يرغب موقع <ph name="URL" /> في تتبُع موضع الكاميرا وربطها مع غرفتك.</translation>
+<translation id="4357784477082216550">يرغب موقع <ph name="URL" /> في تتبُع موضع الكاميرا وتصوير غرفتك.</translation>
 <translation id="4358313196493694334">تثبيت النقر على الموقع الجغرافي</translation>
 <translation id="4359408040881008151">تم التثبيت بسبب الإضافة (الإضافات) التابعة.</translation>
 <translation id="4359717112757026264">مناظر المدن</translation>
@@ -2638,7 +2638,7 @@
 <translation id="4720185134442950733">شبكة بيانات الجوّال</translation>
 <translation id="4722735765955348426">كلمة مرور <ph name="USERNAME" /></translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> يشارك شاشتك.</translation>
-<translation id="4723140812774948886">تبديل مع التالي</translation>
+<translation id="4723140812774948886">تبديل العنصر المختار مع العنصر التالي</translation>
 <translation id="4724450788351008910">تغيير الاقتران</translation>
 <translation id="4725511304875193254">كورجي</translation>
 <translation id="4726710629007580002">ظهرت تحذيرات عن محاولة تثبيت هذه الإضافة:</translation>
@@ -2953,7 +2953,7 @@
 <translation id="51918995459521422">يريد <ph name="ORIGIN" /> تنزيل ملفات متعددة.</translation>
 <translation id="5192062846343383368">‏فتح تطبيق Family Link للاطّلاع على إعدادات الإشراف</translation>
 <translation id="5193988420012215838">تم النسخ إلى الحافظة</translation>
-<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{انقر لعرض الإضافة.}zero{ما مِن إضافات لعرضِها.}two{انقر لعرض هاتَين الإضافتَين.}few{انقر لعرض هذه الإضافات.}many{انقر لعرض هذه الإضافات.}other{انقر لعرض هذه الإضافات.}}</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{انقر لعرض الإضافة.}zero{انقر لعرض الإضافات.}two{انقر لعرض هاتَين الإضافتَين.}few{انقر لعرض هذه الإضافات.}many{انقر لعرض هذه الإضافات.}other{انقر لعرض هذه الإضافات.}}</translation>
 <translation id="5204673965307125349">‏يُرجى إجراء powerwash للجهاز وإعادة المحاولة.</translation>
 <translation id="5206215183583316675">هل تريد حذف "<ph name="CERTIFICATE_NAME" />"؟</translation>
 <translation id="520621735928254154">خطأ في استيراد الشهادة</translation>
@@ -3036,7 +3036,7 @@
 <translation id="5310281978693206542">إرسال الرابط إلى الأجهزة</translation>
 <translation id="5311304534597152726">تسجيل الدخول باسم</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> يُرجى إعادة المحاولة.</translation>
-<translation id="5313628438272378649">هذا التحميل ينتهك سياسات أمان مؤسستك ولا يمكن تحميله.</translation>
+<translation id="5313628438272378649">إنّ عملية تحميل هذا المحتوى تنتهك سياسات أمان مؤسستك ولا يمكن إتمامها.</translation>
 <translation id="5315738755890845852">قوس متعرج إضافي: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">الهوية</translation>
 <translation id="5317780077021120954">حفظ</translation>
@@ -3092,7 +3092,7 @@
 <translation id="5398772614898833570">تم حظر الإعلانات</translation>
 <translation id="5402815541704507626">تنزيل التحديث باستخدام بيانات الجوّال</translation>
 <translation id="540296380408672091">حظر ملفات تعريف الارتباط على <ph name="HOST" /> دومًا</translation>
-<translation id="540495485885201800">تبديل مع السابق</translation>
+<translation id="540495485885201800">تبديل العنصر المختار مع العنصر السابق</translation>
 <translation id="5405146885510277940">إعادة ضبط الإعدادات</translation>
 <translation id="5408750356094797285">تكبير/تصغير: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">عدم استخدام إعدادات الخادم الوكيل لهذه المضيفات والنطاقات:</translation>
@@ -3130,7 +3130,7 @@
 <translation id="5449588825071916739">وضع إشارة على جميع علامات التبويب</translation>
 <translation id="5449716055534515760">إغلاق &amp;النافذة</translation>
 <translation id="5454166040603940656">مع <ph name="PROVIDER" /></translation>
-<translation id="5454360575035671759">‏ستؤدي إزالة Plugin VM إلى حذف VM الخاص بك، ويشمل هذا تطبيقاته وإعداداته وبياناته. هل فعلًا لديك رغبة في المواصلة؟</translation>
+<translation id="5454360575035671759">‏ستؤدي إزالة المكوّن الإضافي Plugin VM إلى حذف الجهاز الافتراضي (VM) الخاص بك، ويشمل هذا تطبيقاته وإعداداته وبياناته. هل أنت متأكّد من أنّك تريد المواصلة؟</translation>
 <translation id="5457113250005438886">غير صالحة</translation>
 <translation id="5457459357461771897">التعرّف على الصور، والموسيقى، والوسائط الأخرى من الكمبيوتر وحذفها</translation>
 <translation id="5457599981699367932">تصفَّح كزائر</translation>
@@ -3184,7 +3184,7 @@
 <translation id="5518584115117143805">شهادة تشفير البريد الإلكتروني</translation>
 <translation id="5521078259930077036">هل هذه هي الصفحة الرئيسية التي كنت تتوقع ظهورها؟</translation>
 <translation id="5522156646677899028">هذه الإضافة تحتوي على ثغرة أمنية خطيرة.</translation>
-<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{تم تثبيت إضافة واحدة من قِبل مشرفك.}zero{لم يثبّت مشرفك أيّ إضافة.}two{تم تثبيت إضافتَين من قِبل مشرفك.}few{تم تثبيت # إضافات من قِبل مشرفك.}many{تم تثبيت # إضافةً من قِبل مشرفك.}other{تم تثبيت # إضافة من قِبل مشرفك.}}</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{ثبَّت مشرفك إضافة واحدة.}zero{ثبَّت مشرفك # إضافة.}two{ثبَّت مشرفك إضافتَين.}few{ثبَّت مشرفك # إضافات.}many{ثبَّت مشرفك # إضافةً.}other{ثبَّت مشرفك # إضافة.}}</translation>
 <translation id="5525677322972469346">إنشاء مستخدم جديد تحت الإشراف</translation>
 <translation id="5526701598901867718">الكل (غير آمن)</translation>
 <translation id="5526745900034778153">تسجيل الدخول مرة أخرى لاستئناف المزامنة</translation>
@@ -4055,7 +4055,7 @@
 <translation id="677965093459947883">صغير جدًا</translation>
 <translation id="6781284683813954823">رابط رسومات الشعار المبتكرة</translation>
 <translation id="6781978626986383437">‏تم إلغاء عملية الاحتفاظ بنسخة احتياطية من Linux</translation>
-<translation id="6785915470941880363"><ph name="LINK_BEGIN" />المزيد من المعلومات عن<ph name="LINK_END" /> التمرير العكسي</translation>
+<translation id="6785915470941880363"><ph name="LINK_BEGIN" />المزيد من المعلومات عن<ph name="LINK_END" /> المحتوى المتحرك باتجاه عكسي</translation>
 <translation id="6786747875388722282">الإضافات</translation>
 <translation id="6787839852456839824">اختصارات لوحة المفاتيح</translation>
 <translation id="6788210894632713004">إضافة تم فك حزمتها</translation>
@@ -4162,7 +4162,7 @@
 <translation id="6923132443355966645">التمرير / النقر على</translation>
 <translation id="6923633482430812883">‏حدث خطأ أثناء تحميل المشاركة. لذا يُرجى التحقّق من أن خادم الملفات الذي تتصل به يدعم بروتوكول SMB الإصدار 2 أو الإصدارات الأحدث.</translation>
 <translation id="6930036377490597025">مفتاح الأمان الخارجي أو جهاز الاستشعار المدمج</translation>
-<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{تم رفض إضافة واحدة.}zero{لم يتم رفض أي إضافات.}two{تم رفض إضافتَين.}few{تم رفض # إضافات.}many{تم رفض # إضافةً.}other{تم رفض # إضافة.}}</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{تم رفض إضافة واحدة.}zero{تم رفض # إضافة.}two{تم رفض إضافتَين.}few{تم رفض # إضافات.}many{تم رفض # إضافةً.}other{تم رفض # إضافة.}}</translation>
 <translation id="6935286146439255109">درج الورق غير متاح</translation>
 <translation id="693807610556624488">تتجاوز عملية الكتابة الحد الأقصى لطول السمة على: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">يتوفّر لديك طابعة واحدة محفوظة.</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">‏يتطلب إجراء Powerwash بعد عملية إعادة التشغيل التالية</translation>
 <translation id="8102159139658438129">يُرجى الانتقال إلى <ph name="LINK_BEGIN" />الإعدادات<ph name="LINK_END" /> للاطِّلاع على خيارات لهاتفك المتَّصل</translation>
 <translation id="8104696615244072556">‏استخدم وظيفة Powerwash <ph name="IDS_SHORT_PRODUCT_NAME" /> وارجع إلى الإصدار السابق.</translation>
-<translation id="8106661353233173262">حدث خطأ. تطلّب فحص الملفّ وقتًا أطول من اللازم.</translation>
 <translation id="8107015733319732394">‏تثبيت متجر Google Play على <ph name="DEVICE_TYPE" />. قد يستغرق ذلك بضع دقائق.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ليس هناك ملفات تعريف ارتباط تابعة لجهات خارجية}=1{تم حظر ملف تعريف ارتباط واحد تابع لجهات خارجية}two{تم حظر ملفَي تعريف ارتباط تابعَين لجهات خارجية}few{تم حظر # ملفات تعريف ارتباط تابعة لجهات خارجية}many{تم حظر # ملف تعريف ارتباط تابع لجهات خارجية}other{تم حظر # ملف تعريف ارتباط تابع لجهات خارجية}}</translation>
 <translation id="810875025413331850">لم يتم العثور على أجهزة مجاورة.</translation>
@@ -5106,7 +5105,7 @@
 <translation id="8227119283605456246">إرفاق ملف</translation>
 <translation id="8230134520748321204">هل تريد حفظ كلمة المرور لـ <ph name="ORIGIN" />؟</translation>
 <translation id="8234795456569844941">يُرجى مساعدة مهندسينا في حل هذه المشكلة. أخبرنا بما حدث مباشرة قبل ظهور رسالة خطأ الملف الشخصي:</translation>
-<translation id="8236123533334037984">تعمل مؤسستك على مسح هذا التحميل للتأكد من موافقته لسياسات الأمان.</translation>
+<translation id="8236123533334037984">تعمل مؤسستك على مسح هذا المحتوى المُحمَّل للتأكد من توافقه مع سياسات الأمان.</translation>
 <translation id="8236917170563564587">مشاركة علامة التبويب هذه بدلاً من ذلك</translation>
 <translation id="8237647586961940482">زهري داكن وأحمر</translation>
 <translation id="8241040075392580210">الظلال</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 010cc02..47bdc2cd 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -2949,7 +2949,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" />এ একাধিক ফাইল ডাউনল'ড কৰিব খোজে</translation>
 <translation id="5192062846343383368">আপোনাৰ তদাৰকী কৰা ছেটিংসমূহ Family Link এপ্‌টো খোলক</translation>
 <translation id="5193988420012215838">আপোনাৰ ক্লিপব'ৰ্ডলৈ প্ৰতিলিপি কৰা হৈছে</translation>
-<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{এক্সটেনশ্বনটো চাবলৈ ক্লিক কৰক}one{এক্সটেনশ্বনসমূহ চাবলৈ ক্লিক কৰক}other{এক্সটেনশ্বনসমূহ চাবলৈ ক্লিক কৰক}}</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{এক্সটেনশ্বনটো চাবলৈ ক্লিক কৰক}one{এই এক্সটেনশ্বনসমূহ চাবলৈ ক্লিক কৰক}other{এই এক্সটেনশ্বনসমূহ চাবলৈ ক্লিক কৰক}}</translation>
 <translation id="5204673965307125349">অনুগ্ৰহ কৰি ডিভাইচটো পাৱাৰৱাশ্ব কৰি আকৌ চেষ্টা কৰক।</translation>
 <translation id="5206215183583316675">"<ph name="CERTIFICATE_NAME" />"ক মচিবনে?</translation>
 <translation id="520621735928254154">প্ৰমাণপত্ৰ আমদানি কৰাত আসোঁৱাহ</translation>
@@ -5007,7 +5007,6 @@
 <translation id="8101987792947961127">পৰৱর্তী ৰিবুটৰ বাবে পাৱাৰৱাশ্বৰ আৱশ্যক</translation>
 <translation id="8102159139658438129">আপুনি সংযোগ কৰি থোৱা ফ’নটোৰ বিকল্পসমূহ চাবলৈ <ph name="LINK_BEGIN" />ছেটিংসমূহ<ph name="LINK_END" />লৈ যাওক</translation>
 <translation id="8104696615244072556">আপোনাৰ <ph name="IDS_SHORT_PRODUCT_NAME" /> ডিভাইচ পাৱাৰৱাশ্ব কৰক আৰু পূৰ্বৰ সংস্কৰণলৈ উভটি যাওক</translation>
-<translation id="8106661353233173262">কিবা ভুল হ’ল। ফাইল স্কেন কৰাৰ সময় উকলিল।</translation>
 <translation id="8107015733319732394">আপোনাৰ <ph name="DEVICE_TYPE" />ত Google Play Store ইনষ্টল কৰি থকা হৈছে। ইয়াৰ বাবে কিছু সময়ৰ প্ৰয়োজন হ'ব পাৰে।</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{তৃতীয় পক্ষৰ কুকিসমূহ নাই}=1{১টা তৃতীয় পক্ষৰ কুকি অৱৰোধ কৰা হৈছে}one{#টা তৃতীয় পক্ষৰ কুকীসমূহ অৱৰোধ কৰা হৈছে}other{#টা তৃতীয় পক্ষৰ কুকীসমূহ অৱৰোধ কৰা হৈছে}}</translation>
 <translation id="810875025413331850">কোনো নিকটৱৰ্তী ডিভাইচ বিচাৰি পোৱা নগ’ল।</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 8fc645a..9999f813 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -5013,7 +5013,6 @@
 <translation id="8101987792947961127">Növbəti yenidən yüklənmə zamanı zavod sıfırlaması tələb olunur</translation>
 <translation id="8102159139658438129">Qoşulmuş telefon haqqında seçimlərə baxmaq üçün <ph name="LINK_BEGIN" />Ayarlar<ph name="LINK_END" /> səhifəsinə keçin</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> cihazını sıfırlayın və öncəki versiyaya qayıdın.</translation>
-<translation id="8106661353233173262">Xəta baş verdi. Faylın skanlanma müddəti bitdi.</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> cihazında Google Play Mağazası quraşdırılır. Bu proses bir neçə dəqiqə vaxt ala bilər.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Üçüncü tərəf kuki yoxdur}=1{1 üçüncü tərəf kuki bloklanıb}other{# üçüncü tərəf kuki bloklanıb}}</translation>
 <translation id="810875025413331850">Yaxınlıqda heç bir cihaz tapılmadı.</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index f28885a5..4eaf362f 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Пры наступнай перазагрузцы патрабуецца Powerwash</translation>
 <translation id="8102159139658438129">Перайдзіце ў <ph name="LINK_BEGIN" />Налады<ph name="LINK_END" />, каб паглядзець параметры падключанага тэлефона</translation>
 <translation id="8104696615244072556">Скінуць налады прылады <ph name="IDS_SHORT_PRODUCT_NAME" /> з дапамогай Powerwash і вярнуцца да папярэдняй версіі.</translation>
-<translation id="8106661353233173262">Нешта пайшло не так. Праверка файла пратэрмінавана.</translation>
 <translation id="8107015733319732394">Ідзе ўсталяванне Крамы Google Play на <ph name="DEVICE_TYPE" />. Гэта можа заняць некалькі хвілін.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Няма старонніх файлаў cookie}=1{1 старонні файл cookie заблакіраваны}one{# старонні файл cookie заблакіраваны}few{# староннія файлы cookie заблакіраваны}many{# старонніх файлаў cookie заблакіраваны}other{# старонняга файла cookie заблакіраваны}}</translation>
 <translation id="810875025413331850">Прылад паблізу не знойдзена.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 8e81f23..94c6bae 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">При следващото рестартиране се изисква Powerwash</translation>
 <translation id="8102159139658438129">За да видите опциите за свързания телефон, отворете <ph name="LINK_BEGIN" />Настройки<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Извършване на Powerwash на устройството ви с <ph name="IDS_SHORT_PRODUCT_NAME" /> и връщане към предишната версия.</translation>
-<translation id="8106661353233173262">Нещо се обърка. Времето за изчакване на сканирания файл изтече.</translation>
 <translation id="8107015733319732394">Google Play Магазин се инсталира на устройството ви <ph name="DEVICE_TYPE" />. Това може да отнеме няколко минути.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Няма „бисквитки“ на трети страни}=1{Блокирана е 1 „бисквитка“ на трета страна}other{Блокирани са # „бисквитки“ на трети страни}}</translation>
 <translation id="810875025413331850">Няма намерени устройства в близост.</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 044f639..35a170c 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">পরবর্তী রিবুটে পাওয়ারওয়াশ প্রয়োজন</translation>
 <translation id="8102159139658438129">আপনার কানেক্ট করা ফোনের বিকল্পগুলি দেখতে <ph name="LINK_BEGIN" />সেটিংস<ph name="LINK_END" />-এ যান</translation>
 <translation id="8104696615244072556">আপনার <ph name="IDS_SHORT_PRODUCT_NAME" /> ডিভাইসটি পাওয়ারওয়াশ করুন এবং পূর্ববর্তী ভার্সনে ফিরে যান।</translation>
-<translation id="8106661353233173262">কিছু সমস্যা হয়েছে। ফাইল স্ক্যান করার সময় শেষ হয়ে গেছে।</translation>
 <translation id="8107015733319732394">আপনার <ph name="DEVICE_TYPE" /> এ Google Play স্টোর ইনস্টল করা হচ্ছে। এতে কয়েক মিনিট সময় লাগতে পারে।</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{কোনও থার্ড-পার্টি কুকি নেই}=1{১টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}one{#টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}other{#টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}}</translation>
 <translation id="810875025413331850">কাছাকাছি কোনও ডিভাইস পাওয়া যায়নি।</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index 0bca7a4f..f81ad0bf6 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Powerwash je obavezan prilikom sljedećeg pokretanja</translation>
 <translation id="8102159139658438129">Idite na <ph name="LINK_BEGIN" />Postavke<ph name="LINK_END" /> da vidite opcije za povezani telefon.</translation>
 <translation id="8104696615244072556">Uradite Powerwash na svom <ph name="IDS_SHORT_PRODUCT_NAME" /> uređaju i vratite ga na prethodnu verziju.</translation>
-<translation id="8106661353233173262">Nešto nije uredu. Isteklo je vrijeme za skeniranje fajla.</translation>
 <translation id="8107015733319732394">Instaliranje Google Play trgovine na vašem uređaju <ph name="DEVICE_TYPE" />. To može potrajati nekoliko minuta.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nema kolačića treće strane}=1{Blokiran je 1 kolačić treće strane}one{Blokiran je # kolačić treće strane}few{Blokirana su # kolačića treće strane}other{Blokirano je # kolačića treće strane}}</translation>
 <translation id="810875025413331850">Nije pronađen nijedan uređaj u blizini.</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 8c092c6d..7324cf70 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1371,7 +1371,7 @@
 <translation id="2875698561019555027">(Pàgines d'error de Chrome)</translation>
 <translation id="2876336351874743617">Dit 2</translation>
 <translation id="2876369937070532032">Envia a Google els URL d'algunes de les pàgines que visites quan la teva seguretat està en risc</translation>
-<translation id="2877030408509021795">S'ha completat l'anàlisi; la pujada compleix les polítiques de l'empresa.</translation>
+<translation id="2877030408509021795">S'ha completat l'anàlisi; tot està bé.</translation>
 <translation id="2878782256107578644">S'està analitzant el fitxer. Vols obrir-lo ara?</translation>
 <translation id="288042212351694283">Accés als dispositius Universal 2nd Factor</translation>
 <translation id="2881076733170862447">Quan facis clic a l'extensió</translation>
@@ -1701,7 +1701,7 @@
 <translation id="3382073616108123819">El sistema no ha pogut determinar els identificadors d'aquest dispositiu.</translation>
 <translation id="3382086682569279540">El compte que gestiones se suprimirà aviat</translation>
 <translation id="3382200254148930874">S'està aturant la supervisió...</translation>
-<translation id="3383210070657133526"><ph name="URL" /> vol fer sessions de realitat virtual</translation>
+<translation id="3383210070657133526"><ph name="URL" /> vol poder iniciar sessions de realitat virtual</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">Separador</translation>
 <translation id="338691029516748599">Xarxa <ph name="NETWORK_INDEX" /> de <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, <ph name="SIGNAL_STRENGTH" />% d'intensitat del senyal, gestionada per l'administrador, connecta</translation>
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Es requereix Powerwash la propera vegada que es reiniciï</translation>
 <translation id="8102159139658438129">Ves a <ph name="LINK_BEGIN" />Configuració<ph name="LINK_END" /> per veure les opcions per al telèfon connectat</translation>
 <translation id="8104696615244072556">Feu un Powerwash al dispositiu <ph name="IDS_SHORT_PRODUCT_NAME" /> i torneu a la versió anterior.</translation>
-<translation id="8106661353233173262">S'ha produït un error. S'ha esgotat el temps d'espera del fitxer escanejat.</translation>
 <translation id="8107015733319732394">S'està instal·lant Google Play Store al teu dispositiu <ph name="DEVICE_TYPE" />. Aquest procés pot tardar uns quants minuts.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No hi ha cap galeta de tercers}=1{Hi ha 1 galeta de tercers bloquejada}other{Hi ha # galetes de tercers bloquejades}}</translation>
 <translation id="810875025413331850">No s'ha trobat cap dispositiu a prop.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index b7928f41..9dc5e21f4 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -860,7 +860,7 @@
 <translation id="219008588003277019">Modul nativního klienta: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(prázdné)</translation>
 <translation id="2191223688506386601">Ještě poslední věc</translation>
-<translation id="2191754378957563929">Zap</translation>
+<translation id="2191754378957563929">Zapnuto</translation>
 <translation id="2192505247865591433">Zdroj:</translation>
 <translation id="2193365732679659387">Nastavení důvěryhodnosti</translation>
 <translation id="2195331105963583686">I poté své zařízení <ph name="DEVICE_TYPE" /> budete moci nadále používat, ale již nebude dostávat automatické aktualizace softwaru a zabezpečení</translation>
@@ -3131,7 +3131,7 @@
 <translation id="5449588825071916739">Přidat do záložek všechny karty</translation>
 <translation id="5449716055534515760">Zavřít okno</translation>
 <translation id="5454166040603940656">(<ph name="PROVIDER" />)</translation>
-<translation id="5454360575035671759">Odstraněním Plugin VM will se smaže váš virtuální počítač. To zahrnuje i aplikace, nastavení a data. Opravdu chcete pokračovat?</translation>
+<translation id="5454360575035671759">Odstraníte-li Plugin VM, smaže se váš virtuální počítač. To zahrnuje i aplikace, nastavení a data. Opravdu chcete pokračovat?</translation>
 <translation id="5457113250005438886">Neplatné</translation>
 <translation id="5457459357461771897">Číst a mazat fotografie, hudbu a další média z počítače</translation>
 <translation id="5457599981699367932">Použít jako host</translation>
@@ -4770,7 +4770,7 @@
 <translation id="7792388396321542707">Ukončit sdílení</translation>
 <translation id="779308894558717334">Světle zelená</translation>
 <translation id="7793098747275782155">Tmavě modrá</translation>
-<translation id="7797571222998226653">Vyp</translation>
+<translation id="7797571222998226653">Vypnuto</translation>
 <translation id="7799299114731150374">Tapeta byla úspěšně nastavena</translation>
 <translation id="7800518121066352902">Otočit &amp;proti směru hodinových ručiček</translation>
 <translation id="780301667611848630">Ne, děkuji</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">Je vyžadováno použití funkce Powerwash při dalším restartu</translation>
 <translation id="8102159139658438129">Možnosti připojeného telefonu najdete v sekci <ph name="LINK_BEGIN" />Nastavení<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Tato akce resetuje zařízení <ph name="IDS_SHORT_PRODUCT_NAME" /> pomocí funkce Powerwash a obnoví předchozí verzi aplikace.</translation>
-<translation id="8106661353233173262">Došlo k chybě. U kontrolovaného souboru došlo k vypršení časového limitu.</translation>
 <translation id="8107015733319732394">Instalace Obchodu Google Play do zařízení <ph name="DEVICE_TYPE" />. Tato operace může několik minut trvat.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Žádné soubory cookie třetích stran}=1{1 soubor cookie třetí strany je blokován}few{# soubory cookie třetích stran jsou blokovány}many{# souboru cookie třetích stran je blokováno}other{# souborů cookie třetích stran je blokováno}}</translation>
 <translation id="810875025413331850">V okolí nebyla nalezena žádná zařízení.</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 958ae40..2c6879a 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -4165,7 +4165,7 @@
 <translation id="6923132443355966645">Rul/klik</translation>
 <translation id="6923633482430812883">Delingen kunne ikke anvendes. Tjek, at den filserver, du opretter forbindelse til, understøtter SMBv2 eller nyere.</translation>
 <translation id="6930036377490597025">Ekstern sikkerhedsnøgle eller indbygget sensor</translation>
-<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{En udvidelse blev afvist}one{# udvidelse blev afvist}other{# udvidelser blev afvist}}</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{En udvidelse blev afvist}one{# udvidelse blev afvist}other{# udvidelse blev afvist}}</translation>
 <translation id="6935286146439255109">Der mangler en papirbakke</translation>
 <translation id="693807610556624488">Skrivehandlingen overskrider den maksimale længde af attributten på: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Du har 1 gemt printer.</translation>
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Powerwash er påkrævet ved næste genstart</translation>
 <translation id="8102159139658438129">Gå til <ph name="LINK_BEGIN" />Indstillinger<ph name="LINK_END" /> for at se valgmulighederne for din tilsluttede telefon</translation>
 <translation id="8104696615244072556">Powerwash din <ph name="IDS_SHORT_PRODUCT_NAME" />-enhed, og nulstil til forrige version.</translation>
-<translation id="8106661353233173262">Der opstod en fejl. Den scannede fil oplevede timeout.</translation>
 <translation id="8107015733319732394">Google Play Butik installeres på din <ph name="DEVICE_TYPE" />. Det kan tage nogle minutter.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ingen tredjepartscookies}=1{1 tredjepartscookie er blokeret}one{# tredjepartscookie er blokeret}other{# tredjepartscookies er blokeret}}</translation>
 <translation id="810875025413331850">Der blev ikke fundet nogen enheder i nærheden.</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 3912087f..8347bef 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -4040,7 +4040,7 @@
 <translation id="6758056191028427665">Teilen Sie uns mit, wie zufrieden Sie mit uns sind.</translation>
 <translation id="6759193508432371551">Zurücksetzen auf Werkseinstellungen</translation>
 <translation id="6762833852331690540">An</translation>
-<translation id="6767115174726603949">Auf Virtual-Reality-Geräte und -Daten zugreifen</translation>
+<translation id="6767115174726603949">Auf Virtual-Reality-Geräte und ‑Daten zugreifen</translation>
 <translation id="6767566652486411142">Andere Sprache auswählen…</translation>
 <translation id="6767639283522617719">Beitritt zur Domain nicht möglich. Achten Sie darauf, dass die Einstellungen für die Organisationseinheit richtig sind.</translation>
 <translation id="6769712124046837540">Drucker wird hinzugefügt...</translation>
@@ -5019,7 +5019,6 @@
 <translation id="8101987792947961127">Powerwash beim nächsten Neustart erforderlich</translation>
 <translation id="8102159139658438129">Rufen Sie die <ph name="LINK_BEGIN" />Einstellungen<ph name="LINK_END" /> auf, um Optionen für Ihr verbundenes Smartphone zu sehen.</translation>
 <translation id="8104696615244072556">Powerwash für Ihr <ph name="IDS_SHORT_PRODUCT_NAME" />-Gerät ausführen und auf die vorherige Version zurücksetzen</translation>
-<translation id="8106661353233173262">Ein Fehler ist aufgetreten. Zeitüberschreitung beim Scannen der Datei.</translation>
 <translation id="8107015733319732394">Google Play Store wird auf Ihrem <ph name="DEVICE_TYPE" /> installiert. Dies kann ein paar Minuten dauern.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Keine Drittanbieter-Cookies}=1{1 Cookie von Drittanbietern wird blockiert}other{# Cookies von Drittanbietern werden blockiert}}</translation>
 <translation id="810875025413331850">Keine Geräte in der Nähe gefunden.</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 64ed6237..583ff089 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -5024,7 +5024,6 @@
 <translation id="8101987792947961127">Απαιτείται Powerwash στην επόμενη επανεκκίνηση</translation>
 <translation id="8102159139658438129">Μεταβείτε στις <ph name="LINK_BEGIN" />Ρυθμίσεις<ph name="LINK_END" />, για να δείτε τις επιλογές που έχετε για το συνδεδεμένο τηλέφωνο</translation>
 <translation id="8104696615244072556">Επαναφέρετε (powerwash) τη συσκευή σας <ph name="IDS_SHORT_PRODUCT_NAME" /> και επιστρέψτε στην προηγούμενη έκδοση</translation>
-<translation id="8106661353233173262">Παρουσιάστηκε κάποιο πρόβλημα. Ο χρόνος σάρωσης του αρχείου έχει λήξει.</translation>
 <translation id="8107015733319732394">Εγκατάσταση του Google Play Store στη συσκευή σας <ph name="DEVICE_TYPE" />. Αυτό μπορεί να διαρκέσει μερικά λεπτά.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Δεν υπάρχουν cookie τρίτου μέρους}=1{Αποκλείστηκε 1 cookie τρίτου μέρους}other{Αποκλείστηκαν # cookie τρίτου μέρους}}</translation>
 <translation id="810875025413331850">Δεν βρέθηκαν κοντινές συσκευές.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index b2d3101c..0c7da75 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Powerwash required on next reboot</translation>
 <translation id="8102159139658438129">Go to <ph name="LINK_BEGIN" />Settings<ph name="LINK_END" /> to see options for your connected phone</translation>
 <translation id="8104696615244072556">Powerwash your <ph name="IDS_SHORT_PRODUCT_NAME" /> device and return to the previous version.</translation>
-<translation id="8106661353233173262">Something went wrong. The scanned file has timed out.</translation>
 <translation id="8107015733319732394">Installing the Google Play Store on your <ph name="DEVICE_TYPE" />. This could take a few minutes.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No third-party cookies}=1{1 third-party cookie is blocked}other{# third-party cookies are blocked}}</translation>
 <translation id="810875025413331850">No nearby devices found.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 18aafa8..9294928 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -3092,7 +3092,7 @@
 <translation id="5398772614898833570">Anuncios bloqueados</translation>
 <translation id="5402815541704507626">Descargar la actualización a través de datos móviles</translation>
 <translation id="540296380408672091">Siempre bloquear las cookies en <ph name="HOST" /></translation>
-<translation id="540495485885201800">Cambiar con la anterior</translation>
+<translation id="540495485885201800">Cambiar con el elemento anterior</translation>
 <translation id="5405146885510277940">Restablecer configuración</translation>
 <translation id="5408750356094797285">Zoom: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">No usar la configuración proxy para estos dominios y hosts:</translation>
@@ -5020,7 +5020,6 @@
 <translation id="8101987792947961127">Se requiere Powerwash en el siguiente reinicio</translation>
 <translation id="8102159139658438129">Para ver las opciones para tu teléfono conectado, accede a la <ph name="LINK_BEGIN" />Configuración<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Usa la función Powerwash en el dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> y regresa a la versión anterior.</translation>
-<translation id="8106661353233173262">Se produjo un error. Se agotó el tiempo de espera para analizar el archivo.</translation>
 <translation id="8107015733319732394">Se está instalando Google Play Store en tu <ph name="DEVICE_TYPE" />. Esta acción puede tardar unos minutos.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No hay cookies de terceros}=1{Se bloqueó 1 cookie de terceros}other{Se bloquearon # cookies de terceros}}</translation>
 <translation id="810875025413331850">No se encontraron dispositivos cercanos.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 1d06f03..98f93a6 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Se requiere Powerwash en el siguiente reinicio</translation>
 <translation id="8102159139658438129">Ve a <ph name="LINK_BEGIN" />Configuración<ph name="LINK_END" /> para ver las opciones del teléfono conectado</translation>
 <translation id="8104696615244072556">Haz un Powerwash del dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> y vuelve a la versión anterior.</translation>
-<translation id="8106661353233173262">Se ha producido un error. Se ha agotado el tiempo de espera del archivo analizado.</translation>
 <translation id="8107015733319732394">Se está instalando Google Play Store en tu <ph name="DEVICE_TYPE" />. Este proceso puede tardar unos minutos.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No hay cookies de terceros}=1{Se ha bloqueado 1 cookie de terceros}other{Se han bloqueado # cookies de terceros}}</translation>
 <translation id="810875025413331850">No se ha encontrado ningún dispositivo cerca.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 0a10c69..9a51ae6 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Järgmisel taaskäivitusel nõutakse Powerwashi</translation>
 <translation id="8102159139658438129">Avage jaotis <ph name="LINK_BEGIN" />Seaded<ph name="LINK_END" />, et näha ühendatud telefoni valikuid</translation>
 <translation id="8104696615244072556">Rakendage teenuse <ph name="IDS_SHORT_PRODUCT_NAME" /> seadmele funktsioon Powerwash ja naaske eelmisele versioonile.</translation>
-<translation id="8106661353233173262">Midagi läks valesti. Skannitud fail on aegunud.</translation>
 <translation id="8107015733319732394">Google Play pood installitakse teie seadmesse <ph name="DEVICE_TYPE" />. See võib võtta mõne minuti.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Kolmanda osapoole küpsisefailid puuduvad}=1{1 kolmanda osapoole küpsisefail blokeeriti}other{# kolmanda osapoole küpsisefaili blokeeriti}}</translation>
 <translation id="810875025413331850">Läheduses olevaid seadmeid ei leitud.</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 656d5808..5d6988b5 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -2041,7 +2041,7 @@
 <translation id="3819800052061700452">&amp;Pantaila osoa</translation>
 <translation id="3820172043799983114">PIN kodeak ez du balio.</translation>
 <translation id="3820749202859700794">SECG kurba eliptikoko secp521r1 (edo, bestela esanda: NIST P-521)</translation>
-<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{Luzapen bat onartu da}other{# luzapen bat onartu dira}}</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{Luzapen bat onartu da}other{# luzapen onartu dira}}</translation>
 <translation id="3822559385185038546">Administratzaileak ezartzen du proxya</translation>
 <translation id="3826440694796503677">Administratzaileak desgaitu egin du Google-ko kontuak gehitzeko aukera</translation>
 <translation id="3827306204503227641">Jarraitu baimentzen proben eremuan sartu gabeko pluginak</translation>
@@ -3082,7 +3082,7 @@
 <translation id="5376931455988532197">Fitxategia handiegia da</translation>
 <translation id="537813040452600081">Leiho honetan ikusten dituzun orriak ez dira arakatzailearen historian agertuko eta ez dute bestelako aztarnarik utziko (adibidez, cookieak) saioa amaitu ondoren. Deskargatzen dituzun fitxategiak eta sortzen dituzun laster-markak ez dira gordeko.</translation>
 <translation id="5379140238605961210">Jarraitu mikrofonorako sarbidea blokeatzen</translation>
-<translation id="5382591305415226340">Kudeatu onartzen diren estekak</translation>
+<translation id="5382591305415226340">Kudeatu esteka bateragarriak</translation>
 <translation id="5383377866517186886">Kamera erabiltzeko baimena desaktibatuta dago Mac sistemaren hobespenetan</translation>
 <translation id="5384883051496921101">Webgune hau informazioa partekatzera doa aplikazio batekin ezkutuko modutik kanpo.</translation>
 <translation id="5388885445722491159">Parekatuta</translation>
@@ -3150,7 +3150,7 @@
 <translation id="5470735824776589490">Berrabiarazi egin behar da gailuan fabrikako ezarpenak berrezarri ahal izateko. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">Kaixo! Testua ahots bihurtzeko eginbidearen ahotsa naiz.</translation>
 <translation id="5473333559083690127">Idatzi berriro PIN kodea</translation>
-<translation id="548137908954174608">Gaitu istanteko azpitituluak</translation>
+<translation id="548137908954174608">Gaitu Istanteko azpitituluak</translation>
 <translation id="5481941284378890518">Gehitu inguruko inprimagailuak</translation>
 <translation id="5483785310822538350">Baliogabetu fitxategietarako eta gailurako sarbidea</translation>
 <translation id="5485080380723335835">Segurtasuna bermatzeko, blokeatuta dago <ph name="DEVICE_TYPE" /> gailua. Aurrera egiteko, idatzi pasahitza eskuz.</translation>
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Fabrikako ezarpenak berrezarri behar dira Powerwash bidez hurrengo aldiz berrabiaraztean</translation>
 <translation id="8102159139658438129">Joan <ph name="LINK_BEGIN" />Ezarpenak<ph name="LINK_END" /> atalera eta ikusi konektatutako telefonoarekin egin dezakezuna</translation>
 <translation id="8104696615244072556">Berrezarri <ph name="IDS_SHORT_PRODUCT_NAME" /> gailuaren fabrikako ezarpenak eta itzuli aurreko bertsiora.</translation>
-<translation id="8106661353233173262">Arazoren bat izan da. Analizatutako fitxategiaren denbora-muga gainditu da.</translation>
 <translation id="8107015733319732394">Google Play Store <ph name="DEVICE_TYPE" /> gailuan instalatzen ari gara. Minutu batzuk beharko ditugu.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ez dago hirugarrenen cookierik}=1{Hirugarrenen 1 cookie blokeatu da}other{Hirugarrenen # cookie blokeatu dira}}</translation>
 <translation id="810875025413331850">Ez da aurkitu gailurik inguruan.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 38a10cfd..4258cb54 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -5020,7 +5020,6 @@
 <translation id="8101987792947961127">در راه‌اندازی مجدد بعدی پاکسازی لازم است</translation>
 <translation id="8102159139658438129">برای دیدن گزینه‌های تلفن متصل، به <ph name="LINK_BEGIN" />تنظیمات<ph name="LINK_END" /> بروید</translation>
 <translation id="8104696615244072556">‏دستگاه <ph name="IDS_SHORT_PRODUCT_NAME" /> شما Powerwash می‌شود و به نسخه قبلی باز می‌گردد.</translation>
-<translation id="8106661353233173262">مشکلی پیش آمد. مهلت فایل اسکن‌شده پایان یافته است.</translation>
 <translation id="8107015733319732394">‏«فروشگاه Google Play» در <ph name="DEVICE_TYPE" /> شما درحال نصب شدن است. ممکن است این کار چند دقیقه طول بکشد.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{فاقد کوکی شخص ثالث}=1{۱ کوکی شخص ثالث مسدود شده است}one{# کوکی شخص ثالث مسدود شده است}other{# کوکی شخص ثالث مسدود شده است}}</translation>
 <translation id="810875025413331850">هیچ دستگاه نزدیکی پیدا نشد.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 029668a..70a09917 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">Powerwash vaaditaan seuraavan uudelleenkäynnistyksen yhteydessä</translation>
 <translation id="8102159139658438129">Katso yhdistetyn puhelimen toiminnot <ph name="LINK_BEGIN" />asetuksista<ph name="LINK_END" />.</translation>
 <translation id="8104696615244072556">Suorita Powerwash <ph name="IDS_SHORT_PRODUCT_NAME" />-laitteellesi ja palaa aiempaan versioon.</translation>
-<translation id="8106661353233173262">Jotain meni vikaan. Tiedoston skannaus aikakatkaistiin.</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> asentaa Google Play Kauppaa. Tämä voi kestää pari minuuttia.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ei kolmannen osapuolen evästeitä}=1{1 kolmannen osapuolen eväste on estetty}other{# kolmannen osapuolen evästettä on estetty}}</translation>
 <translation id="810875025413331850">Lähistöllä olevia laitteita ei löydy.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 248a2f1d..9d4f9f1 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Kinakailangan ng Powerwash sa susunod na reboot</translation>
 <translation id="8102159139658438129">Pumunta sa <ph name="LINK_BEGIN" />Mga Setting<ph name="LINK_END" /> para makakita ng mga opsyon para sa iyong nakakonektang telepono</translation>
 <translation id="8104696615244072556">I-powerwash ang iyong <ph name="IDS_SHORT_PRODUCT_NAME" /> device at ibalik sa dating bersyon.</translation>
-<translation id="8106661353233173262">Nagkaproblema. Nag-time out ang na-scan na file.</translation>
 <translation id="8107015733319732394">Ini-install ang Google Play Store sa iyong <ph name="DEVICE_TYPE" />. Maaaring abutin ito nang ilang minuto.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Walang third-party na cookies}=1{1 third-party na cookie ang na-block}one{# third-party na cookies ang na-block}other{# na third-party na cookies ang na-block}}</translation>
 <translation id="810875025413331850">Walang nakitang device na nasa malapit.</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index f46fca8..0e9ae43 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -734,7 +734,7 @@
 <translation id="2018352199541442911">Désolés, votre périphérique de stockage externe n'est pas compatible pour le moment.</translation>
 <translation id="2019718679933488176">&amp;Ouvrir le fichier audio dans un nouvel onglet</translation>
 <translation id="2020183425253392403">Afficher les paramètres d'adresses réseau</translation>
-<translation id="2020225359413970060">Balayer le fichier</translation>
+<translation id="2020225359413970060">Analyser le fichier</translation>
 <translation id="2022953316617983419">Code QR</translation>
 <translation id="2023167225947895179">Ce NIP est facile à deviner</translation>
 <translation id="202352106777823113">Le téléchargement prenait trop de temps et a été interrompu par le réseau.</translation>
@@ -764,7 +764,7 @@
 <translation id="2059913712424898428">Fuseau horaire</translation>
 <translation id="2065405795449409761">Google Chrome est contrôlé par un logiciel de test automatisé.</translation>
 <translation id="2071393345806050157">Pas de journal local.</translation>
-<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Cliquez pour installer l'extension}one{Cliquez pour installer cette extension}other{Cliquez pour installer ces extensions}}</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Cliquer pour installer l'extension}one{Cliquer pour installer cette extension}other{Cliquer pour installer ces extensions}}</translation>
 <translation id="2075474481720804517">Pile à <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="2075959085554270910">Permet d'activer/de désactiver la fonction Toucher pour cliquer et le déplacement tactile</translation>
 <translation id="2076269580855484719">Masquer ce plugiciel</translation>
@@ -2957,7 +2957,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> veut télécharger plusieurs fichiers</translation>
 <translation id="5192062846343383368">Ouvrez l'application Family Link pour afficher vos paramètres de supervision</translation>
 <translation id="5193988420012215838">Copié dans votre presse-papier</translation>
-<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{Cliquez pour afficher l'extension}one{Cliquez pour afficher cette extension}other{Cliquez pour afficher ces extensions}}</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{Cliquer pour afficher l'extension}one{Cliquer pour afficher cette extension}other{Cliquer pour afficher ces extensions}}</translation>
 <translation id="5204673965307125349">Veuillez effectuer un Powerwash sur l'appareil et réessayer.</translation>
 <translation id="5206215183583316675">Supprimer « <ph name="CERTIFICATE_NAME" /> »?</translation>
 <translation id="520621735928254154">Erreur d'importation du certificat</translation>
@@ -3903,7 +3903,7 @@
 <translation id="6531282281159901044">Conserver le fichier dangereux</translation>
 <translation id="6532101170117367231">Enregistrer dans Google Disque</translation>
 <translation id="6532106788206463496">Enregistrer les modifications</translation>
-<translation id="6532663472409656417">Entreprise inscrite</translation>
+<translation id="6532663472409656417">Inscrit à une entreprise</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Remarque<ph name="END_BOLD" /> : n'activez cette option que si vous êtes sûr de ce que vous faites ou si vous avez été invité à le faire. En effet, la collecte de données est susceptible de diminuer les performances.</translation>
 <translation id="6541638731489116978">Ce site a été bloqué : il ne peut pas accéder à vos capteurs de mouvement.</translation>
 <translation id="6545665334409411530">Fréquence de répétition</translation>
@@ -4045,7 +4045,7 @@
 <translation id="6758056191028427665">Donnez-nous votre avis sur nos services.</translation>
 <translation id="6759193508432371551">Rétablir la configuration d'usine</translation>
 <translation id="6762833852331690540">Activé</translation>
-<translation id="6767115174726603949">Accéder aux appareil et aux données de réalité virtuelle</translation>
+<translation id="6767115174726603949">Accéder aux appareils et aux données de réalité virtuelle</translation>
 <translation id="6767566652486411142">Choisir une autre langue…</translation>
 <translation id="6767639283522617719">Impossible d'associer le domaine. Assurez-vous que les paramètres sont corrects pour l'unité organisationnelle.</translation>
 <translation id="6769712124046837540">Ajout d'une imprimante en cours…</translation>
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Réinitialisation « Powerwash » nécessaire au prochain démarrage</translation>
 <translation id="8102159139658438129">Accédez à <ph name="LINK_BEGIN" />Paramètres<ph name="LINK_END" /> pour afficher les options de votre téléphone connecté</translation>
 <translation id="8104696615244072556">Utilisez la fonction Powerwash sur votre appareil <ph name="IDS_SHORT_PRODUCT_NAME" /> et revenez à la version précédente.</translation>
-<translation id="8106661353233173262">Un problème s'est produit. Le fichier analysé a expiré.</translation>
 <translation id="8107015733319732394">Installation du Google Play Store sur votre <ph name="DEVICE_TYPE" /> en cours… Cela peut prendre quelques minutes.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Aucun témoin tiers}=1{1 témoin tiers est bloqué}one{# témoin tiers est bloqué}other{# témoins tiers sont bloqués}}</translation>
 <translation id="810875025413331850">Aucun appareil à proximité n'a été détecté.</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index d1bef09..1ffabf0 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -651,7 +651,7 @@
 <translation id="1879000426787380528">Se connecter à l'aide du compte</translation>
 <translation id="1880905663253319515">Supprimer le certificat "<ph name="CERTIFICATE_NAME" />" ?</translation>
 <translation id="1884013283844450420">Réseau <ph name="NETWORK_INDEX" /> sur <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, connexion</translation>
-<translation id="1884930769492918228">Suivre la position de la caméra et cartographier votre pièce</translation>
+<translation id="1884930769492918228">Suivre la position de la caméra et cartographier la pièce</translation>
 <translation id="1886996562706621347">Permettre aux sites de demander l'autorisation de devenir gestionnaires par défaut des protocoles (recommandé)</translation>
 <translation id="1887442540531652736">Erreur de connexion</translation>
 <translation id="1887597546629269384">Dites à nouveau "Ok Google"</translation>
@@ -3133,7 +3133,7 @@
 <translation id="5449588825071916739">Ajouter tous les onglets aux favoris…</translation>
 <translation id="5449716055534515760">Fe&amp;rmer la fenêtre</translation>
 <translation id="5454166040603940656">avec <ph name="PROVIDER" /></translation>
-<translation id="5454360575035671759">Si vous supprimez Plugin VM, la VM le sera également, y compris ses applications, ses paramètres et ses données. Voulez-vous vraiment continuer ?</translation>
+<translation id="5454360575035671759">Si vous supprimez Plugin VM, cela supprimera aussi la VM, y compris ses applications, ses paramètres et ses données. Voulez-vous vraiment continuer ?</translation>
 <translation id="5457113250005438886">Non valide</translation>
 <translation id="5457459357461771897">Accéder aux photos, à la musique et aux autres fichiers multimédias stockés sur votre ordinateur et les supprimer</translation>
 <translation id="5457599981699367932">Naviguer en tant qu'invité</translation>
@@ -4472,7 +4472,7 @@
 <translation id="7352651011704765696">Un problème est survenu</translation>
 <translation id="735361434055555355">Installation de Linux…</translation>
 <translation id="7353887511974462734">Ajouter à un groupe existant</translation>
-<translation id="7354341762311560488">Le lecteur d'empreinte digitale est situé en bas à gauche du clavier. Appuyez dessus légèrement avec n'importe quel doigt.</translation>
+<translation id="7354341762311560488">Le lecteur d'empreinte digitale est situé en bas à gauche sur le clavier. Appuyez dessus légèrement avec n'importe quel doigt.</translation>
 <translation id="735745346212279324">VPN déconnecté</translation>
 <translation id="7359588939039777303">Annonces bloquées.</translation>
 <translation id="7360183604634508679">Menu "Favoris"</translation>
@@ -5024,7 +5024,6 @@
 <translation id="8101987792947961127">Powerwash requis au prochain redémarrage</translation>
 <translation id="8102159139658438129">Accédez à <ph name="LINK_BEGIN" />Paramètres<ph name="LINK_END" /> pour consulter les options de votre téléphone connecté</translation>
 <translation id="8104696615244072556">Réinitialiser l'appareil <ph name="IDS_SHORT_PRODUCT_NAME" /> avec la fonctionnalité Powerwash et rétablir la version précédente</translation>
-<translation id="8106661353233173262">Un problème est survenu. Le délai d'analyse du fichier a été dépassé.</translation>
 <translation id="8107015733319732394">Installation du Google Play Store sur votre <ph name="DEVICE_TYPE" />. Cette opération peut prendre quelques minutes.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Aucun cookie tiers}=1{1 cookie tiers bloqué}one{# cookie tiers bloqué}other{# cookies tiers bloqués}}</translation>
 <translation id="810875025413331850">Aucun appareil à proximité n'a été trouvé.</translation>
@@ -5109,7 +5108,7 @@
 <translation id="8227119283605456246">Joindre un fichier</translation>
 <translation id="8230134520748321204">Enregistrer le mot de passe pour <ph name="ORIGIN" /> ?</translation>
 <translation id="8234795456569844941">Pour aider nos ingénieurs à corriger ce problème, veuillez nous indiquer ce qui s'est passé juste avant de recevoir le message d'erreur concernant le profil :</translation>
-<translation id="8236123533334037984">Votre organisation analyse ces données importées à des fins de sécurité.</translation>
+<translation id="8236123533334037984">Votre organisation analyse le contenu de l'importation pour en vérifier la conformité.</translation>
 <translation id="8236917170563564587">Partager cet onglet à la place</translation>
 <translation id="8237647586961940482">Rose foncé et rouge</translation>
 <translation id="8241040075392580210">Nuage</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index d289264..e65af028 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -3132,7 +3132,7 @@
 <translation id="5449588825071916739">Engadir todas as pestanas aos marcadores</translation>
 <translation id="5449716055534515760">Pechar &amp;ventá</translation>
 <translation id="5454166040603940656">con <ph name="PROVIDER" /></translation>
-<translation id="5454360575035671759">A eliminación do Plugin VM eliminará a túa VM. Aquí inclúense as súas aplicacións, opcións de configuración e datos. Seguro que queres continuar?</translation>
+<translation id="5454360575035671759">A eliminación do Plugin VM eliminará a túa máquina virtual. Aquí inclúense as súas aplicacións, opcións de configuración e datos. Seguro que queres continuar?</translation>
 <translation id="5457113250005438886">Non válidos</translation>
 <translation id="5457459357461771897">Ler e eliminar fotos, música e outros ficheiros multimedia do teu ordenador</translation>
 <translation id="5457599981699367932">Navegar como invitado</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">No seguinte reinicio é necesario un Powerwash</translation>
 <translation id="8102159139658438129">Accede a <ph name="LINK_BEGIN" />Configuración<ph name="LINK_END" /> se queres ver as opción para o teléfono conectado</translation>
 <translation id="8104696615244072556">Fai un powerwash do teu dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e volve á versión anterior.</translation>
-<translation id="8106661353233173262">Produciuse un erro. Esgotouse o tempo de espera do ficheiro analizado.</translation>
 <translation id="8107015733319732394">Estase instalando Google Play Store no dispositivo <ph name="DEVICE_TYPE" />. Esta operación pode tardar uns minutos.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Non hai ningunha cookie de terceiros}=1{Bloqueouse 1 cookie de terceiros}other{Bloqueáronse # cookies de terceiros}}</translation>
 <translation id="810875025413331850">Non se encontraron dispositivos cerca.</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 57dce31..349c20f 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -393,6 +393,7 @@
 <translation id="1545177026077493356">સ્વચલિત કિઓસ્ક મોડ</translation>
 <translation id="1545775234664667895">ઇન્સ્ટોલ કરેલી થીમ "<ph name="THEME_NAME" />"</translation>
 <translation id="1546280085599573572">જ્યારે તમે હોમ બટન ક્લિક કરો છો ત્યારે જે પૃષ્ઠ દર્શાવવામાં આવે છે તે આ એક્સટેન્શને બદલ્યું છે.</translation>
+<translation id="1549275686094429035">ARC ચાલુ છે</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" />, <ph name="VOLUME_NAME" />ને ઍક્સેસ કરવા માંગે છે. તે તમારી ફાઇલોમાં ફેરફાર કરી અથવા ડિલીટ કરી શકે છે.</translation>
 <translation id="1553538517812678578">અસીમિત</translation>
 <translation id="1554390798506296774"><ph name="HOST" /> પર અનસેન્ડબૉક્સ્ડ પ્લગિન્સને હંમેશા મંજૂરી આપો</translation>
@@ -646,6 +647,7 @@
 <translation id="1879000426787380528">આ એકાઉન્ટથી સાઇન ઇન કરો</translation>
 <translation id="1880905663253319515">પ્રમાણપત્ર "<ph name="CERTIFICATE_NAME" />" ડિલીટ કરી દઈએ?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" />માંથી નેટવર્ક <ph name="NETWORK_INDEX" />, <ph name="NETWORK_NAME" />, કનેક્ટ કરો</translation>
+<translation id="1884930769492918228">કૅમેરાની સ્થિતિને ટ્રૅક કરવા અને તમારા રૂમનો નકશો બનાવવો</translation>
 <translation id="1886996562706621347">પ્રોટોકૉલ્સ માટે ડિફૉલ્ટ હેન્ડલર્સ બનવા માટે સાઇટને પૂછવાની મંજૂરી આપો (ભલામણ કરેલ)</translation>
 <translation id="1887442540531652736">સાઇન-ઇનમાં ભૂલ</translation>
 <translation id="1887597546629269384">ફરી "હે Google" કહો</translation>
@@ -728,6 +730,7 @@
 <translation id="2018352199541442911">માફ કરશો, આ સમયે તમારા બાહ્ય ઉપકરણને સપોર્ટ નથી.</translation>
 <translation id="2019718679933488176">નવા ટૅબમાં ઑડિયો &amp;ખોલો</translation>
 <translation id="2020183425253392403">નેટવર્ક સરનામાની સેટિંગ્સ બતાવો</translation>
+<translation id="2020225359413970060">ફાઇલને સ્કૅન કરો</translation>
 <translation id="2022953316617983419">QR કોડ</translation>
 <translation id="2023167225947895179">PIN અનુમાન કરવામાં સરળ હોઈ શકે છે</translation>
 <translation id="202352106777823113">ડાઉનલોડ ઘણો સમય લઈ રહ્યું હતું અને નેટવર્ક દ્વારા રોકવામાં આવ્યું હતું.</translation>
@@ -757,6 +760,7 @@
 <translation id="2059913712424898428">સમય ઝોન</translation>
 <translation id="2065405795449409761">Chrome, સ્વચલિત પરીક્ષણ સોફ્ટવેર દ્વારા નિયંત્રિત કરવામાં આવી રહ્યું છે.</translation>
 <translation id="2071393345806050157">કોઇ સ્થાનિક લૉગ ફાઇલ નથી.</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{એક્સ્ટેંશન ઇન્સ્ટૉલ કરવા માટે ક્લિક કરો}one{આ એક્સ્ટેંશન ઇન્સ્ટૉલ કરવા માટે ક્લિક કરો}other{આ એક્સ્ટેંશન ઇન્સ્ટૉલ કરવા માટે ક્લિક કરો}}</translation>
 <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% બૅટરી</translation>
 <translation id="2075959085554270910">તમને ક્લિક કરવા હલકું દબાવોને અને ટૅપ કરીને ખેંચોને ચાલુ/બંધ કરવાની મંજૂરી આપે છે</translation>
 <translation id="2076269580855484719">આ પ્લગિન છુપાવો </translation>
@@ -852,6 +856,7 @@
 <translation id="219008588003277019">મૂળ ક્લાયંટ મોડ્યુલ: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(ખાલી)</translation>
 <translation id="2191223688506386601">એક છેલ્લી બાબત</translation>
+<translation id="2191754378957563929">ચાલુ</translation>
 <translation id="2192505247865591433">તરફથી:</translation>
 <translation id="2193365732679659387">વિશ્વાસ સેટિંગ્સ</translation>
 <translation id="2195331105963583686">તેમ તે સમય પછી પણ આ <ph name="DEVICE_TYPE" />નો ઉપયોગ કરી શકશો પણ હવેથી ઑટોમૅટિક સૉફ્ટવેર અને સુરક્ષા અપડેટ મળશે નહીં</translation>
@@ -1363,6 +1368,7 @@
 <translation id="2875698561019555027">(Chrome ભૂલ પૃષ્ઠો)</translation>
 <translation id="2876336351874743617">આંગળી 2</translation>
 <translation id="2876369937070532032">તમારી સુરક્ષા જોખમમાં હોય ત્યારે, તમે મુલાકાત લેતા હો તે કેટલાક પેજના URLs Googleને મોકલે છે</translation>
+<translation id="2877030408509021795">સ્કૅન પૂર્ણ થયું, આગળ વધવા માટે બધું તૈયાર છે.</translation>
 <translation id="2878782256107578644">સ્કૅનની પ્રક્રિયા થઈ રહી છે, શું હમણાં ખોલીએ?</translation>
 <translation id="288042212351694283">તમારા યુનિવર્સલ 2જા ફેક્ટરના ઉપકરણોની ઍક્સેસ</translation>
 <translation id="2881076733170862447">તમે એક્સ્ટેંશનને ક્લિક કરો ત્યારે</translation>
@@ -1694,6 +1700,7 @@
 <translation id="3382073616108123819">અરેરે!  આ ઉપકરણ માટે ઉપકરણ ઓળખકર્તા નક્કી કરવામાં સિસ્ટમ નિષ્ફળ થઇ.</translation>
 <translation id="3382086682569279540">તમે મેનેજ કરો છો તે એકાઉન્ટને ટૂંક સમયમાં કાઢી નાખવામાં આવશે</translation>
 <translation id="3382200254148930874">નિરીક્ષણ બંધ કરી રહ્યાં છીએ...</translation>
+<translation id="3383210070657133526">વર્ચ્યુઅલ રિયાલિટી સત્રો શરૂ કરવા માટે <ph name="URL" /> સક્ષમ થવા માગે છે</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">વિભાજક</translation>
 <translation id="338691029516748599"><ph name="NETWORK_COUNT" />માંથી નેટવર્ક <ph name="NETWORK_INDEX" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, સિગ્નલની સશક્તતા <ph name="SIGNAL_STRENGTH" />%, તમારા વ્યવસ્થાપક દ્વારા મેનેજ કરવામાં આવે છે, કનેક્ટ કરો</translation>
@@ -2030,6 +2037,7 @@
 <translation id="3819800052061700452">&amp;પૂર્ણ સ્ક્રીન</translation>
 <translation id="3820172043799983114">અમાન્ય PIN.</translation>
 <translation id="3820749202859700794">SECG એલિપ્ટિક કર્વ secp521r1 (ઉર્ફ NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{એક્સ્ટેંશન મંજૂર કરવામાં આવ્યું છે}one{# એક્સ્ટેંશન મંજૂર કરવામાં આવ્યું છે}other{# એક્સ્ટેંશન મંજૂર કરવામાં આવ્યા છે}}</translation>
 <translation id="3822559385185038546">આ પ્રૉક્સી તમારા એડમિન દ્વારા લાગુ કરવામાં આવે છે</translation>
 <translation id="3826440694796503677">તમારા વ્યવસ્થાપકે Googleના વધુ એકાઉન્ટ ઉમેરવાની ક્ષમતા બંધ કરી છે</translation>
 <translation id="3827306204503227641">અનસેન્ડબૉક્સ્ડ પ્લગિન્સને મંજૂરી આપવાનું ચાલુ રાખો</translation>
@@ -2388,6 +2396,7 @@
 <translation id="4353114845960720315">જ્યારે તમે VRમાં હો, ત્યારે આ સાઇટ આના વિશે જાણી શકે છે:</translation>
 <translation id="4354344420232759511">તમે મુલાકાત લીધેલી સાઇટ અહીં દેખાશે</translation>
 <translation id="435527878592612277">તમારો ફોટો પસંદ કરો</translation>
+<translation id="4357784477082216550"><ph name="URL" /> કૅમેરાની સ્થિતિને ટ્રૅક કરવા અને તમારા રૂમનો નકશો બનાવવા માગે છે</translation>
 <translation id="4358313196493694334">ક્લિક સ્થાન સ્થિર રાખો</translation>
 <translation id="4359408040881008151">નિર્ભર એક્સ્ટેન્શન(એક્સ્ટેન્શન્સ)ને લીધે ઇન્સ્ટોલ કર્યું.</translation>
 <translation id="4359717112757026264">સિટિસ્કેપ</translation>
@@ -2628,6 +2637,7 @@
 <translation id="4720185134442950733">મોબાઇલ ડેટા નેટવર્ક</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" /> માટેનો પાસવર્ડ</translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> તમારી સ્ક્રીનને શેર કરી રહી છે.</translation>
+<translation id="4723140812774948886">આગલી આઇટમ સાથે અદલાબદલી કરો</translation>
 <translation id="4724450788351008910">એફિલિએશન બદલાયું</translation>
 <translation id="4725511304875193254">કોર્ગી - કૂતરાની એક પ્રજાતિ</translation>
 <translation id="4726710629007580002">આ એક્સ્ટેંશન ઇન્સ્ટોલ કરવાનો પ્રયાસ કરતી વખતે ચેતવણીઓ હતી:</translation>
@@ -2942,6 +2952,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> એકથી વધુ ફાઇલો ડાઉનલોડ કરવા માગે છે</translation>
 <translation id="5192062846343383368">તમારા નિરીક્ષણ સેટિંગ જોવા માટે Family Link ઍપ ખોલો</translation>
 <translation id="5193988420012215838">તમારા ક્લિપબોર્ડ પર કૉપિ કરવામાં આવી</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{આ એક્સ્ટેંશન જોવા માટે ક્લિક કરો}one{આ એક્સ્ટેંશન જોવા માટે ક્લિક કરો}other{આ એક્સ્ટેંશન જોવા માટે ક્લિક કરો}}</translation>
 <translation id="5204673965307125349">કૃપા કરીને ડિવાઇસને પાવરવોશ કરો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="5206215183583316675">"<ph name="CERTIFICATE_NAME" />"ને ડિલીટ કરી દઈએ?</translation>
 <translation id="520621735928254154">પ્રમાણપત્ર આયાત કરવામાં ભૂલ</translation>
@@ -3024,6 +3035,7 @@
 <translation id="5310281978693206542">તમારા ડિવાઇસ પર લિંક મોકલો</translation>
 <translation id="5311304534597152726">આ તરીકે સાઇન ઇન કરી રહ્યાં છે</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
+<translation id="5313628438272378649">આ અપલોડ તમારી સંસ્થાની સુરક્ષા નીતિઓનું ઉલ્લંઘન કરે છે અને પૂર્ણ થઈ શકતું નથી.</translation>
 <translation id="5315738755890845852">અતિરિક્ત વાંકળિયો કૌંસ: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">ઓળખ</translation>
 <translation id="5317780077021120954">સાચવો</translation>
@@ -3079,6 +3091,7 @@
 <translation id="5398772614898833570">જાહેરાતો અવરોધિત કરી</translation>
 <translation id="5402815541704507626">મોબાઇલ ડેટાનો ઉપયોગ કરીને અપડેટ ડાઉનલોડ કરો</translation>
 <translation id="540296380408672091"><ph name="HOST" /> પર કુકીઝને હંમેશાં અવરોધિત કરો</translation>
+<translation id="540495485885201800">અગાઉની આઇટમ સાથે અદલાબદલી કરો</translation>
 <translation id="5405146885510277940">સેટિંગ રીસેટ કરો</translation>
 <translation id="5408750356094797285">ઝૂમ કરો: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">આ હોસ્ટ અને ડોમેન માટે પ્રૉક્સી સેટિંગનો ઉપયોગ કરશો નહીંં:</translation>
@@ -3116,6 +3129,7 @@
 <translation id="5449588825071916739">તમામ ટૅબ્સ બુકમાર્ક કરો</translation>
 <translation id="5449716055534515760">Close Win&amp;dow</translation>
 <translation id="5454166040603940656"><ph name="PROVIDER" /> સાથે</translation>
+<translation id="5454360575035671759">Plugin VM કાઢી નાખવાથી તમારું VM ડિલીટ થઈ જશે. જેમાં તેની ઍપ્લિકેશન, સેટિંગ અને ડેટા શામેલ છે. શું તમે ખરેખર આગળ વધવા માગો છો?</translation>
 <translation id="5457113250005438886">અમાન્ય</translation>
 <translation id="5457459357461771897">વાંચો અને તમારા કમ્પ્યુટરમાંથી ફોટો, મ્યુઝિક અને બીજું મીડિયા ડિલીટ કરો</translation>
 <translation id="5457599981699367932">અતિથિ તરીકે બ્રાઉઝ કરો</translation>
@@ -3132,6 +3146,7 @@
 <translation id="5470735824776589490">તમારું ડિવાઇસ Powerwash સાથે રીસેટ થઈ શકે તે પહેલાં એકવાર ફરી શરૂ કરવું આવશ્યક છે. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">કેમ છો! હું તમારો ટેક્સ્ટ-ટુ-સ્પીચ વૉઇસ છું.</translation>
 <translation id="5473333559083690127">નવો PIN ફરીથી દાખલ કરો</translation>
+<translation id="548137908954174608">લાઇવ કૅપ્શન ચાલુ કરો</translation>
 <translation id="5481941284378890518">નજીકના પ્રિન્ટર્સ ઉમેરો</translation>
 <translation id="5483785310822538350">ફાઇલ અને ઉપકરણ ઍક્સેસને રદબાતલ કરો</translation>
 <translation id="5485080380723335835">તમારું <ph name="DEVICE_TYPE" /> સુરક્ષા માટે લૉક કરેલ છે. ચાલુ રાખવા માટે તમારો પાસવર્ડ જાતે દાખલ કરો.</translation>
@@ -3168,6 +3183,7 @@
 <translation id="5518584115117143805">એન્ક્રિપ્શન પ્રમાણપત્ર ઇમેઇલ કરો</translation>
 <translation id="5521078259930077036">શું આ તમારી અપેક્ષા મુજબનું હોમ પૃષ્ઠ છે?</translation>
 <translation id="5522156646677899028">આ એક્સટેન્શનમાં ગંભીર સુરક્ષા ભેદ્યતા છે.</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{તમારા વ્યવસ્થાપક દ્વારા એક્સ્ટેંશન ઇન્સ્ટૉલ કરવામાં આવ્યું છે}one{તમારા વ્યવસ્થાપક દ્વારા # એક્સ્ટેંશન ઇન્સ્ટૉલ કરવામાં આવ્યું છે}other{તમારા વ્યવસ્થાપક દ્વારા # એક્સ્ટેંશન ઇન્સ્ટૉલ કરવામાં આવ્યું છે}}</translation>
 <translation id="5525677322972469346">એક નવો નિરીક્ષિત વપરાશકર્તા બનાવો</translation>
 <translation id="5526701598901867718">બધા (અસુરક્ષિત)</translation>
 <translation id="5526745900034778153">સિંકને ફરી શરૂ કરવા માટે ફરીથી સાઇન ઇન કરો</translation>
@@ -3836,6 +3852,7 @@
 <translation id="6459799433792303855">સક્રિય વિંડો બીજા ડિસ્પ્લેમાં ખસેડી છે.</translation>
 <translation id="6460601847208524483">આગલું શોધો</translation>
 <translation id="6461170143930046705">નેટવર્ક શોધી રહ્યાં છીએ...</translation>
+<translation id="6462438303393708881">અપલોડ રદ કરો</translation>
 <translation id="6463795194797719782">&amp;સંપાદિત કરો</translation>
 <translation id="6466988389784393586">બધાં બુકમાર્ક્સ &amp;ખોલો</translation>
 <translation id="6467304607960172345">પૂર્ણસ્ક્રીન વીડિયો ઑપ્ટિમાઇઝ કરો</translation>
@@ -3883,6 +3900,7 @@
 <translation id="6531282281159901044">જોખમી ફાઇલ રાખો</translation>
 <translation id="6532101170117367231">Google ડ્રાઇવ પર સાચવો</translation>
 <translation id="6532106788206463496">ફેરફારો સાચવો</translation>
+<translation id="6532663472409656417">એન્ટરપ્રાઇઝ દ્વારા નોંધણી કરાયેલું</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" /> નોંધ: <ph name="END_BOLD" /> જો તમે શું કરી રહ્યાં છો તે તમે જાણતા હો અથવા જો તમને તેવું કરવા માટે કહેવામાં આવ્યું હોય તો જ ચાલુ કરો, કારણ કે ડેટાનો સંગ્રહ પ્રદર્શન પર અસર કરી શકે છે.</translation>
 <translation id="6541638731489116978">આ સાઇટને તમારા મોશન સેન્સરને ઍક્સેસ કરવાથી બ્લૉક કરવામાં આવી છે.</translation>
 <translation id="6545665334409411530">પુનરાવર્તન રેટ</translation>
@@ -4024,6 +4042,7 @@
 <translation id="6758056191028427665">અમને જણાવો કે અમે કેવું કાર્ય કરી રહ્યાં છીએ.</translation>
 <translation id="6759193508432371551">ફેક્ટરી ફરીથી સેટ કરો</translation>
 <translation id="6762833852331690540">ચાલુ</translation>
+<translation id="6767115174726603949">વર્ચ્યુઅલ રિયાલિટી ડિવાઇસ અને ડેટા ઍક્સેસ કરો</translation>
 <translation id="6767566652486411142">બીજી ભાષા પસંદ કરો...</translation>
 <translation id="6767639283522617719">ડોમેન જોડી શકાતું નથી. સંસ્થાકીય એકમ માટે સેટિંગ યોગ્ય છે તેની ખાતરી કરો.</translation>
 <translation id="6769712124046837540">પ્રિન્ટર ઉમેરી રહ્યું છે...</translation>
@@ -4036,6 +4055,7 @@
 <translation id="677965093459947883">ખૂબ નાનું</translation>
 <translation id="6781284683813954823">ડૂડલ લિંક</translation>
 <translation id="6781978626986383437">Linuxનું બૅકઅપ રદ કર્યું</translation>
+<translation id="6785915470941880363">રિવર્સ સ્ક્રોલિંગ <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">એક્સ્ટેન્શન્સ</translation>
 <translation id="6787839852456839824">કીબોર્ડ શોર્ટકટ્સ</translation>
 <translation id="6788210894632713004">અનપૅક કરેલ એક્સ્ટેન્શન</translation>
@@ -4142,6 +4162,7 @@
 <translation id="6923132443355966645">સ્ક્રૉલ કરો/ ક્લિક કરો</translation>
 <translation id="6923633482430812883">શેર માઉન્ટ કરવામાં ભૂલ. કૃપા કરીને ચેક કરો કે તમે કનેક્ટ કરવાનો પ્રયાસ કરી રહ્યા છો તે ફાઇલ સર્વર SMBv2 અથવા તે પછીના વર્ઝનનું સમર્થન કરે છે.</translation>
 <translation id="6930036377490597025">બાહ્ય સુરક્ષા કોડ અને બિલ્ટ-ઇન સેન્સર</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{એક્સ્ટેંશન નકારવામાં આવ્યું છે}one{# એક્સ્ટેંશન નકારવામાં આવ્યું છે}other{# એક્સ્ટેંશન નકારવામાં આવ્યા છે}}</translation>
 <translation id="6935286146439255109">પેપર ટ્રે ખૂટે છે</translation>
 <translation id="693807610556624488">લેખન ઓપરેશને એટ્રિબ્યુટની મહત્તમ લંબાઈને વટાવી દીધી છે: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">તમારી પાસે 1 સાચવેલું પ્રિન્ટર છે.</translation>
@@ -4230,6 +4251,7 @@
 <translation id="7053983685419859001">અવરોધિત કરો</translation>
 <translation id="7055152154916055070">રીડાયરેક્ટ કરવાનું બ્લૉક કરવામાં આવ્યું છે:</translation>
 <translation id="7056526158851679338">&amp;ઉપકરણોની તપાસ કરો</translation>
+<translation id="7057767408836081338">ઍપનો ડેટા મેળવવામાં નિષ્ફળ રહ્યાં, તેમ છતાં હજી પણ ઍપ ચલાવવાનો પ્રયાસ કરી રહ્યાં છીએ...</translation>
 <translation id="7059858479264779982">સ્વતઃ-લોંચ સેટ કરો</translation>
 <translation id="7059893117020417984">ખાનગી રીતે બ્રાઉઝ કરવા માટે, છુપી વિંડો ખોલવા માટે બિંદુના આઇકનવાળા મેનૂ પર ક્લિક કરો</translation>
 <translation id="7062222374113411376">ડેટા મોકલવાનું અને પ્રાપ્ત કરવાનું સમાપ્ત કરવા માટે તાજેતરમાં બંધ કરેલ સાઇટ્સને મંજૂરી આપો (ભલામણ કરેલ)</translation>
@@ -4283,6 +4305,7 @@
 <translation id="7120865473764644444">સમન્વયન સર્વર સાથે કનેક્ટ કરી શકાયું નથી. ફરી પ્રયાસ કરી રહ્યાં છે...</translation>
 <translation id="7121362699166175603">ઍડ્રેસ બારમાં ઇતિહાસ અને ઑટોમૅટિક રીતે પૂર્ણતા સાફ કરે છે. તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation>
 <translation id="7121389946694989825">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">ડેવલપર મોડ</translation>
 <translation id="7121728544325372695">સ્માર્ટ ડૅશ</translation>
 <translation id="7123360114020465152">હવે સમર્થિત રહ્યું નથી</translation>
 <translation id="7127980134843952133">ડાઉનલોડ ઇતિહાસ</translation>
@@ -4446,6 +4469,7 @@
 <translation id="7352651011704765696">કંઈક ખોટું થયું હતું</translation>
 <translation id="735361434055555355">Linux ઇન્સ્ટૉલ કરી રહ્યાં છીએ…</translation>
 <translation id="7353887511974462734">હાલના ગ્રૂપમાં ઉમેરો</translation>
+<translation id="7354341762311560488">ફિંગરપ્રિન્ટ સેન્સર એ તમારા કીબોર્ડ પર સૌથી નીચે ડાબી બાજુ સ્થિત કી છે. તેને કોઈપણ આંગળી વડે હળવેથી સ્પર્શ કરો.</translation>
 <translation id="735745346212279324">VPN ડિસ્કનેક્ટ કર્યું છે</translation>
 <translation id="7359588939039777303">જાહેરાતો અવરોધિત કરી.</translation>
 <translation id="7360183604634508679">બુકમાર્ક્સ મેનૂ</translation>
@@ -4745,6 +4769,7 @@
 <translation id="7792388396321542707">શેર કરવાનું રોકો</translation>
 <translation id="779308894558717334">આછો લીલો</translation>
 <translation id="7793098747275782155">ઘેરો વાદળી</translation>
+<translation id="7797571222998226653">બંધ</translation>
 <translation id="7799299114731150374">વૉલપેપર સફળતાપૂર્વક સેટ કર્યું</translation>
 <translation id="7800518121066352902">ઘ&amp;ડિયાળની વિપરિત દિશામાં ફેરવો</translation>
 <translation id="780301667611848630">નહીં, આભાર</translation>
@@ -4990,7 +5015,6 @@
 <translation id="8101987792947961127">આગલા રીબૂટ પર Powerwash આવશ્યક છે</translation>
 <translation id="8102159139658438129">તમારા કનેક્ટ કરેલા ફોન માટેના વિકલ્પો જોવા માટે <ph name="LINK_BEGIN" />સેટિંગ<ph name="LINK_END" /> પર જાઓ</translation>
 <translation id="8104696615244072556">તમારા <ph name="IDS_SHORT_PRODUCT_NAME" /> ડિવાઇસને Powerwash કરો અને પાછલા વર્ઝન પર પાછા ફરો.</translation>
-<translation id="8106661353233173262">કંઈક ખોટું થયું. તપાસેલી ફાઇલનો સમય સમાપ્ત થયો.</translation>
 <translation id="8107015733319732394">તમારા <ph name="DEVICE_TYPE" /> પર Google Play સ્ટોર ઇન્સ્ટૉલ કરી રહ્યાં છીએ. આમાં થોડી મિનિટ લાગી શકે છે.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ત્રીજા પક્ષની કોઈ કુકી નથી}=1{ત્રીજા પક્ષની 1 કુકી બ્લૉક કરવામાં આવી છે}one{ત્રીજા પક્ષની # કુકી બ્લૉક કરવામાં આવી છે}other{ત્રીજા પક્ષની # કુકી બ્લૉક કરવામાં આવી છે}}</translation>
 <translation id="810875025413331850">નજીકમાં કોઈ ડિવાઇસ ન મળ્યું.</translation>
@@ -5075,6 +5099,7 @@
 <translation id="8227119283605456246">ફાઇલ જોડો</translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> માટેનો પાસવર્ડ સાચવીએ?</translation>
 <translation id="8234795456569844941">કૃપા કરી અમારા એન્જિનિયરોને આ સમસ્યા ઠીક કરવામાં સહાય કરો. તમને પ્રોફાઇલમાં ભૂલ આવ્યાનો સંદેશ મળ્યો બિલકુલ તે પહેલા શું થયું હતું તે અમને જણાવો:</translation>
+<translation id="8236123533334037984">તમારી સંસ્થા આ અપલોડને સુરક્ષા મંજૂરી માટે સ્કૅન કરી રહી છે.</translation>
 <translation id="8236917170563564587">તેના બદલે આ ટૅબ શેર કરો</translation>
 <translation id="8237647586961940482">ઘેરો ગુલાબી અને લાલ</translation>
 <translation id="8241040075392580210">શૅડી</translation>
@@ -5531,6 +5556,7 @@
 <translation id="8863753581171631212">નવી <ph name="APP" />માં લિંક ખોલો</translation>
 <translation id="8864055848767439877"><ph name="TAB_NAME" />ને <ph name="APP_NAME" /> પર શેર કરી રહ્યાં છે</translation>
 <translation id="8864458770072227512">આ ડિવાઇસમાંથી <ph name="EMAIL" /> દૂર કરવામાં આવ્યું</translation>
+<translation id="8867228703146808825">ક્લિપબોર્ડ પર બિલ્ડની વિગતો કૉપિ કરો</translation>
 <translation id="8868626022555786497">ઉપયોગમાં</translation>
 <translation id="8870318296973696995">હોમ પેજ</translation>
 <translation id="8870413625673593573">તાજેતરમાં બંધ કરેલા</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 2abbfe8..aae69da 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -2000,7 +2000,7 @@
 <translation id="3780211714699334884">जब तक आप यह टैब बंद नहीं करेंगे, <ph name="FOLDERNAME" /> में मौजूद फ़ाइलों में <ph name="ORIGIN" /> बदलाव कर सकेगी</translation>
 <translation id="3780827508782506612">इस पेज का अनुवाद किया गया है</translation>
 <translation id="378312418865624974">इस कंप्यूटर का अद्वितीय पहचानकर्ता पढ़ें</translation>
-<translation id="3784472333786002075">कुकी ऐसी फ़ाइलें होती हैं जिन्हें वेबसाइटें बनाती हैं. कुकी दो तरह की होती हैं: पहले पक्ष की कुकी वह साइट बनाती है जिस पर आप जाते हैं. यह साइट, पता बार में दिखती है. तीसरे पक्ष की कुकी, अन्य साइटें बनाती हैं. इन साइटों पर विज्ञापन या इमेज जैसी कुछ ऐसी सामग्री होती है जो उस वेबसाइट पर दिखती है जिस पर आप जाते हैं.</translation>
+<translation id="3784472333786002075">कुकी ऐसी फ़ाइलें होती हैं जिन्हें वेबसाइटें बनाती हैं. कुकी दो तरह की होती हैं: पहले पक्ष की कुकी वह साइट बनाती है जिस पर आप जाते हैं. यह साइट, पता बार में दिखती है. तीसरे पक्ष की कुकी, अन्य साइटें बनाती हैं. इन साइटों पर विज्ञापन या इमेज जैसी कुछ ऐसी चीज़ें होती हैं जो उस वेबसाइट पर दिखती हैं जिस पर आप जाते हैं.</translation>
 <translation id="3785308913036335955">ऐप्स  शॉर्टकट दिखाएं</translation>
 <translation id="3785727820640310185">इस साइट के लिए सेव किए गए पासवर्ड</translation>
 <translation id="3788401245189148511">यह निम्न कर सकता है:</translation>
@@ -4996,7 +4996,6 @@
 <translation id="8101987792947961127">अगली बार रीबूट करने पर पावरवॉश ज़रूरी है</translation>
 <translation id="8102159139658438129">अपने जुड़े हुए फ़ोन के विकल्प देखने के लिए <ph name="LINK_BEGIN" />सेटिंग<ph name="LINK_END" /> पर जाएं</translation>
 <translation id="8104696615244072556">अपने <ph name="IDS_SHORT_PRODUCT_NAME" /> डिवाइस को पावरवॉश करें और पिछले वर्ज़न पर वापस लौटें.</translation>
-<translation id="8106661353233173262">कोई गड़बड़ी हुई. स्कैन की गई फ़ाइल का समय खत्म हो गया.</translation>
 <translation id="8107015733319732394">आपके <ph name="DEVICE_TYPE" /> पर Google Play स्टोर इंस्टॉल हो रहा है. इसमें कुछ मिनट लग सकते हैं.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{तीसरे पक्ष की कोई कुकी नहीं है}=1{तीसरे पक्ष की 1 कुकी ब्लॉक की गई है}one{तीसरे पक्ष की # कुकी ब्लॉक की गई हैं}other{तीसरे पक्ष की # कुकी ब्लॉक की गई हैं}}</translation>
 <translation id="810875025413331850">आस-पास का कोई ब्लूटूथ डिवाइस नहीं मिला.</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 46fba1c..b42c714c 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -651,7 +651,7 @@
 <translation id="1879000426787380528">Prijavite se kao</translation>
 <translation id="1880905663253319515">Izbrisati certifikat "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="1884013283844450420">Mreža <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, povežite</translation>
-<translation id="1884930769492918228">Pratiti položaj kamere i mapirati vašu prostoriju</translation>
+<translation id="1884930769492918228">pratiti položaj kamere i mapirati vašu prostoriju</translation>
 <translation id="1886996562706621347">Dopusti web-lokacijama traženje dopuštenja da postanu zadani rukovatelji za protokole (preporučeno)</translation>
 <translation id="1887442540531652736">Pogreška prijave</translation>
 <translation id="1887597546629269384">Ponovo izgovorite "Hej Google"</translation>
@@ -2041,7 +2041,7 @@
 <translation id="3819800052061700452">&amp;Puni ekran</translation>
 <translation id="3820172043799983114">PIN nije važeći.</translation>
 <translation id="3820749202859700794">SECG eliptična krivulja secp521r1 (poznata i kao NIST P-521)</translation>
-<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{Proširenje je odobreno}one{Broj odobrenih proširenja: #}few{Broj odobrenih proširenja: #}other{Broj odobrenih proširenja: #}}</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{Proširenje je odobreno}one{Odobreno je # proširenje}few{Odobrena su # proširenja}other{Odobreno je # proširenja}}</translation>
 <translation id="3822559385185038546">Taj proxy nametnuo je administrator</translation>
 <translation id="3826440694796503677">Vaš je administrator onemogućio dodavanje dodatnih Google računa</translation>
 <translation id="3827306204503227641">Nastavi dopuštati dodatke izvan testnog okruženja</translation>
@@ -3150,7 +3150,7 @@
 <translation id="5470735824776589490">Da biste mogli izvršiti Powerwash, trebate ponovo pokrenuti uređaj. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">Bok! Ja sam vaš glas alata za pretvaranje teksta u govor.</translation>
 <translation id="5473333559083690127">Ponovo unesite novi PIN</translation>
-<translation id="548137908954174608">Omogućivanje Automatskih titlova</translation>
+<translation id="548137908954174608">Omogućivanje automatskih titlova</translation>
 <translation id="5481941284378890518">Dodaj pisače u blizini</translation>
 <translation id="5483785310822538350">Opozovi pristup datotekama i uređaju</translation>
 <translation id="5485080380723335835">Vaš je <ph name="DEVICE_TYPE" /> zaključan radi sigurnosti. Ručno unesite zaporku za nastavak.</translation>
@@ -3187,7 +3187,7 @@
 <translation id="5518584115117143805">Certifikat enkripcije e-pošte</translation>
 <translation id="5521078259930077036">Je li to početna stranica koju ste očekivali?</translation>
 <translation id="5522156646677899028">To proširenje sadrži ozbiljni sigurnosni propust.</translation>
-<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Vaš administrator instalirao je proširenje}one{Vaš administrator instalirao je sljedeći broj proširenja: #}few{Vaš administrator instalirao je sljedeći broj proširenja: #}other{Vaš administrator instalirao je sljedeći broj proširenja: #}}</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Vaš administrator instalirao je proširenje}one{Vaš administrator instalirao je # proširenje}few{Vaš administrator instalirao je # proširenja}other{Vaš administrator instalirao je # proširenja}}</translation>
 <translation id="5525677322972469346">Izradi novog nadziranog korisnika</translation>
 <translation id="5526701598901867718">Sve (nije sigurno)</translation>
 <translation id="5526745900034778153">Prijavite se opet da biste ponovo pokrenuli sinkronizaciju</translation>
@@ -4044,7 +4044,7 @@
 <translation id="6758056191028427665">Recite nam koliko ste zadovoljni nama.</translation>
 <translation id="6759193508432371551">Vraćanje na tvorničke postavke</translation>
 <translation id="6762833852331690540">Uključeno</translation>
-<translation id="6767115174726603949">Pristupiti uređajima i podacima virtualne stvarnosti</translation>
+<translation id="6767115174726603949">pristupiti uređajima i podacima virtualne stvarnosti</translation>
 <translation id="6767566652486411142">Odabir drugog jezika…</translation>
 <translation id="6767639283522617719">Nije uspjelo pridruživanje domeni. Provjerite jesu li postavke ispravne za organizacijsku jedinicu.</translation>
 <translation id="6769712124046837540">Dodavanje pisača...</translation>
@@ -4057,7 +4057,7 @@
 <translation id="677965093459947883">Vrlo mali</translation>
 <translation id="6781284683813954823">Veza za doodle logotip</translation>
 <translation id="6781978626986383437">Otkazano je sigurnosno kopiranje Linuxa</translation>
-<translation id="6785915470941880363">Obrnuto pomicanje <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
+<translation id="6785915470941880363">Pomicanje u obratnom smjeru <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">Proširenja</translation>
 <translation id="6787839852456839824">Tipkovnički prečaci</translation>
 <translation id="6788210894632713004">Raspakirano proširenje</translation>
@@ -4471,7 +4471,7 @@
 <translation id="7352651011704765696">Nešto nije u redu</translation>
 <translation id="735361434055555355">Instaliranje Linuxa...</translation>
 <translation id="7353887511974462734">Dodaj u postojeću grupu</translation>
-<translation id="7354341762311560488">Senzor otiska prsta nalazi se u zadnjoj donjoj tipki s lijeve strane tipkovnice. Dodirnite ga lagano bilo kojim prstom.</translation>
+<translation id="7354341762311560488">Senzor otiska prsta nalazi se na zadnjoj donjoj tipki s lijeve strane tipkovnice. Dodirnite ga lagano bilo kojim prstom.</translation>
 <translation id="735745346212279324">Veza s VPN-om prekinuta</translation>
 <translation id="7359588939039777303">Oglasi su blokirani.</translation>
 <translation id="7360183604634508679">Izbornik oznaka</translation>
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Pri sljedećem ponovnom pokretanju potrebno je izvršiti Powerwash</translation>
 <translation id="8102159139658438129">Otvorite <ph name="LINK_BEGIN" />Postavke<ph name="LINK_END" /> da biste vidjeli opcije za povezani telefon</translation>
 <translation id="8104696615244072556">Pokrenite Powerwash na svom <ph name="IDS_SHORT_PRODUCT_NAME" /> uređaju i vratite ga na prethodnu verziju.</translation>
-<translation id="8106661353233173262">Nešto nije u redu. Skeniranje datoteke je isteklo.</translation>
 <translation id="8107015733319732394">Trgovina Google Play instalira se na vašem uređaju <ph name="DEVICE_TYPE" />. To bi moglo potrajati nekoliko minuta.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Bez kolačića treće strane}=1{Blokiran je jedan kolačić treće strane}one{Blokiran je # kolačić treće strane}few{Blokirana su # kolačića treće strane}other{Blokirano je # kolačića treće strane}}</translation>
 <translation id="810875025413331850">Nije pronađen nijedan uređaj u blizini.</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 674bbd88..498b352 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -651,7 +651,7 @@
 <translation id="1879000426787380528">Bejelentkezés mint</translation>
 <translation id="1880905663253319515">Törli a "<ph name="CERTIFICATE_NAME" />" tanúsítványt?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_INDEX" />. hálózat (összesen <ph name="NETWORK_COUNT" />), <ph name="NETWORK_NAME" />, csatlakozás</translation>
-<translation id="1884930769492918228">Kamera pozíciójának követése és a szoba leképezése</translation>
+<translation id="1884930769492918228">Kamera pozíciójának követése és a szoba feltérképezése</translation>
 <translation id="1886996562706621347">A webhelyek kérhetik, hogy protokollok alapértelmezett kezelői legyenek (ajánlott)</translation>
 <translation id="1887442540531652736">Bejelentkezési hiba</translation>
 <translation id="1887597546629269384">Mondja még egyszer azt, hogy „Ok Google”</translation>
@@ -2399,7 +2399,7 @@
 <translation id="4353114845960720315">Amíg VR-módban van, a webhely információkhoz juthat bizonyos dolgokról:</translation>
 <translation id="4354344420232759511">Az Ön által felkeresett webhelyek itt jelennek meg</translation>
 <translation id="435527878592612277">Válassza ki a fotóját</translation>
-<translation id="4357784477082216550">A webhely szeretné követni a kamera pozícióját és leképezni a szobát: <ph name="URL" /></translation>
+<translation id="4357784477082216550">A webhely szeretné követni a kamera pozícióját és feltérképezni a szobát: <ph name="URL" /></translation>
 <translation id="4358313196493694334">Kattintási hely stabilizálása</translation>
 <translation id="4359408040881008151">Telepítve az ezt nélkülözni nem tudó bővítmény(ek) miatt.</translation>
 <translation id="4359717112757026264">Városkép</translation>
@@ -5024,7 +5024,6 @@
 <translation id="8101987792947961127">Powerwash szükséges a következő újraindításkor</translation>
 <translation id="8102159139658438129">A <ph name="LINK_BEGIN" />Beállítások<ph name="LINK_END" /> között megtalálja a csatlakoztatott telefonra vonatkozó lehetőségeket.</translation>
 <translation id="8104696615244072556">Hajtson végre Powerwash műveletet <ph name="IDS_SHORT_PRODUCT_NAME" /> eszközén, és térjen vissza a korábbi verzióhoz.</translation>
-<translation id="8106661353233173262">Hiba történt. A fájl ellenőrzése túllépte az időkorlátot.</translation>
 <translation id="8107015733319732394">Folyamatban van a Google Play Áruház telepítése a(z) <ph name="DEVICE_TYPE" /> eszközre. Ez eltarthat néhány percig.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nem találhatók harmadik féltől származó cookie-k}=1{1 harmadik féltől származó cookie letiltva}other{# harmadik féltől származó cookie letiltva}}</translation>
 <translation id="810875025413331850">Nem található közeli eszköz.</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index b328b3d..03245e3 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -861,7 +861,7 @@
 <translation id="219008588003277019">Native Client մոդուլ` <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(դատարկ)</translation>
 <translation id="2191223688506386601">Գրեթե պատրաստ է</translation>
-<translation id="2191754378957563929">Միացնել</translation>
+<translation id="2191754378957563929">Միաց</translation>
 <translation id="2192505247865591433">Ուղարկող`</translation>
 <translation id="2193365732679659387">Վստահության կարգավորումներ</translation>
 <translation id="2195331105963583686">Դուք նախկինի պես կկարողանաք օգտագործել <ph name="DEVICE_TYPE" /> սարքը, սակայն այն այլևս չի ստանա ծրագրային և անվտանգության կարգավորումների ավտոմատ թարմացումներ:</translation>
@@ -4775,7 +4775,7 @@
 <translation id="7792388396321542707">Դադարեցնել համօգտագործումը</translation>
 <translation id="779308894558717334">Բաց կանաչ</translation>
 <translation id="7793098747275782155">Մուգ կապույտ</translation>
-<translation id="7797571222998226653">Անջատել</translation>
+<translation id="7797571222998226653">Անջատ</translation>
 <translation id="7799299114731150374">Պաստառը տեղադրվեց</translation>
 <translation id="7800518121066352902">Պտտել &amp;սլաքի հակառակ ուղղությամբ</translation>
 <translation id="780301667611848630">Ոչ</translation>
@@ -5025,7 +5025,6 @@
 <translation id="8101987792947961127">Հաջորդ վերաբեռնման ժամանակ հարկավոր է կատարել Powerwash</translation>
 <translation id="8102159139658438129">Սարքին միացված հեռախոսի ընտրանքները տեսնելու համար անցեք <ph name="LINK_BEGIN" />կարգավորումներ<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Կիրառեք Powerwash <ph name="IDS_SHORT_PRODUCT_NAME" /> սարքի համար և վերադարձեք նախորդ տարբերակին:</translation>
-<translation id="8106661353233173262">Սխալ առաջացավ: Ֆայլի ստուգման ժամանակը սպառվել է։</translation>
 <translation id="8107015733319732394">Google Play Խանութը տեղադրվում է <ph name="DEVICE_TYPE" /> սարքում։ Սա կարող է մի քանի րոպե տևել։</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Երրորդ կողմի քուքիներ չկան}=1{Երրորդ կողմի 1 քուքի արգելափակված է}one{Երրորդ կողմի # քուքի արգելափակված է}other{Երրորդ կողմի # քուքի արգելափակված է}}</translation>
 <translation id="810875025413331850">Մոտակա սարքեր չեն գտնվել:</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 19a103f..c794b0f 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -3037,7 +3037,7 @@
 <translation id="5310281978693206542">Kirim Link ke Perangkat Anda</translation>
 <translation id="5311304534597152726">Login sebagai</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> Coba lagi.</translation>
-<translation id="5313628438272378649">File yang diupload ini melanggar kebijakan keamanan organisasi Anda dan tidak dapat diselesaikan.</translation>
+<translation id="5313628438272378649">Upload ini melanggar kebijakan keamanan organisasi Anda dan tidak dapat diselesaikan.</translation>
 <translation id="5315738755890845852">Kurung kurawal tambahan: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">identitas</translation>
 <translation id="5317780077021120954">Simpan</translation>
@@ -3131,7 +3131,7 @@
 <translation id="5449588825071916739">Bookmark Semua Tab</translation>
 <translation id="5449716055534515760">Tutup Jen&amp;dela</translation>
 <translation id="5454166040603940656">dengan <ph name="PROVIDER" /></translation>
-<translation id="5454360575035671759">Menghapus Plugin VM akan menghapus VM Anda. Termasuk juga aplikasi, setelan, dan datanya. Yakin ingin melanjutkan?</translation>
+<translation id="5454360575035671759">Menghapus Plugin VM akan menghapus VM Anda. Ini termasuk juga aplikasi, setelan, dan datanya. Yakin ingin melanjutkan?</translation>
 <translation id="5457113250005438886">Tidak valid</translation>
 <translation id="5457459357461771897">Membaca dan menghapus foto, musik, serta media lain dari komputer Anda</translation>
 <translation id="5457599981699367932">Login sebagai Tamu</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">Perlu Powerwash saat mulai ulang berikutnya</translation>
 <translation id="8102159139658438129">Buka <ph name="LINK_BEGIN" />Setelan<ph name="LINK_END" /> guna melihat opsi untuk ponsel yang terhubung</translation>
 <translation id="8104696615244072556">Powerwash perangkat <ph name="IDS_SHORT_PRODUCT_NAME" /> dan kembalikan ke versi sebelumnya.</translation>
-<translation id="8106661353233173262">Terjadi error. Batas waktu file yang dipindai telah habis.</translation>
 <translation id="8107015733319732394">Menginstal Google Play Store di <ph name="DEVICE_TYPE" />. Tindakan ini dapat memakan waktu beberapa menit.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Tidak ada cookie pihak ketiga}=1{1 cookie pihak ketiga diblokir}other{# cookie pihak ketiga diblokir}}</translation>
 <translation id="810875025413331850">Tidak ditemukan perangkat di sekitar.</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index 3e99e87..53d214c1 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Djúphreinsunar er krafist við næstu endurræsingu</translation>
 <translation id="8102159139658438129">Farðu í <ph name="LINK_BEGIN" />Stillingar<ph name="LINK_END" /> til að sjá valkosti fyrir tengda símann þinn</translation>
 <translation id="8104696615244072556">Djúphreinsa <ph name="IDS_SHORT_PRODUCT_NAME" /> tækið þitt og setja fyrri útgáfu upp aftur.</translation>
-<translation id="8106661353233173262">Eitthvað fór úrskeiðis. Skannaða skráin rann út á tíma.</translation>
 <translation id="8107015733319732394">Setur Google Play Store upp á <ph name="DEVICE_TYPE" />. Þetta gæti tekið nokkrar mínútur.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Engin fótspor frá þriðju aðilum}=1{Lokað á eitt fótspor frá þriðja aðila}one{Lokað er á # fótspor frá þriðju aðilum}other{Lokað er á # fótspor frá þriðju aðilum}}</translation>
 <translation id="810875025413331850">Engin nálæg tæki fundust.</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 44899f033..fdc296df 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Powerwash necessario a prossimo riavvio</translation>
 <translation id="8102159139658438129">Vai alle <ph name="LINK_BEGIN" />Impostazioni<ph name="LINK_END" /> per visualizzare le opzioni disponibili per il tuo telefono collegato</translation>
 <translation id="8104696615244072556">Esegui il Powerwash del tuo dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e torna alla versione precedente.</translation>
-<translation id="8106661353233173262">Si è verificato un problema. Il file scansionato è scaduto.</translation>
 <translation id="8107015733319732394">Installazione in corso del Google Play Store sul tuo dispositivo <ph name="DEVICE_TYPE" />. L'operazione potrebbe richiedere alcuni minuti.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nessun cookie di terze parti}=1{È stato bloccato 1 cookie di terze parti}other{Sono stati bloccati # cookie di terze parti}}</translation>
 <translation id="810875025413331850">Nessun dispositivo trovato nelle vicinanze.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index e04dfa6..6902b316 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">‏יש לבצע Powerwash באתחול הבא</translation>
 <translation id="8102159139658438129">כדי לראות אפשרויות לגבי הטלפון המחובר, אפשר לעבור אל <ph name="LINK_BEGIN" />הגדרות<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">‏בצע פעולת Powerwash במכשיר <ph name="IDS_SHORT_PRODUCT_NAME" /> שלך וחזור לגרסה הקודמת.</translation>
-<translation id="8106661353233173262">משהו השתבש. פג הזמן הקצוב של הקובץ הסרוק.</translation>
 <translation id="8107015733319732394">‏מתקין את חנות Google Play במכשיר <ph name="DEVICE_TYPE" />. ייתכן שההתקנה תימשך כמה דקות.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{‏אין קובצי cookie של צד שלישי}=1{‏קובץ cookie אחד של צד שלישי נחסם}two{‏# קובצי cookie של צד שלישי נחסמו}many{‏# קובצי cookie של צד שלישי נחסמו}other{‏# קובצי cookie של צד שלישי נחסמו}}</translation>
 <translation id="810875025413331850">לא נמצאו מכשירים קרובים.</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 2b451652..47017bc 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">次回の再起動時に Powerwash が必要</translation>
 <translation id="8102159139658438129">接続しているスマートフォン用のオプションを表示するには [<ph name="LINK_BEGIN" />設定<ph name="LINK_END" />] に移動してください</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> デバイスで Powerwash を実行し、以前のバージョンに戻します。</translation>
-<translation id="8106661353233173262">エラーが発生しました。ファイルのスキャンがタイムアウトしました。</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> に Google Play ストアをインストールしています。この処理には数分かかる可能性があります。</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{サードパーティの Cookie はありません}=1{1 個のサードパーティ Cookie がブロックされています}other{# 個のサードパーティ Cookie がブロックされています}}</translation>
 <translation id="810875025413331850">近くにデバイスは見つかりませんでした。</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index e41e73e..fcd951c 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">შემდეგი ჩატვირთვის დროს საჭიროა შესრულდეს განახლება</translation>
 <translation id="8102159139658438129">დაკავშირებული ტელეფონის ვარიანტების სანახავად გადადით <ph name="LINK_BEGIN" />პარამეტრებზე<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">გაასუფთავეთ თქვენი <ph name="IDS_SHORT_PRODUCT_NAME" /> მოწყობილობა და დაბრუნდით წინა ვერსიაზე.</translation>
-<translation id="8106661353233173262">წარმოიქმნა შეფერხება. სკანირებული ფაილის მოლოდინის დრო ამოიწურა.</translation>
 <translation id="8107015733319732394">მიმდინარეობს Google Play Store-ის ინსტალაცია თქვენს <ph name="DEVICE_TYPE" />-ზე. ამას შეიძლება რამდენიმე წუთი დასჭირდეს.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{მესამე მხარის ქუქი-ჩანაწერები არ არის}=1{მესამე მხარის 1 ქუქი-ჩანაწერი დაბლოკილია}other{მესამე მხარის # ქუქი-ჩანაწერი დაბლოკილია}}</translation>
 <translation id="810875025413331850">ახლომდებარე მოწყობილობები ვერ მოიძებნა.</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 399e7df..f56a983 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -1369,7 +1369,7 @@
 <translation id="2875698561019555027">(Chrome қате беттері)</translation>
 <translation id="2876336351874743617">2-ші саусақ</translation>
 <translation id="2876369937070532032">Қауіп төніп тұрғанда, сіз кірген кейбір беттердің URL сілтемелерін Google-ға жібереді.</translation>
-<translation id="2877030408509021795">Сканерлеу орындалды, барлығы дайын.</translation>
+<translation id="2877030408509021795">Тексерілді, барлығы дұрыс.</translation>
 <translation id="2878782256107578644">Тексеріліп жатыр. Дәл қазір ашу керек пе?</translation>
 <translation id="288042212351694283">Әмбебап 2-ші фактор құрылғыларыңызға кіру</translation>
 <translation id="2881076733170862447">Кеңейтім басылғанда</translation>
@@ -3036,7 +3036,7 @@
 <translation id="5310281978693206542">Құрылғыларға сілтеме жіберу</translation>
 <translation id="5311304534597152726">Жүйеге кіру</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> Қайталап көріңіз.</translation>
-<translation id="5313628438272378649">Бұл жүктеп салу ұйымыңыздың қауіпсіздік саясаттарына қайшы келеді және орындала алмайды.</translation>
+<translation id="5313628438272378649">Бұл жүктеп салу әрекеті ұйымыңыздың қауіпсіздік саясаттарына қайшы келеді және оны орындау мүмкін емес.</translation>
 <translation id="5315738755890845852">Ирек жақша артық қойылған: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">Идентификация мәліметі</translation>
 <translation id="5317780077021120954">Сақтау</translation>
@@ -3130,7 +3130,7 @@
 <translation id="5449588825071916739">Барлық қойындыларды бетбелгілерге қосу</translation>
 <translation id="5449716055534515760">Тере&amp;зені жабу</translation>
 <translation id="5454166040603940656"><ph name="PROVIDER" /> провайдерімен</translation>
-<translation id="5454360575035671759">Plugin VM жойылған жағдайда VM мәліметтері де жойылады. Бұл қолданбалар, параметрлер және деректерді қамтиды. Жалғастырғыңыз келе ме?</translation>
+<translation id="5454360575035671759">Plugin VM жойылған жағдайда, VM мәліметтері де жойылады. Оның қолданбалары, параметрлері мен деректері бірге өшеді. Жалғастырғыңыз келе ме?</translation>
 <translation id="5457113250005438886">Жарамсыз</translation>
 <translation id="5457459357461771897">Компьютеріңізден фотосуреттерді, музыканы және басқа медиа файлдарын оқу және жою</translation>
 <translation id="5457599981699367932">Қонақ ретінде шолу</translation>
@@ -5019,7 +5019,6 @@
 <translation id="8101987792947961127">Келесі қайта жүктеу кезінде Powerwash қажет</translation>
 <translation id="8102159139658438129">Жалғанған телефонның опцияларын көру үшін <ph name="LINK_BEGIN" />Параметрлер<ph name="LINK_END" /> бөліміне өтіңіз</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> құрылғыңызда Powerwash операциясын жасап, алдыңғы нұсқаға қайтыңыз.</translation>
-<translation id="8106661353233173262">Бірдеңе дұрыс болмады. Тексерілген файлдың уақыты өтіп кетті.</translation>
 <translation id="8107015733319732394">Google Play Store дүкені <ph name="DEVICE_TYPE" /> құрылғысына орнатылуда. Бұл бірнеше минут алады.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Үшінші тараптың cookie файлдары жоқ}=1{Үшінші тараптың 1 cookie файлы бөгелді}other{Үшінші тараптың # cookie файлы бөгелді}}</translation>
 <translation id="810875025413331850">Маңайдан құрылғы табылған жоқ.</translation>
@@ -5104,7 +5103,7 @@
 <translation id="8227119283605456246">Файл тіркеу</translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> құпия сөзі сақталсын ба?</translation>
 <translation id="8234795456569844941">Біздің инженерлерге осы мәселені шегуге көмектесіңіз. Профиль қатесі туралы хабарын алмастан бұрын не болғанын айтыңыз:</translation>
-<translation id="8236123533334037984">Бұл жүктеп салу ұйым тарапынан қауіпсіздік мақұлдауын алу үшін сканерленуде.</translation>
+<translation id="8236123533334037984">Бұл жүктеп салу әрекеті ұйым тарапынан қауіпсіздік саясаты бойынша тексеріліп жатыр.</translation>
 <translation id="8236917170563564587">Орнына осы қойындыны бөлісу</translation>
 <translation id="8237647586961940482">Қою қызғылт және қызыл</translation>
 <translation id="8241040075392580210">Shady</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index e717471..2cf3fce 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -4308,7 +4308,7 @@
 <translation id="7120865473764644444">មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេសមកាលកម្មបានទេ។ ព្យាយាមម្តងទៀត...</translation>
 <translation id="7121362699166175603">សម្អាតប្រវត្តិ និងការបំពេញដោយស្វ័យប្រវត្តិនៅក្នុងរបារអាសយដ្ឋាននេះ។ គណនី Google របស់អ្នកអាចនឹងមានទម្រង់ប្រវត្តិរុករកផ្សេងទៀតនៅ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ។</translation>
 <translation id="7121389946694989825">បញ្ជូន​ទិន្នន័យ​ប្រើប្រាស់ និង​វិភាគ។ បច្ចុប្បន្ននេះ ឧបករណ៍នេះ​កំពុងបញ្ជូន​ទិន្នន័យនៃការ​វិភាគ ឧបករណ៍ និងការ​ប្រើប្រាស់​កម្មវិធី​ទៅ Google ដោយស្វ័យប្រវត្តិ។ សកម្មភាពនេះ​នឹងមិនត្រូវ​បានធ្វើឡើង ដើម្បី​កំណត់​អត្តសញ្ញាណ​កូន​របស់អ្នក​នោះទេ តែការធ្វើបែបនេះ​នឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំង​ការកែលម្អ​ផ្សេងទៀត។ ទិន្នន័យ​ប្រមូលបាន​មួយចំនួន​ក៏នឹង​ជួយដល់​កម្មវិធី និង​ដៃគូ Google ដូចជា​អ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ប្រសិនបើ​ការកំណត់​សកម្មភាព​កម្មវិធី និង​គេហទំព័រ​បន្ថែម​ត្រូវបាន​បើកសម្រាប់​កូនរបស់អ្នក នោះ​ទិន្នន័យនេះ​អាចត្រូវ​បានរក្សាទុក​ទៅក្នុង​គណនី Google របស់គាត់។ <ph name="BEGIN_LINK1" />ស្វែងយល់​បន្ថែម<ph name="END_LINK1" /></translation>
-<translation id="7121438501124788993">មុខងារ​អ្នកអភិវឌ្ឈន៍</translation>
+<translation id="7121438501124788993">មុខងារ​អ្នកអភិវឌ្ឍន៍</translation>
 <translation id="7121728544325372695">ផ្ទាំងព័ត៌មានឆ្លាតវៃ</translation>
 <translation id="7123360114020465152">លែង​ប្រើបាន​ទៀតហើយ</translation>
 <translation id="7127980134843952133">ប្រវត្តិទាញយក</translation>
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">តម្រូវឲ្យមាន Powerwash នៅលើពេលបិទបើកដំណើរការឡើងវិញនៅពេលបន្ទាប់</translation>
 <translation id="8102159139658438129">ចូលទៅកាន់<ph name="LINK_BEGIN" />ការកំណត់<ph name="LINK_END" /> ដើម្បី​មើល​ជម្រើស​សម្រាប់​ទូរសព្ទដែលអ្នកបានភ្ជាប់</translation>
 <translation id="8104696615244072556">Powerwash ឧបករណ៍ <ph name="IDS_SHORT_PRODUCT_NAME" /> របស់អ្នក ហើយត្រលប់ទៅកំណែពីមុនវិញ។</translation>
-<translation id="8106661353233173262">មានអ្វីមួយ​ខុសប្រក្រតី។ ឯកសារ​ដែលបានស្កេន​បានអស់ម៉ោងហើយ។</translation>
 <translation id="8107015733319732394">កំពុងដំឡើង Google Play Store នៅលើ <ph name="DEVICE_TYPE" /> របស់អ្នក។ វាអាច​ចំណាយពេល​ពីរបីនាទី។</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{មិនមាន​ខូគី​ភាគី​ទីបីទេ}=1{បាន​ទប់ស្កាត់ខូគី​ភាគី​ទីបី 1}other{បាន​ទប់ស្កាត់ខូគី​ភាគី​ទីបី #}}</translation>
 <translation id="810875025413331850">រក​មិនឃើញ​ឧបករណ៍​ដែលនៅជិត​ទេ។</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 7a4e482..a450ff6c 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -397,6 +397,7 @@
 <translation id="1545177026077493356">ಸ್ವಯಂಚಾಲಿತ ಕಿಯೋಸ್ಕ್ ಮೋಡ್</translation>
 <translation id="1545775234664667895">ಸ್ಥಾಪಿಸಲಾಗಿರುವ ಥೀಮ್ "<ph name="THEME_NAME" />"</translation>
 <translation id="1546280085599573572">ನೀವು ಹೋಮ್‌ನ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ತೋರಿಸಬೇಕಾದ ಪುಟವನ್ನು ಈ ವಿಸ್ತರಣೆಯು ಬದಲಾಯಿಸಿದೆ.</translation>
+<translation id="1549275686094429035">ARC ಸಕ್ರಿಯಗೊಂಡಿದೆ</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" /> ಅಪ್ಲಿಕೇಶನ್ <ph name="VOLUME_NAME" /> ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ. ಅದು ನಿಮ್ಮ ಫೈಲ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಬಹುದು ಅಥವಾ ಅಳಿಸಬಹುದು.</translation>
 <translation id="1553538517812678578">ಸೀಮಿತವಲ್ಲದ</translation>
 <translation id="1554390798506296774"><ph name="HOST" /> ನಲ್ಲಿ ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್-ಇನ್‌ಗಳನ್ನು ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation>
@@ -651,6 +652,7 @@
 <translation id="1879000426787380528">ಇದರಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="1880905663253319515">"<ph name="CERTIFICATE_NAME" />" ಪ್ರಮಾಣಪತ್ರವನ್ನು ಅಳಿಸುವುದೆ?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" /> ರಲ್ಲಿ <ph name="NETWORK_INDEX" /> ನೆಟ್‌ವರ್ಕ್, <ph name="NETWORK_NAME" />, ಕನೆಕ್ಟ್</translation>
+<translation id="1884930769492918228">ಕ್ಯಾಮರಾ ಸ್ಥಿತಿಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಮತ್ತು ನಿಮ್ಮ ಕೊಠಡಿಯನ್ನು ಮ್ಯಾಪ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="1886996562706621347">ಪ್ರೊಟೋಕಾಲ್‌ಗಳಿಗಾಗಿ ಡಿಫಾಲ್ಟ್ ಹ್ಯಾಂಡ್ಲರ್‌‌ಗಳಾಗಲು ಸೈಟ್‌ಗಳನ್ನು ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="1887442540531652736">ಸೈನ್‌ ಇನ್‌ ದೋಷ</translation>
 <translation id="1887597546629269384">ಮತ್ತೊಮ್ಮೆ "ಹೇ Google" ಎಂದು ಹೇಳಿ</translation>
@@ -733,6 +735,7 @@
 <translation id="2018352199541442911">ಕ್ಷಮಿಸಿ, ಈ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಬಾಹ್ಯ ಸಂಗ್ರಹಣೆಯ ಸಾಧನಕ್ಕೆ ಬೆಂಬಲ ದೊರೆಯುತ್ತಿಲ್ಲ.</translation>
 <translation id="2019718679933488176">&amp;ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಆಡಿಯೋ ತೆರೆಯಿರಿ</translation>
 <translation id="2020183425253392403">ನೆಟ್‌ವರ್ಕ್ ವಿಳಾಸ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೋರಿಸಿ</translation>
+<translation id="2020225359413970060">ಫೈಲ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation>
 <translation id="2022953316617983419">QR ಕೋಡ್</translation>
 <translation id="2023167225947895179">ಪಿನ್ ಊಹಿಸಲು ಸುಲಭವಾಗಿರಬಹುದು</translation>
 <translation id="202352106777823113">ಡೌನ್‌ಲೋಡ್ ತುಂಬಾ ಸಮಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತಿದೆ ಮತ್ತು ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ನಿಲ್ಲಿಸಲಾಗಿದೆ.</translation>
@@ -762,6 +765,7 @@
 <translation id="2059913712424898428">ಸಮಯ ವಲಯ</translation>
 <translation id="2065405795449409761">Chrome ಅನ್ನು ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಯ ಸಾಫ್ಟ್‌ವೇರ್ ನಿಯಂತ್ರಿಸುತ್ತಿದೆ.</translation>
 <translation id="2071393345806050157">ಯಾವುದೇ ಸ್ಥಳೀಯ ಲಾಗ್ ಫೈಲ್ ಇಲ್ಲ.</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{ವಿಸ್ತರಣೆಯನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ}one{ಈ ವಿಸ್ತರಣೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ}other{ಈ ವಿಸ್ತರಣೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ}}</translation>
 <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% ಬ್ಯಾಟರಿ</translation>
 <translation id="2075959085554270910">ಕ್ಲಿಕ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಎಳೆಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು/ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ</translation>
 <translation id="2076269580855484719">ಈ ಪ್ಲಗ್‌ಇನ್ ಅನ್ನು ಮರೆಮಾಡು</translation>
@@ -857,6 +861,7 @@
 <translation id="219008588003277019">ಸ್ಥಳೀಯ ಕ್ಲೈಂಟ್ ಮಾಡ್ಯೂಲ್: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(ಖಾಲಿ)</translation>
 <translation id="2191223688506386601">ಒಂದು ಕೊನೆಯ ವಿಷಯ</translation>
+<translation id="2191754378957563929">ಆನ್</translation>
 <translation id="2192505247865591433">ಇವರಿಂದ:</translation>
 <translation id="2193365732679659387">ವಿಶ್ವಾಸಾರ್ಹ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="2195331105963583686">ಆ ಸಮಯದ ಬಳಿಕ ನೀವು ಈಗಲೂ ಈ <ph name="DEVICE_TYPE" /> ಬಳಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಆದರೆ ಅದು ಸ್ವಯಂಚಾಲಿತ ಸಾಫ್ಟ್‌ವೇರ್ ಮತ್ತು ಭದ್ರತೆ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಇನ್ನು ಮುಂದೆ ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ</translation>
@@ -1367,6 +1372,7 @@
 <translation id="2875698561019555027">(Chrome ದೋಷ ಪುಟಗಳು)</translation>
 <translation id="2876336351874743617">ಬೆರಳು 2</translation>
 <translation id="2876369937070532032">ನಿಮ್ಮ ಭದ್ರತೆಯು ಅಪಾಯದಲ್ಲಿದ್ದಾಗ, ನೀವು ಭೇಟಿ ನೀಡುವ ಕೆಲವು ಪುಟಗಳ URL ಗಳನ್ನು Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ</translation>
+<translation id="2877030408509021795">ಸ್ಕ್ಯಾನ್ ಪೂರ್ಣಗೊಂಡಿದೆ, ಎಲ್ಲವೂ ಸರಿಯಾಗಿದೆ.</translation>
 <translation id="2878782256107578644">ಸ್ಕ್ಯಾನ್ ಪ್ರಗತಿಯಲ್ಲಿದೆ, ಈಗ ತೆರೆಯುವುದೇ?</translation>
 <translation id="288042212351694283">ನಿಮ್ಮ ಯುನಿವರ್ಸಲ್ 2ನೇ ಫ್ಯಾಕ್ಟರ್ ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="2881076733170862447">ನೀವು ವಿಸ್ತರಣೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ</translation>
@@ -1698,6 +1704,7 @@
 <translation id="3382073616108123819">ಓಹ್‌‌!  ಈ ಸಾಧನಕ್ಕಾಗಿ ಸಾಧನ ಗುರುತಿಸುವಿಕೆಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಸಿಸ್ಟಂ ವಿಫಲಗೊಂಡಿದೆ.</translation>
 <translation id="3382086682569279540">ನೀವು ನಿರ್ವಹಿಸುತ್ತಿರುವ ಖಾತೆಯನ್ನು ಶೀಘ್ರವೇ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ</translation>
 <translation id="3382200254148930874">ಮೇಲ್ವಿಚಾರಣೆಯನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="3383210070657133526">ವರ್ಚುವಲ್ ರಿಯಾಲಿಟಿ ಸೆಶನ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕೆಂದು <ph name="URL" /> ಬಯಸುತ್ತದೆ</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">ವಿಭಾಜಕ</translation>
 <translation id="338691029516748599"><ph name="NETWORK_COUNT" /> ರಲ್ಲಿ <ph name="NETWORK_INDEX" /> ನೆಟ್‌ವರ್ಕ್, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ <ph name="SIGNAL_STRENGTH" />%, ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿರ್ವಹಿಸಿದ್ದಾರೆ, ಕನೆಕ್ಟ್</translation>
@@ -2034,6 +2041,7 @@
 <translation id="3819800052061700452">&amp;ಪೂರ್ಣ-ಪರದೆ</translation>
 <translation id="3820172043799983114">ಅಮಾನ್ಯ ಪಿನ್.</translation>
 <translation id="3820749202859700794">SECG ಎಲಿಪ್ಟಿಕ್ ಕರ್ವ್ secp521r1 (aka NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{ಒಂದು ವಿಸ್ತರಣೆಯನ್ನು ಅನುಮೋದಿಸಲಾಗಿದೆ}one{# ವಿಸ್ತರಣೆಗಳನ್ನು ಅನುಮೋದಿಸಲಾಗಿದೆ}other{# ವಿಸ್ತರಣೆಗಳನ್ನು ಅನುಮೋದಿಸಲಾಗಿದೆ}}</translation>
 <translation id="3822559385185038546">ಈ ಪ್ರಾಕ್ಸಿಯನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಜಾರಿಗೊಳಿಸಿದ್ದಾರೆ</translation>
 <translation id="3826440694796503677">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಹೆಚ್ಚಿನ Google ಖಾತೆಗಳ ಸೇರಿಸುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ</translation>
 <translation id="3827306204503227641">ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಿರುವ ಪ್ಲಗ್-ಇನ್‌ಗಳ ಅನುಮತಿಯನ್ನು ಮುಂದುವರಿಸಿ</translation>
@@ -2392,6 +2400,7 @@
 <translation id="4353114845960720315">ನೀವು VR ನಲ್ಲಿರುವಾಗ, ಈ ಸೈಟ್ ಕುರಿತು ತಿಳಿಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ:</translation>
 <translation id="4354344420232759511">ನೀವು ಭೇಟಿ ಮಾಡುವ ಸೈಟ್‌ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ</translation>
 <translation id="435527878592612277">ನಿಮ್ಮ ಫೋಟೋ ಆಯ್ಕೆಮಾಡಿ</translation>
+<translation id="4357784477082216550">ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಮತ್ತು ನಿಮ್ಮ ಕೊಠಡಿಯನ್ನು ಮ್ಯಾಪ್ ಮಾಡಲು <ph name="URL" /> ಬಯಸುತ್ತದೆ</translation>
 <translation id="4358313196493694334">ಕ್ಲಿಕ್‌ನ ಸ್ಥಾನವನ್ನು ಸ್ಥಿರಗೊಳಿಸಿ</translation>
 <translation id="4359408040881008151">ಅವಲಂಬಿತ ವಿಸ್ತರಣೆ(ಗಳು) ಯಿಂದಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.</translation>
 <translation id="4359717112757026264">Cityscape</translation>
@@ -2632,6 +2641,7 @@
 <translation id="4720185134442950733">ಮೊಬೈಲ್ ಡೇಟಾ ನೆಟ್‌ವರ್ಕ್</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" /> ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> ನಿಮ್ಮ ಪರದೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತಿದೆ.</translation>
+<translation id="4723140812774948886">ಮುಂದಿನದರ ಮೂಲಕ ಸ್ವ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="4724450788351008910">ಅನುದಾನವನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ</translation>
 <translation id="4725511304875193254">ಕಾರ್ಗಿ</translation>
 <translation id="4726710629007580002">ಈ ವಿಸ್ತರಣೆಯನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಎಚ್ಚರಿಕೆಗಳು ಕಂಡುಬಂದಿವೆ:</translation>
@@ -2947,6 +2957,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> ಬಹು ಫೈಲ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="5192062846343383368">ನಿಮ್ಮ ಮೇಲ್ವಿಚಾರಣೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನೋಡಲು Family Link ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="5193988420012215838">ನಿಮ್ಮ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಲಾಗಿದೆ</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{ವಿಸ್ತರಣೆಯನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ}one{ಈ ವಿಸ್ತರಣೆಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ}other{ಈ ವಿಸ್ತರಣೆಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ}}</translation>
 <translation id="5204673965307125349">ಸಾಧನವನ್ನು ಪವರ್‌ವಾಷ್ ಮಾಡಿ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="5206215183583316675">"<ph name="CERTIFICATE_NAME" />" ಅಳಿಸುವುದೇ?</translation>
 <translation id="520621735928254154">ಪ್ರಮಾಣಪತ್ರದ ಆಮದು ದೋಷ</translation>
@@ -3029,6 +3040,7 @@
 <translation id="5310281978693206542">ನಿಮ್ಮ ಸಾಧನಗಳಿಗೆ ಲಿಂಕ್ ಕಳುಹಿಸಿ</translation>
 <translation id="5311304534597152726">ಇದರಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
+<translation id="5313628438272378649">ಈ ಅಪ್‌ಲೋಡ್ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಭದ್ರತೆ ನೀತಿಗಳನ್ನು ಉಲ್ಲಂಘಿಸುತ್ತದೆ ಮತ್ತು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
 <translation id="5315738755890845852">ಹೆಚ್ಚುವರಿ ಕರ್ಲಿ ಬ್ರಾಕೆಟ್: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">ಗುರುತು</translation>
 <translation id="5317780077021120954">ಉಳಿಸು</translation>
@@ -3084,6 +3096,7 @@
 <translation id="5398772614898833570">ಜಾಹೀರಾತುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="5402815541704507626">ಮೊಬೈಲ್ ಡೇಟಾ ಬಳಸಿಕೊಂಡು ಅಪ್‌ಡೇಟ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿಕೊಳ್ಳಿ</translation>
 <translation id="540296380408672091"><ph name="HOST" /> ನಲ್ಲಿ ಕುಕೀಗಳನ್ನು ಯಾವಾಗಲೂ ನಿರ್ಬಂಧಿಸಿ</translation>
+<translation id="540495485885201800">ಹಿಂದಿನದರ ಮೂಲಕ ಸ್ವ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="5405146885510277940">ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ</translation>
 <translation id="5408750356094797285">ಝೂಮ್: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">ಈ ಹೋಸ್ಟ್‌ಗಳಿಗೆ ಮತ್ತು ಡೊಮೇನ್‌ಗಳಿಗೆ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಉಪಯೋಗಿಸಬೇಡಿ:</translation>
@@ -3121,6 +3134,7 @@
 <translation id="5449588825071916739">ಎಲ್ಲಾ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಬುಕ್‌ಮಾರ್ಕ್ ಮಾಡಿ</translation>
 <translation id="5449716055534515760">&amp;ವಿಂಡೋ ಮುಚ್ಚಿರಿ</translation>
 <translation id="5454166040603940656"><ph name="PROVIDER" /> ಜೊತೆಗೆ</translation>
+<translation id="5454360575035671759">Plugin VM ತೆಗೆದುಹಾಕುವುದರಿಂದ, ನಿಮ್ಮ VM ಅಳಿಸಲ್ಪಡುತ್ತದೆ. ಅದರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಡೇಟಾ ಇದರಲ್ಲಿ ಸೇರಿಸುತ್ತದೆ. ನೀವು ಮುಂದುವರಿಸಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?</translation>
 <translation id="5457113250005438886">ಅಮಾನ್ಯ</translation>
 <translation id="5457459357461771897">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಿಂದ ಫೋಟೋಗಳು, ಸಂಗೀತ, ಮತ್ತು ಇತರ ಮಾಧ್ಯಮವನ್ನು ಓದಿರಿ ಮತ್ತು ಅಳಿಸಿ</translation>
 <translation id="5457599981699367932">ಅತಿಥಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಿ</translation>
@@ -3137,6 +3151,7 @@
 <translation id="5470735824776589490">ಪವರ್‌ವಾಶ್‌ ಮೂಲಕ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಹೊಂದಿಸುವ ಮೊದಲು ಮರುಪ್ರಾರಂಭಿಸುವ ಅಗತ್ಯವಿದೆ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">ನಮಸ್ಕಾರ! ನಾನು ನಿಮ್ಮ ಪಠ್ಯದಿಂದ ಧ್ವನಿಯ ಧ್ವನಿ.</translation>
 <translation id="5473333559083690127">ಹೊಸ ಪಿನ್ ಮರು-ನಮೂದಿಸಿ</translation>
+<translation id="548137908954174608">ಲೈವ್ ಕ್ಯಾಪ್ಶನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="5481941284378890518">ಸಮೀಪದ ಪ್ರಿಂಟರ್‌ಗಳನ್ನು ಸೇರಿಸು</translation>
 <translation id="5483785310822538350">ಫೈಲ್ ಮತ್ತು ಸಾಧನ ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ</translation>
 <translation id="5485080380723335835">ಸುರಕ್ಷತೆಗಾಗಿ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಲಾಕ್‌ ಮಾಡಲಾಗಿದೆ. ಮುಂದುವರಿಸಲು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ.</translation>
@@ -3173,6 +3188,7 @@
 <translation id="5518584115117143805">ಇಮೇಲ್ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಪ್ರಮಾಣಪತ್ರ</translation>
 <translation id="5521078259930077036">ಇದು ನೀವು ನಿರೀಕ್ಷಿಸುತ್ತಿದ್ದ ಹೋಮ್ ಆಗಿದೆಯಾ?</translation>
 <translation id="5522156646677899028">ಈ ವಿಸ್ತರಣೆಯು ಗಂಭೀರ ಭದ್ರತಾ ಅಪಾಯ ಸಾಧ್ಯತೆಯನ್ನು ಒಳಗೊಂಡಿದೆ.</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಒಂದು ವಿಸ್ತರಣೆಯನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದಾರೆ}one{ನಿಮ್ಮ ನಿರ್ವಾಹಕರು # ವಿಸ್ತರಣೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದಾರೆ}other{ನಿಮ್ಮ ನಿರ್ವಾಹಕರು # ವಿಸ್ತರಣೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದಾರೆ}}</translation>
 <translation id="5525677322972469346">ಹೊಸ ಮೇಲ್ವಿಚಾರಣೆ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ</translation>
 <translation id="5526701598901867718">ಎಲ್ಲಾ (ಅಸುರಕ್ಷಿತ)</translation>
 <translation id="5526745900034778153">ಸಿಂಕ್‌ ಅನ್ನು ಮುಂದುವರಿಸಲು ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
@@ -3840,6 +3856,7 @@
 <translation id="6459799433792303855">ಮತ್ತೊಂದು ಡಿಸ್‌ಪ್ಲೇಗೆ ಸಕ್ರಿಯ ವಿಂಡೋವನ್ನು ಸರಿಸಲಾಗಿದೆ.</translation>
 <translation id="6460601847208524483">ಮುಂದಿನದು ಕಂಡುಹಿಡಿಯಿರಿ</translation>
 <translation id="6461170143930046705">ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="6462438303393708881">ಅಪ್‌ಲೋಡ್ ರದ್ದುಮಾಡಿ</translation>
 <translation id="6463795194797719782">&amp;ಸಂಪಾದಿಸು</translation>
 <translation id="6466988389784393586">ಎಲ್ಲ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು &amp;ತೆರೆಯಿರಿ</translation>
 <translation id="6467304607960172345">ಫುಲ್‌ಸ್ಕ್ರೀನ್ ವೀಡಿಯೊಗಳನ್ನು ಆಪ್ಟಿಮೈಸ್‌ ಮಾಡಿ</translation>
@@ -3887,6 +3904,7 @@
 <translation id="6531282281159901044">ಅಪಾಯಕಾರಿ ಫೈಲ್ ಇರಿಸು</translation>
 <translation id="6532101170117367231">Google ಡ್ರೈವ್‌ನಲ್ಲಿ ಉಳಿಸಿ</translation>
 <translation id="6532106788206463496">ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿ</translation>
+<translation id="6532663472409656417">ಎಂಟರ್‌ಪ್ರೈಸ್ ನೋಂದಣಿಯಾಗಿದೆ</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />ಗಮನಿಸಿ:<ph name="END_BOLD" /> ನೀವು ಏನು ಮಾಡುತ್ತಿರುವಿರಿ ಎಂಬುದು ನಿಮಗೆ ಗೊತ್ತಿದ್ದಲ್ಲಿ ಅಥವಾ ಹೀಗೆ ಮಾಡಬೇಕೆಂದು ನಿಮಗೆ ಹೇಳಿದ್ದಲ್ಲಿ ಮಾತ್ರ ಸಕ್ರಿಯಗೊಳಿಸಿ, ಏಕೆಂದರೆ ಡೇಟಾ ಸಂಗ್ರಹವು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.</translation>
 <translation id="6541638731489116978">ನಿಮ್ಮ ಚಲನೆ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸದಂತೆ ಈ ಸೈಟ್‌ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="6545665334409411530">ಪುನರಾವರ್ತನೆ ಪ್ರಮಾಣ</translation>
@@ -4028,6 +4046,7 @@
 <translation id="6758056191028427665">ನಮ್ಮ ಕೆಲಸದ ಕುರಿತು ನಿಮ್ಮ ಅಭಿಪ್ರಾಯವನ್ನು ತಿಳಿಸಿ.</translation>
 <translation id="6759193508432371551">ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್‌</translation>
 <translation id="6762833852331690540">ಆನ್‌ ಆಗಿದೆ</translation>
+<translation id="6767115174726603949">ವರ್ಚುವಲ್ ರಿಯಾಲಿಟಿ ಸಾಧನಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="6767566652486411142">ಬೇರೊಂದು ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ...</translation>
 <translation id="6767639283522617719">ಡೊಮೇನ್ ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸಾಂಸ್ಥಿಕ ಘಟಕಕ್ಕಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಸರಿಯಾಗಿವೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.</translation>
 <translation id="6769712124046837540">ಮುದ್ರಕ ಸೇರಿಸಲಾಗುತ್ತಿದೆ...</translation>
@@ -4040,6 +4059,7 @@
 <translation id="677965093459947883">ತುಂಬಾ ಚಿಕ್ಕದು</translation>
 <translation id="6781284683813954823">ಡೂಡಲ್ ಲಿಂಕ್</translation>
 <translation id="6781978626986383437">Linux ಬ್ಯಾಕಪ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ</translation>
+<translation id="6785915470941880363">ಹಿಮ್ಮುಖ ಸ್ಕ್ರಾಲಿಂಗ್ <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">ವಿಸ್ತರಣೆಗಳು</translation>
 <translation id="6787839852456839824">ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು</translation>
 <translation id="6788210894632713004">ಬಿಚ್ಚಿದ ವಿಸ್ತರಣೆ</translation>
@@ -4146,6 +4166,7 @@
 <translation id="6923132443355966645">ಸ್ಕ್ರಾಲ್ / ಕ್ಲಿಕ್</translation>
 <translation id="6923633482430812883">ಹಂಚಿಕೆಯನ್ನು ಮೌಂಟ್ ಮಾಡುವಾಗ ದೋಷ ಕಂಡುಬಂದಿದೆ. ನೀವು ಸಂಪರ್ಕಿಸುತ್ತಿರುವ ಫೈಲ್ ಸರ್ವರ್, SMBv2 ಅಥವಾ ನಂತರದ ಆವೃತ್ತಿಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆಯೇ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಪರಿಶೀಲಿಸಿ.</translation>
 <translation id="6930036377490597025">ಬಾಹ್ಯ ಸುರಕ್ಷತೆ ಕೀ ಅಥವಾ ಅಂತರ್ನಿರ್ಮಿತ ಸೆನ್ಸರ್</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{ಒಂದು ವಿಸ್ತರಣೆಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ}one{# ವಿಸ್ತರಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ}other{# ವಿಸ್ತರಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ}}</translation>
 <translation id="6935286146439255109">ಪೇಪರ್ ಟ್ರೇ ಕಾಣಿಸುತ್ತಿಲ್ಲ</translation>
 <translation id="693807610556624488">ಬರೆಯುವಿಕೆ ಕಾರ್ಯಾಚರಣೆಯು ಈ ಸಾಧನಕ್ಕೆ ಗುಣಲಕ್ಷಣದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ಮೀರುತ್ತದೆ: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">ನೀವು 1 ಪ್ರಿಂಟರ್ ಅನ್ನು ಉಳಿಸಿದ್ದೀರಿ.</translation>
@@ -4235,6 +4256,7 @@
 <translation id="7053983685419859001">ನಿರ್ಬಂಧಿಸು</translation>
 <translation id="7055152154916055070">ಮರುನಿರ್ದೇಶಿಸುವಿಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ:</translation>
 <translation id="7056526158851679338">&amp;ಸಾಧನಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
+<translation id="7057767408836081338">ಆ್ಯಪ್ ಡೇಟಾವನ್ನು ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ, ಹೇಗಾದರೂ ಆ್ಯಪ್ ರನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="7059858479264779982">ಆಟೋ-ಲಾಂಚ್‌ಗೆ ಹೊಂದಿಸಿ</translation>
 <translation id="7059893117020417984">ಖಾಸಗಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಲು, ಅದೃಶ್ಯ ವಿಂಡೋವನ್ನು ತೆರೆಯಲು ಚುಕ್ಕೆಗಳ ಐಕಾನ್ ಮೆನು ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
 <translation id="7062222374113411376">ಡೇಟಾ ಕಳುಹಿಸುವುದನ್ನು ಮತ್ತು ಸ್ವೀಕರಿಸುವುದನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸಲು ಇತ್ತೀಚಿಗೆ ಮುಚ್ಚಿದ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಿದೆ)</translation>
@@ -4288,6 +4310,7 @@
 <translation id="7120865473764644444">ಸಿಂಕ್ ಸರ್ವರ್‌ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಲಿಲ್ಲ. ಮರುಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="7121362699166175603">ವಿಳಾಸ ಪಟ್ಟಿಯ ಇತಿಹಾಸ ಮತ್ತು ಸ್ವಯಂಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ. ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು.</translation>
 <translation id="7121389946694989825">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್‌ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್‌ಗಳು. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್‌ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್‌ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">ಡೆವೆಲಪರ್ ಮೋಡ್</translation>
 <translation id="7121728544325372695">ಸ್ಮಾರ್ಟ್ ಡ್ಯಾಶ್‌ಗಳು</translation>
 <translation id="7123360114020465152">ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ</translation>
 <translation id="7127980134843952133">ಡೌನ್‌ಲೋಡ್ ಇತಿಹಾಸ</translation>
@@ -4451,6 +4474,7 @@
 <translation id="7352651011704765696">ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ</translation>
 <translation id="735361434055555355">Linux ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="7353887511974462734">ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಗುಂಪಿಗೆ ಸೇರಿಸಿ</translation>
+<translation id="7354341762311560488">ನಿಮ್ಮ ಕೀಬೋರ್ಡ್‌ನಲ್ಲಿ ಕೆಳಗೆ ಎಡ ಮೂಲೆಯಲ್ಲಿರುವ ಕೀ, ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸಾರ್ ಆಗಿದೆ. ಯಾವುದೇ ಬೆರಳಿನ ಮೂಲಕ ಅದನ್ನು ಮೆಲ್ಲಗೆ ಸ್ಪರ್ಶಿಸಿ.</translation>
 <translation id="735745346212279324">VPN ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="7359588939039777303">ಜಾಹೀರಾತುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="7360183604634508679">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳ ಮೆನು</translation>
@@ -4750,6 +4774,7 @@
 <translation id="7792388396321542707">ಹಂಚಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಿ</translation>
 <translation id="779308894558717334">ತಿಳಿ ಹಸಿರು</translation>
 <translation id="7793098747275782155">ಗಾಢ ನೀಲಿ</translation>
+<translation id="7797571222998226653">ಆಫ್</translation>
 <translation id="7799299114731150374">ವಾಲ್‌ಪೇಪರ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಹೊಂದಿಸಲಾಗಿದೆ</translation>
 <translation id="7800518121066352902">ಅಪ್ರ&amp;ದಕ್ಷಿಣೆಯಂತೆ ತಿರುಗಿಸಿ</translation>
 <translation id="780301667611848630">ಬೇಡ, ಧನ್ಯವಾದಗಳು</translation>
@@ -4997,7 +5022,6 @@
 <translation id="8101987792947961127">ಮುಂದಿನ ರೀಬೂಟ್‌ನಲ್ಲಿ ಪವರ್‌ವಾಷ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="8102159139658438129">ನಿಮ್ಮ ಸಂಪರ್ಕಿತ ಫೋನ್‌ಗಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ನೋಡಲು, <ph name="LINK_BEGIN" />ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ<ph name="LINK_END" /> ಹೋಗಿ</translation>
 <translation id="8104696615244072556">ನಿಮ್ಮ <ph name="IDS_SHORT_PRODUCT_NAME" /> ಸಾಧನವನ್ನು ಪವರ್‌ವಾಶ್ ಮಾಡಿ ಮತ್ತು ಹಿಂದಿನ ಆವೃತ್ತಿಗೆ ಹಿಂತಿರುಗಿ.</translation>
-<translation id="8106661353233173262">ಏನೋ ಸಮಸ್ಯೆಯಾಗಿದೆ. ಸ್ಕ್ಯಾನ್ ಮಾಡಿದ ಫೈಲ್‌ನ ಅವಧಿ ಮುಗಿದಿದೆ.</translation>
 <translation id="8107015733319732394">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ Google Play ಸ್ಟೋರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ. ಇದು ಕೆಲವು ನಿಮಿಷಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ಯಾವುದೇ ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳಿಲ್ಲ}=1{1 ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}one{# ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}other{# ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}}</translation>
 <translation id="810875025413331850">ಯಾವುದೇ ಹತ್ತಿರದ ಸಾಧನಗಳು ಕಂಡುಬಂದಿಲ್ಲ.</translation>
@@ -5082,6 +5106,7 @@
 <translation id="8227119283605456246">ಫೈಲ್‌‎ ಲಗತ್ತಿಸಿ</translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್‌ ಉಳಿಸುವುದೇ?</translation>
 <translation id="8234795456569844941">ಈ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ನಮ್ಮ ಇಂಜಿನಿಯರ್‌ಗಳಿಗೆ ಸಹಾಯ ಮಾಡಿ. ಪ್ರೊಫೈಲ್ ದೋಷ ಸಂದೇಶವನ್ನು ಪಡೆಯುವುದಕ್ಕೆ ಸ್ವಲ್ಪ ಮೊದಲು ಏನಾಯಿತು ಎಂದು ನಮಗೆ ತಿಳಿಸಿ:</translation>
+<translation id="8236123533334037984">ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಭದ್ರತೆ ಅನುಮೋದನೆಗಾಗಿ ಈ ಅಪ್‌ಲೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತಿದೆ.</translation>
 <translation id="8236917170563564587">ಬದಲಾಗಿ ಈ ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="8237647586961940482">ಗಾಢ ಗುಲಾಬಿ ಮತ್ತು ಕೆಂಪು</translation>
 <translation id="8241040075392580210">ಶಾಡಿ</translation>
@@ -5540,6 +5565,7 @@
 <translation id="8863753581171631212">ಹೊಸ <ph name="APP" /> ನಲ್ಲಿ ಲಿಂಕ್‌ ಅನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="8864055848767439877"><ph name="TAB_NAME" /> ಅನ್ನು <ph name="APP_NAME" /> ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ</translation>
 <translation id="8864458770072227512">ಈ ಸಾಧನದಿಂದ <ph name="EMAIL" /> ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ</translation>
+<translation id="8867228703146808825">ಬಿಲ್ಡ್ ವಿವರಗಳನ್ನು ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಿ</translation>
 <translation id="8868626022555786497">ಬಳಕೆಯಲ್ಲಿದೆ</translation>
 <translation id="8870318296973696995">ಹೋಮ್</translation>
 <translation id="8870413625673593573">ಇತ್ತೀಚೆಗೆ ಮುಚ್ಚಿರುವುದು</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 99b35ae7..c2a97fdc 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">다음에 재부팅할 때 Powerwash 필요</translation>
 <translation id="8102159139658438129"><ph name="LINK_BEGIN" />설정<ph name="LINK_END" />으로 이동해 연결된 휴대전화의 옵션을 확인하세요.</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> 기기를 Powerwash한 다음 이전 버전으로 돌아가세요.</translation>
-<translation id="8106661353233173262">문제가 발생했습니다. 검사된 파일이 타임아웃되었습니다.</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" />에 Google Play 스토어를 설치합니다. 설치하는 데 몇 분 정도 걸릴 수 있습니다.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{타사 쿠키 없음}=1{타사 쿠키 1개가 차단됨}other{타사 쿠키 #개가 차단됨}}</translation>
 <translation id="810875025413331850">주변 기기를 찾을 수 없습니다.</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 1a31edc..f3571f2 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -396,6 +396,7 @@
 <translation id="1545177026077493356">Автоматтык Толук экран режими</translation>
 <translation id="1545775234664667895">"<ph name="THEME_NAME" />" темасы орнотулду</translation>
 <translation id="1546280085599573572">Бул кеңейтүү Башкы бет баскычы чыкылдатылганда көрүнө турган бетти өзгөрттү.</translation>
+<translation id="1549275686094429035">ARC иштетилди</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" /> колдонмосу <ph name="VOLUME_NAME" /> дегенге мүмкүнчүлүк алгысы келет. Ал файлдарыңызды өзгөртүп же жок кылышы мүмкүн.</translation>
 <translation id="1553538517812678578">чексиз</translation>
 <translation id="1554390798506296774"><ph name="HOST" /> ичиндеги сынамык чөйрөсүнөн тышкары плагиндерге ар дайым уруксат берилсин</translation>
@@ -650,6 +651,7 @@
 <translation id="1879000426787380528">Төмөнкү катары кирүү:</translation>
 <translation id="1880905663253319515">"<ph name="CERTIFICATE_NAME" />" тастыктамасы жок кылынсынбы?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" /> ичинен <ph name="NETWORK_INDEX" />-тармак, <ph name="NETWORK_NAME" />, Туташуу</translation>
+<translation id="1884930769492918228">Камеранын абалына көз салып, бөлмөңүздү картага түшүрүңүз</translation>
 <translation id="1886996562706621347">Сайттарга сурап туруп протоколдордун демейки иштетүүчүсү болууга уруксат берүү (сунушталат)</translation>
 <translation id="1887442540531652736">Аккаунтка кирүү катасы</translation>
 <translation id="1887597546629269384">"Окей Google" деп кайра айтыңыз</translation>
@@ -713,7 +715,7 @@
 <translation id="1979280758666859181">Эскирип калган <ph name="PRODUCT_NAME" /> версиясын камтыган нукка которулуп жатасыз. Нуктун версиясы учурда түзмөгүңүздө орнотулуп турган версияга дал келгенде гана нук которулат.</translation>
 <translation id="197989455406964291">KDC шифрлөө түрүн колдоого албайт</translation>
 <translation id="1982354452682152483">Сүрөттөмөсү жок.</translation>
-<translation id="1987317783729300807">Каттоо эсептери</translation>
+<translation id="1987317783729300807">Аккаунттар</translation>
 <translation id="1989112275319619282">Серептөө</translation>
 <translation id="1990512225220753005">Ыкчам баскычтар бул бетте көрсөтүлбөсүн</translation>
 <translation id="1992397118740194946">Коюлган эмес</translation>
@@ -732,6 +734,7 @@
 <translation id="2018352199541442911">Кечиресиз, тышкы сактагыч түзмөгүңүз учурда колдоого алынбай жатат.</translation>
 <translation id="2019718679933488176">&amp;Аудиону жаңы өтмөктө ачуу</translation>
 <translation id="2020183425253392403">Тармак дарегинин жөндөөлөрүн көрсөтүү</translation>
+<translation id="2020225359413970060">Файлды скандоо</translation>
 <translation id="2022953316617983419">QR коду</translation>
 <translation id="2023167225947895179">Бул PIN'ди табуу оңой болушу мүмкүн</translation>
 <translation id="202352106777823113">Жүктөп алуу аракети көпкө созулуп кеткендиктен, тармак тарабынан токтотулду.</translation>
@@ -761,6 +764,7 @@
 <translation id="2059913712424898428">Убакыт алкагы</translation>
 <translation id="2065405795449409761">Chrome автоматтык түрдө иштөөчү сынамык программа тарабынан көзөмөлдөнүүдө.</translation>
 <translation id="2071393345806050157">Жергиликтүү таржымал файлы жок.</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Кеңейтүүнү орнотуу үчүн чыкылдатыңыз}other{Бул кеңейтүүлөрдү орнотуу үчүн чыкылдатыңыз}}</translation>
 <translation id="2075474481720804517">Батарея <ph name="BATTERY_PERCENTAGE" />% кубатталган</translation>
 <translation id="2075959085554270910">Таптап чыкылдатуу жана таптап сүйрөөнү иштетип же өчүрө аласыз</translation>
 <translation id="2076269580855484719">Бул плагин жашырылсын</translation>
@@ -856,6 +860,7 @@
 <translation id="219008588003277019">Native Client модулу: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(бош)</translation>
 <translation id="2191223688506386601">Акыркы нерсе калды</translation>
+<translation id="2191754378957563929">Күйүк</translation>
 <translation id="2192505247865591433">Кимден:</translation>
 <translation id="2193365732679659387">Ишеним жөндөөлөрү</translation>
 <translation id="2195331105963583686">Андан кийин деле <ph name="DEVICE_TYPE" /> түзмөгүн колдоно бересиз, бирок андагы программа менен коопсуздук жаңыртуулары автоматтык түрдө алынбайт</translation>
@@ -1367,6 +1372,7 @@
 <translation id="2875698561019555027">(Chrome ката барактары)</translation>
 <translation id="2876336351874743617">2-манжа</translation>
 <translation id="2876369937070532032">Коопсуздугуңузга коркунуч жаралганда, баш баккан барактарыңыздын URL'дерин Google'га жөнөтөт</translation>
+<translation id="2877030408509021795">Текшерилди. Баары жайында.</translation>
 <translation id="2878782256107578644">Издөө жүрүп жатат, ачасызбы?</translation>
 <translation id="288042212351694283">Универсалдуу 2-фактор түзмөктөрүңүзгө кирүү</translation>
 <translation id="2881076733170862447">Кеңейтүүнү чыкылдатканда</translation>
@@ -1698,6 +1704,7 @@
 <translation id="3382073616108123819">Ой! Тутум бул түзмөктүн далдаштырма дайындарын аныктай албай койду.</translation>
 <translation id="3382086682569279540">Сиз башкарган аккаунт жакында өчүрүлөт</translation>
 <translation id="3382200254148930874">Көзөмөл токтотулууда…</translation>
+<translation id="3383210070657133526"><ph name="URL" /> виртуалдык чындык сеанстарын баштоого мүмкүнчүлүк алганы жатат</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">Ажыраткыч</translation>
 <translation id="338691029516748599"><ph name="NETWORK_COUNT" /> ичинен <ph name="NETWORK_INDEX" />-тармак, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, Сигналдын күчү <ph name="SIGNAL_STRENGTH" />%, Администраторуңуз башкарат, Туташуу</translation>
@@ -2034,6 +2041,7 @@
 <translation id="3819800052061700452">&amp;Толук экран</translation>
 <translation id="3820172043799983114">PIN код жараксыз.</translation>
 <translation id="3820749202859700794">SECG эллиптикалык ийри сызыгы secp521r1 (aka NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{Кеңейтүү жактырылды}other{# кеңейтүү жактырылды}}</translation>
 <translation id="3822559385185038546">Бул проксини администраторуңуз күчүнө киргизген</translation>
 <translation id="3826440694796503677">Администраторуңуз кошумча Google аккаунттарын кошуу функциясын өчүрүп койгон</translation>
 <translation id="3827306204503227641">Сынамык чөйрөдөн тышкары плагиндерге уруксат бериле берсин</translation>
@@ -2392,6 +2400,7 @@
 <translation id="4353114845960720315">VR режиминде бул сайт төмөнкүнү көрүшү мүмкүн:</translation>
 <translation id="4354344420232759511">Баш баккан сайттарыңыз бул жерден көрүнөт</translation>
 <translation id="435527878592612277">Сүрөтүңүздү тандаңыз</translation>
+<translation id="4357784477082216550"><ph name="URL" /> камераңыздын абалына көз салып, бөлмөңүздү картага түшүргөнү жатат</translation>
 <translation id="4358313196493694334">Курсордун абалын турукташтыруу</translation>
 <translation id="4359408040881008151">Көз каранды кеңейтүү(лөр)дөн улам орноту Installed because of dependent extension(s).</translation>
 <translation id="4359717112757026264">Шаар пейзажы</translation>
@@ -2632,6 +2641,7 @@
 <translation id="4720185134442950733">Мобилдик Интернет тармагы</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" /> дарегинин сырсөзү</translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> экраныңыз менен бөлүшүүдө.</translation>
+<translation id="4723140812774948886">Кийинки менен алмаштыруу</translation>
 <translation id="4724450788351008910">Дайындалышы өзгөрүлдү</translation>
 <translation id="4725511304875193254">Корги</translation>
 <translation id="4726710629007580002">Бул кеңейтүү орнотулуп жатканда бир нече эскертүү берилген:</translation>
@@ -2946,6 +2956,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> бир нече файлды жүктөп алганы жатат</translation>
 <translation id="5192062846343383368">Көзөмөлдөө жөндөөлөрүн көрүү үчүн Family Link колдонмосун ачыңыз</translation>
 <translation id="5193988420012215838">Алмашуу буферине көчүрүлдү</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{Кеңейтүүнү көрүү үчүн чыкылдатыңыз}other{Бул кеңейтүүлөрдү көрүү үчүн чыкылдатыңыз}}</translation>
 <translation id="5204673965307125349">Түзмөктүн жөндөөлөрүн баштапкы абалга келтирип туруп, кайра аракет кылыңыз.</translation>
 <translation id="5206215183583316675">"<ph name="CERTIFICATE_NAME" />" жок кылынсынбы?</translation>
 <translation id="520621735928254154">Тастыктаманы импорттоодогу ката</translation>
@@ -3028,6 +3039,7 @@
 <translation id="5310281978693206542">Шилтемени түзмөктөрүңүзгө жөнөтүү</translation>
 <translation id="5311304534597152726">Төмөнкү катары кирүүдө:</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> Кайра аракет кылыңыз.</translation>
+<translation id="5313628438272378649">Сиз жүктөп берип жаткан дайын-даректер уюмуңуздун коопсуздук саясаттарын бузгандыктан жүктөлүп берилбейт.</translation>
 <translation id="5315738755890845852">Ашыкча ийри кашаа: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">Идентификация</translation>
 <translation id="5317780077021120954">Сактоо</translation>
@@ -3083,6 +3095,7 @@
 <translation id="5398772614898833570">Жарнамалар бөгөттөлдү</translation>
 <translation id="5402815541704507626">Жаңыртууну мобилдик Интернет аркылуу жүктөп алыңыз</translation>
 <translation id="540296380408672091"><ph name="HOST" /> ичиндеги кукилер ар дайым бөгөттөлсүн</translation>
+<translation id="540495485885201800">Мурунку менен алмаштыруу</translation>
 <translation id="5405146885510277940">Жөндөөлөрдү кайра коюу</translation>
 <translation id="5408750356094797285">Чен-өлчөмүн өзгөртүү: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">Бул хосттор жана домендер үчүн прокси жөндөөлөрү колдонулбасын:</translation>
@@ -3120,6 +3133,7 @@
 <translation id="5449588825071916739">Бардык өтмөктөрдү кыстарып коюу</translation>
 <translation id="5449716055534515760">Тере&amp;зени жабуу</translation>
 <translation id="5454166040603940656"><ph name="PROVIDER" /> менен</translation>
+<translation id="5454360575035671759">Plugin VM'ди өчүрүү менен VM жок кылынат. Ага колдонмолор, жөндөөлөр жана дайын-даректер кирет. Чын эле улантасызбы?</translation>
 <translation id="5457113250005438886">Жараксыз</translation>
 <translation id="5457459357461771897">Компьютериңизден сүрөттөр, музыка жана башка медиа файлдарын окуп жана жок кылыңыз</translation>
 <translation id="5457599981699367932">Конок катары серептөө</translation>
@@ -3136,6 +3150,7 @@
 <translation id="5470735824776589490">Түзмөктү "жууп салып" баштапкы абалга келтирээрден мурун, аны өчүрүп күйгүзүү керек. <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">Салам! Мен сизге текстти окуп беремин.</translation>
 <translation id="5473333559083690127">Жаңы PIN'ди кайра киргизиңиз</translation>
+<translation id="548137908954174608">Ыкчам коштомо жазууларды иштетүү</translation>
 <translation id="5481941284378890518">Жакын жердеги принтерлерди кошуу</translation>
 <translation id="5483785310822538350">Файлды жана түзмөктү колдонуу мүмкүнчүлүгүн жоюу</translation>
 <translation id="5485080380723335835"><ph name="DEVICE_TYPE" /> түзмөгүңүз коопсуздук максатында кулпуланды. Улантуу үчүн сырсөзүңүздү кол менен киргизиңиз.</translation>
@@ -3172,6 +3187,7 @@
 <translation id="5518584115117143805">Электрондук почтаны шифрлөө тастыктамасы</translation>
 <translation id="5521078259930077036">Бул сиз күтүп жаткан башкы бетпи?</translation>
 <translation id="5522156646677899028">Бул кеңейтүүдө коопсуздукту бузган олуттуу көйгөй бар.</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Кеңейтүүнү администраторуңуз орноткон}other{# кеңейтүүнү администраторуңуз орноткон}}</translation>
 <translation id="5525677322972469346">Жаңы көзөмөлдөнгөн колдонуучу түзүү</translation>
 <translation id="5526701598901867718">Баары (кооптуу)</translation>
 <translation id="5526745900034778153">Шайкештирүүнү улантуу үчүн кайра кириңиз</translation>
@@ -3838,6 +3854,7 @@
 <translation id="6459799433792303855">Активдүү терезе башка экранга жылып кетти.</translation>
 <translation id="6460601847208524483">Кийинкини табуу</translation>
 <translation id="6461170143930046705">Тармактар изделүүдө…</translation>
+<translation id="6462438303393708881">Жүктөп берүүнү токтотуу</translation>
 <translation id="6463795194797719782">&amp;Түзөтүү</translation>
 <translation id="6466988389784393586">&amp;Бардык кыстармаларды ачуу</translation>
 <translation id="6467304607960172345">Толук экрандагы видеолорду оптималдаштыруу</translation>
@@ -3885,6 +3902,7 @@
 <translation id="6531282281159901044">Бул коркунучтуу файл сакталсын</translation>
 <translation id="6532101170117367231">Google Drive'да сактоо</translation>
 <translation id="6532106788206463496">Өзгөрүүлөрдү сактоо</translation>
+<translation id="6532663472409656417">Ишкана катталды</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Эскертүү:<ph name="END_BOLD" /> Дайындар топтолгондо иш тутуму бир кыйла жай иштеп калат, эмне кылыш керек экендигин так билсеңиз же сизден ошондой аракет суралганда гана иштетиңиз.</translation>
 <translation id="6541638731489116978">Бул сайттын кыймыл сенсорлорун колдонуу мүмкүнчүлүгү бөгөттөлгөн.</translation>
 <translation id="6545665334409411530">Кайталоо ылдамдыгы</translation>
@@ -4026,6 +4044,7 @@
 <translation id="6758056191028427665">Биздин ишибиз тууралуу билдирип коюңуз.</translation>
 <translation id="6759193508432371551">Демейки жөндөөлөргө кайтаруу</translation>
 <translation id="6762833852331690540">Күйүк</translation>
+<translation id="6767115174726603949">Виртуалдык чындык түзмөктөрүн жана дайын-даректерди колдонуу</translation>
 <translation id="6767566652486411142">Башка тилди тандоо...</translation>
 <translation id="6767639283522617719">Доменге туташпай жатат. Уюмдук бөлүм үчүн коюлган жөндөөлөр туура экенин текшериңиз.</translation>
 <translation id="6769712124046837540">Принтер кошуу…</translation>
@@ -4038,6 +4057,7 @@
 <translation id="677965093459947883">Өтө кичине</translation>
 <translation id="6781284683813954823">Doodle шилтемеси</translation>
 <translation id="6781978626986383437">Linux'тун камдык көчүрмөсүн сактоо жокко чыгарылды</translation>
+<translation id="6785915470941880363">Артка сыдыруу жөнүндө <ph name="LINK_BEGIN" />кеиңир маалымат<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">Кеңейтүүлөр</translation>
 <translation id="6787839852456839824">Ыкчам баскычтар</translation>
 <translation id="6788210894632713004">Топтомдон чыгарыла элек кеңейтүү</translation>
@@ -4144,6 +4164,7 @@
 <translation id="6923132443355966645">Сыдыруу / Чыкылдатуу</translation>
 <translation id="6923633482430812883">Түзмөктү кошууда ката кетти. Сиз туташып турган файл сервери SMB протоколунун 2 же андан кийинки версиясын колдоого аларын текшериңиз.</translation>
 <translation id="6930036377490597025">Тышкы коопсуздук ачкычы же орнотулган сенсор</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Кеңейтүү четке кагылды}other{# кеңейтүү четке кагылды}}</translation>
 <translation id="6935286146439255109">Кагаз тактасы жок</translation>
 <translation id="693807610556624488">"<ph name="DEVICE_NAME" />" түзмөгүнө дайындарды жазып жатканда атрибут өтө узун болуп кетти.</translation>
 <translation id="6938386202199793006">1 сакталган принтериңиз бар.</translation>
@@ -4232,6 +4253,7 @@
 <translation id="7053983685419859001">Бөгөттөө</translation>
 <translation id="7055152154916055070">Багыттоо бөгөттөлгөн:</translation>
 <translation id="7056526158851679338">Түзмөктөрдү &amp;текшерүү</translation>
+<translation id="7057767408836081338">Колдонмонун маалыматы алынбай калды. Колдонмону иштетүүгө аракет кылынууда…</translation>
 <translation id="7059858479264779982">Автоматтык түрдө ишке киргизүүгө коюу</translation>
 <translation id="7059893117020417984">Купуя серептөө үчүн чекиттердин сүрөтчөсү тартылган менюну чыкылдатып, жашыруун терезени ачыңыз</translation>
 <translation id="7062222374113411376">Жаңы эле жабылган сайттарга дайындарды жөнөтүүнү же кабыл алууну аягына чыгарууга уруксат берүү (сунушталат)</translation>
@@ -4285,6 +4307,7 @@
 <translation id="7120865473764644444">Шайкештирүү серверине туташпай койду. Кайра аракет кылынууда…</translation>
 <translation id="7121362699166175603">Таржымал жана дарек тилкесиндеги автоматтык түрдө бүтүрүлгөн сөздөр тазаланат. Google аккаунтуңуздун серептөө таржымалынын башка түрлөрү <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> дарегинде болушу мүмкүн.</translation>
 <translation id="7121389946694989825">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Учурда бул түзмөк мүчүлүштүктөрдү аныктоо маалыматын, түзмөктүн жана колдонмонун иштетилиши жөнүндө дайындарды Google'га автоматтык түрдө жөнөтүп жатат. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул дайындар анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">Иштеп чыгуучу режими</translation>
 <translation id="7121728544325372695">Акылдуу тирелер</translation>
 <translation id="7123360114020465152">Мындан ары колдоого алынбайт</translation>
 <translation id="7127980134843952133">Жүктөп алуу таржымалы</translation>
@@ -4448,6 +4471,7 @@
 <translation id="7352651011704765696">Бир жерден ката кетти</translation>
 <translation id="735361434055555355">Linux орнотулууда...</translation>
 <translation id="7353887511974462734">Учурдагы топко кошуу</translation>
+<translation id="7354341762311560488">Манжа изинин сенсору баскычтобуңуздун төмөнкү сол жагында жайгашкан. Ага манжаңыздын бирөө менен акырын тийип коюңуз.</translation>
 <translation id="735745346212279324">VPN ажыратылды</translation>
 <translation id="7359588939039777303">Жарнамалар бөгөттөлдү.</translation>
 <translation id="7360183604634508679">Кыстарма менюсу</translation>
@@ -4748,6 +4772,7 @@
 <translation id="7792388396321542707">Бөлүшүүнү токтотуу</translation>
 <translation id="779308894558717334">Мала жашыл</translation>
 <translation id="7793098747275782155">Кочкул көк</translation>
+<translation id="7797571222998226653">Өчүк</translation>
 <translation id="7799299114731150374">Тушкагаз ийгиликтүү орнотулду</translation>
 <translation id="7800518121066352902">С&amp;аат жебесине каршы айлантуу</translation>
 <translation id="780301667611848630">Жок, рахмат</translation>
@@ -4997,7 +5022,6 @@
 <translation id="8101987792947961127">Жууп салуу аракети кийинки жолу кайра жүктөөдө т</translation>
 <translation id="8102159139658438129">Туташтырылган телефондун параметрлерин көрүү үчүн <ph name="LINK_BEGIN" />Жөндөөлөргө<ph name="LINK_END" /> өтүңүз</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> түзмөгүңүздү "жууп салып", аны мурунку версиясына кайтарыңыз.</translation>
-<translation id="8106661353233173262">Бир жерден ката кетти. Текшерилген файлдын күтүү мөөнөтү аяктады.</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> түзмөгүңүзгө Google Play Store орнотулууда. Бир нече мүнөт кетиши мүмкүн.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Үчүнчү тараптын cookie файлдары жок}=1{Үчүнчү тараптын 1 cookie файлы бөгөттөлдү}other{Үчүнчү тараптын # cookie файлы бөгөттөлдү}}</translation>
 <translation id="810875025413331850">Жакынкы түзмөктөр табылган жок.</translation>
@@ -5082,6 +5106,7 @@
 <translation id="8227119283605456246">Файл тиркөө</translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> үчүн сырсөз сакталсынбы?</translation>
 <translation id="8234795456569844941">Биздин инженерлерге бул көйгөйдү чечүүгө жардам бериңиз. Профилдеги ката жөнүндө билдирүүнү алгандан мурун эмне болуп кеткенин айтып бериңиз:</translation>
+<translation id="8236123533334037984">Уюмуңуз бул жүктөп берилип жаткан дайын-даректерди коопсуздук максатында текшерүүдө.</translation>
 <translation id="8236917170563564587">Анын ордуна бул өтмөктү бөлүшүңүз</translation>
 <translation id="8237647586961940482">Күңүрт кызгылтым жана кызыл</translation>
 <translation id="8241040075392580210">Алабулут</translation>
@@ -5538,6 +5563,7 @@
 <translation id="8863753581171631212">Шилтемени жаңы <ph name="APP" /> колдонмосунда ачуу</translation>
 <translation id="8864055848767439877"><ph name="TAB_NAME" /> <ph name="APP_NAME" /> колдонмосу менен бөлүшүлүүдө</translation>
 <translation id="8864458770072227512"><ph name="EMAIL" /> бул түзмөктөн өчүрүлдү</translation>
+<translation id="8867228703146808825">Кураманын чоо-жайын алмашуу буферине көчүрүңүз</translation>
 <translation id="8868626022555786497">Колдонулууда</translation>
 <translation id="8870318296973696995">Башкы бет</translation>
 <translation id="8870413625673593573">Жакында жабылган</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 84d8660..5173a59 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -5019,7 +5019,6 @@
 <translation id="8101987792947961127">ຕ້ອງມີ Powerwash ຢູ່ໃນການປິດເປີດໃໝ່ຄັ້ງຕໍ່ໄປ</translation>
 <translation id="8102159139658438129">ໄປທີ່ <ph name="LINK_BEGIN" />ການຕັ້ງຄ່າ<ph name="LINK_END" /> ເພື່ອເບິ່ງຕົວເລືອກຕ່າງໆສຳລັບໂທລະສັບທີ່ເຊື່ອມຕໍ່ຂອງທ່ານ</translation>
 <translation id="8104696615244072556">Powerwash <ph name="IDS_SHORT_PRODUCT_NAME" /> ຂອງທ່ານ ແລະກັບຄືນຫາລຸ້ນຜ່ານມາ.</translation>
-<translation id="8106661353233173262">ມີບາງຢ່າງຜິດພາດ. ໄຟລ໌ທີ່ສະແກນໝົດເວລາແລ້ວ.</translation>
 <translation id="8107015733319732394">ກຳລັງຕິດຕັ້ງ Google Play Store ໃນ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ. ນີ້ສາມາດໃຊ້ເວລາສອງສາມນາທີ.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ບໍ່ມີຄຸກກີ້ພາກສ່ວນທີສາມ}=1{ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໄວ້ 1 ລາຍການ}other{ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໄວ້ # ລາຍການ}}</translation>
 <translation id="810875025413331850">ບໍ່ພົບອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ.</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index a9ba321..11e41db0 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -5024,7 +5024,6 @@
 <translation id="8101987792947961127">Kitą kartą įkeliant operacinę sistemą iš naujo būtina paleisti „Powerwash“</translation>
 <translation id="8102159139658438129">Eikite į skiltį <ph name="LINK_BEGIN" />„Nustatymai“<ph name="LINK_END" /> ir peržiūrėkite susieto telefono parinktis</translation>
 <translation id="8104696615244072556">Naudokite funkciją „Powerwash“ „<ph name="IDS_SHORT_PRODUCT_NAME" />“ įrenginyje ir grąžinkite ankstesnę versiją.</translation>
-<translation id="8106661353233173262">Įvyko klaida. Baigėsi nuskaityto failo skirtasis laikas.</translation>
 <translation id="8107015733319732394">Įdiegiama „Google Play“ parduotuvė jūsų „<ph name="DEVICE_TYPE" />“ įrenginyje. Tai gali šiek tiek užtrukti.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nėra trečiųjų šalių slapukų}=1{1 trečiųjų šalių slapukas}one{# trečiųjų šalių slapukas}few{# trečiųjų šalių slapukai}many{# trečiųjų šalių slapuko}other{# trečiųjų šalių slapukų}}</translation>
 <translation id="810875025413331850">Netoliese esančių įrenginių nerasta.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index b2371a2..a3dc1c0 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Nākamajā atkārtotas palaišanas reizē jāizpilda funkcija Powerwash</translation>
 <translation id="8102159139658438129">Dodieties uz sadaļu <ph name="LINK_BEGIN" />Iestatījumi<ph name="LINK_END" />, lai skatītu pievienotā tālruņa opcijas.</translation>
 <translation id="8104696615244072556">Aktivizējiet savā <ph name="IDS_SHORT_PRODUCT_NAME" /> ierīcē funkciju Powerwash un atjaunojiet iepriekšējo versiju.</translation>
-<translation id="8106661353233173262">Radās kļūda. Skenētajam failam iestājās noildze.</translation>
 <translation id="8107015733319732394">Notiek Google Play veikala instalēšana jūsu ierīcē (<ph name="DEVICE_TYPE" />). Tas var ilgt dažas minūtes.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nav trešās puses sīkfailu}=1{Bloķēts 1 trešās puses sīkfails}zero{Bloķēti # trešās puses sīkfaili}one{Bloķēts # trešās puses sīkfails}other{Bloķēti # trešās puses sīkfaili}}</translation>
 <translation id="810875025413331850">Nav atrasta neviena tuvumā esoša ierīce.</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 88f7327..35deff9 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Потребно е фабричко ресетирање на следното рестартирање</translation>
 <translation id="8102159139658438129">Одете во <ph name="LINK_BEGIN" />„Поставки“<ph name="LINK_END" /> за да видите опции за поврзаниот телефон</translation>
 <translation id="8104696615244072556">Фабрички ресетирајте го вашиот уред со <ph name="IDS_SHORT_PRODUCT_NAME" /> и вратете се на претходната верзија.</translation>
-<translation id="8106661353233173262">Нешто тргна наопаку. Скенираната датотека истече.</translation>
 <translation id="8107015733319732394">Google Play Store се инсталира на вашиот <ph name="DEVICE_TYPE" />. Ова може да потрае неколку минути.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Нема колачиња од трети страни}=1{Блокирано е 1 колаче од трета страна}one{Блокирано е # колаче од трети страни}other{Блокирани се # колачиња од трети страни}}</translation>
 <translation id="810875025413331850">Не се најдени уреди во близина.</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 6f69a8f..84f1c52 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1369,7 +1369,7 @@
 <translation id="2875698561019555027">(Chrome പിശക് പേജുകൾ)</translation>
 <translation id="2876336351874743617">വിരൽ 2</translation>
 <translation id="2876369937070532032">നിങ്ങളുടെ സുരക്ഷ അപകടത്തിലാകുമ്പോൾ നിങ്ങൾ സന്ദർശിക്കുന്ന ചില പേജുകളുടെ URL-കൾ Google-ലേക്ക് അയയ്ക്കുന്നു</translation>
-<translation id="2877030408509021795">പൂർണ്ണമായി സ്കാൻ ചെയ്യൂ, സുരക്ഷിതമായി മുന്നോട്ട് പോകാം.</translation>
+<translation id="2877030408509021795">സ്കാൻ ചെയ്യൽ പൂർത്തിയായി, സുരക്ഷിതമായി മുന്നോട്ട് പോകാം.</translation>
 <translation id="2878782256107578644">സ്‌കാൻ ചെയ്യൽ പുരോഗമിക്കുകയാണ്, ഇപ്പോൾ തുറക്കണോ?</translation>
 <translation id="288042212351694283">നിങ്ങളുടെ യൂണിവേഴ്‌സൽ സെക്കൻഡ് ഫാക്‌റ്റർ ഉപകരണങ്ങൾ ആക്‌സസ്സുചെയ്യുക</translation>
 <translation id="2881076733170862447">നിങ്ങൾ വിപുലീകരണം ക്ലിക്ക് ചെയ്യുമ്പോൾ</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">അടുത്ത റീബൂട്ടിൽ പവർവാഷ് ആവശ്യമാണ്</translation>
 <translation id="8102159139658438129">കണക്‌റ്റ് ചെയ്‌തിരിക്കുന്ന ഫോണിനായുള്ള ഓപ്ഷനുകൾ കാണാൻ <ph name="LINK_BEGIN" />ക്രമീകരണം<ph name="LINK_END" /> എന്നതിലേക്ക് പോവുക</translation>
 <translation id="8104696615244072556">നിങ്ങളുടെ <ph name="IDS_SHORT_PRODUCT_NAME" /> ഉപകരണം പവർവാഷ് ചെയ്‌തശേഷം മുൻ പതിപ്പിലേക്ക് മടങ്ങുക.</translation>
-<translation id="8106661353233173262">എന്തോ കുഴപ്പം സംഭവിച്ചു. സ്‌കാൻ ചെയ്‌ത ഫയൽ ടൈംഔട്ട് ആയി.</translation>
 <translation id="8107015733319732394">നിങ്ങളുടെ <ph name="DEVICE_TYPE" />-ൽ Google Play Store ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു. ഇതിന് കുറച്ച് മിനിറ്റുകളെടുക്കാം.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{മൂന്നാം കക്ഷി കുക്കികൾ ഒന്നുമില്ല}=1{ഒരു മൂന്നാം കക്ഷി കുക്കി ബ്ലോക്ക് ചെയ്‍തു}other{# മൂന്നാം കക്ഷി കുക്കികൾ ബ്ലോക്ക് ചെയ്‍തു}}</translation>
 <translation id="810875025413331850">സമീപത്ത് ഉപകരണങ്ങളൊന്നും കണ്ടെത്തിയില്ല.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index dd502e4..5049403d 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -5014,7 +5014,6 @@
 <translation id="8101987792947961127">Дараа дахин ачаалахад та өөрийн төхөөрөмжинд хадгалагдаж буй мэдээллийг бүрэн цэвэрлэсэн байх шаардлагатай (Powerwash хийсэн байх шаардлагатай).</translation>
 <translation id="8102159139658438129">Холбогдсон утасныхаа сонголтыг харахын тулд <ph name="LINK_BEGIN" />Тохиргоо<ph name="LINK_END" /> хэсэгт очно уу</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> төхөөрөмжөө цэвэрлээд, өмнөх хувилбарт шилжих.</translation>
-<translation id="8106661353233173262">Алдаа гарлаа. Скан хийсэн файлын хугацаа дууслаа.</translation>
 <translation id="8107015733319732394">Google Play Дэлгүүрийг таны <ph name="DEVICE_TYPE" />-д суулгаж байна. Суулгахад хэдэн хором болно.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Гуравдагч талын күүки байхгүй}=1{Гуравдагч талын 1 күүкиг блоклосон}other{Гуравдагч талын # күүкиг блоклосон}}</translation>
 <translation id="810875025413331850">Ойролцоох төхөөрөмж олдсонгүй.</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 45c6af5b..a3a64745d 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -396,6 +396,7 @@
 <translation id="1545177026077493356">स्वयंचलित कियोस्क मोड</translation>
 <translation id="1545775234664667895">"<ph name="THEME_NAME" />" थीम इंस्टॉल केली</translation>
 <translation id="1546280085599573572">तुम्ही होम बटण क्लिक करता तेव्हा कोणते पेज दर्शविले जाते ते या एक्स्टेंशनने बदलले आहे.</translation>
+<translation id="1549275686094429035">ARC सुरू केले</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" /> <ph name="VOLUME_NAME" /> ॲक्सेस करू इच्छित आहे. हे तुमच्या फायलीमध्ये फेरफार करू किंवा त्या हटवू शकते.</translation>
 <translation id="1553538517812678578">अमर्यादित</translation>
 <translation id="1554390798506296774">सॅन्डबॉक्स न केलेल्या प्लगिन ना <ph name="HOST" /> वर नेहमी अनुमती द्या</translation>
@@ -649,6 +650,7 @@
 <translation id="1879000426787380528">हे म्हणून साइन करा</translation>
 <translation id="1880905663253319515">"<ph name="CERTIFICATE_NAME" />" सर्टिफिकेट हटवायचे?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" /> पैकी <ph name="NETWORK_INDEX" /> नेटवर्क, <ph name="NETWORK_NAME" />, कनेक्ट करा</translation>
+<translation id="1884930769492918228">कॅमेर्‍याची स्थिती ट्रॅक करायची आहे आणि तुमच्या रूमचा नकाशा तयार करायचा आहे</translation>
 <translation id="1886996562706621347">प्रोटोकॉलकरिता डीफॉल्ट हँडलर होण्यासाठी साइटना विचारण्याची अनुमती द्या</translation>
 <translation id="1887442540531652736">साइन इन एरर</translation>
 <translation id="1887597546629269384">पुन्हा "Hey Google" म्हणा</translation>
@@ -731,6 +733,7 @@
 <translation id="2018352199541442911">सॉरी, तुमचे बाह्य स्टोरेज डीव्हाइस आत्ता सपोर्ट करत नाही.</translation>
 <translation id="2019718679933488176">नवीन टॅबमध्ये ऑडिओ &amp;उघडा</translation>
 <translation id="2020183425253392403">नेटवर्क पत्ता सेटिंग्ज दर्शवा</translation>
+<translation id="2020225359413970060">फाइल स्कॅन करा</translation>
 <translation id="2022953316617983419">QR कोड</translation>
 <translation id="2023167225947895179">पिनचा अंदाज घेणे सोपे असू शकते</translation>
 <translation id="202352106777823113">डाउनलोडला खूप वेळ लागत होता आणि नेटवर्कद्वारे थांबविले.</translation>
@@ -760,6 +763,7 @@
 <translation id="2059913712424898428">टाइमझोन</translation>
 <translation id="2065405795449409761">स्वयंचलित चाचणी सॉफ्टवेअरने Chrome नियंत्रित केले जात आहे.</translation>
 <translation id="2071393345806050157">स्थानिक लॉग फाइल नाही.</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{एक्स्टेंशन इंस्टॉल करण्यासाठी क्लिक करा}other{ही एक्स्टेंशन इंस्टॉल करण्यासाठी क्लिक करा}}</translation>
 <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% बॅटरी</translation>
 <translation id="2075959085554270910">क्लिक करण्यासाठी टॅप करा सुरू/बंद करण्याची आणि ड्रॅग करणे टॅप करण्याची तुम्हाला अनुमती देते</translation>
 <translation id="2076269580855484719">हे प्लग-इन लपवा</translation>
@@ -855,6 +859,7 @@
 <translation id="219008588003277019">नेटिव्ह क्लायंट मॉड्युल: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(रिक्त)</translation>
 <translation id="2191223688506386601">एक शेवटची गोष्ट</translation>
+<translation id="2191754378957563929">सुरू करा</translation>
 <translation id="2192505247865591433">द्वारा:</translation>
 <translation id="2193365732679659387">विश्वासू सेटिंग्ज</translation>
 <translation id="2195331105963583686">तुम्ही त्यानंतर तरीही हे <ph name="DEVICE_TYPE" /> वापरू शकाल पण ते यापुढे ऑटोमॅटिक सॉफ्टवेअर आणि सुरक्षा अपडेट मिळवू शकणार नाही</translation>
@@ -1366,6 +1371,7 @@
 <translation id="2875698561019555027">(Chrome एरर पेज)</translation>
 <translation id="2876336351874743617">दुसरे बोट</translation>
 <translation id="2876369937070532032">तुमची सुरक्षा धोक्यात असते तेव्हा, तुम्ही भेट दिलेल्या काही पेजचे URL Google ला पाठवते</translation>
+<translation id="2877030408509021795">स्कॅन पूर्ण झाले, प्रत्येक गोष्ट पूर्ण झालेली आहे.</translation>
 <translation id="2878782256107578644">स्कॅन प्रगतीपथावर आहे, आता उघडायचे आहे का?</translation>
 <translation id="288042212351694283">तुमच्या सर्वकष 2 रा घटक डिव्हाइस ॲक्सेस करा</translation>
 <translation id="2881076733170862447">तुम्ही एक्स्टेंशनवर क्लिक करता तेव्हा</translation>
@@ -1697,6 +1703,7 @@
 <translation id="3382073616108123819">अरेरे! या डिव्हाइससाठी डिव्हाइस अभिज्ञापक निर्धारित करण्यात सिस्टम अयशस्वी.</translation>
 <translation id="3382086682569279540">तुम्ही व्यवस्थापित करत असलेले खाते लवकरच काढले जाईल</translation>
 <translation id="3382200254148930874">पर्यवेक्षण थांबवत आहे...</translation>
+<translation id="3383210070657133526"><ph name="URL" /> ला आभासी वास्तविकता सेशन सुरू करायचे आहेत</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">विभाजक</translation>
 <translation id="338691029516748599"><ph name="NETWORK_COUNT" /> पैकी <ph name="NETWORK_INDEX" /> नेटवर्क, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, सिग्नल क्षमता <ph name="SIGNAL_STRENGTH" />%, तुमच्या अ‍ॅडमिनिस्ट्रेटरने व्यवस्थापित केलेले, कनेक्ट करा</translation>
@@ -2033,6 +2040,7 @@
 <translation id="3819800052061700452">&amp;पूर्ण स्क्रीन</translation>
 <translation id="3820172043799983114">चुकीचे पिन.</translation>
 <translation id="3820749202859700794">SECG एल्लिपटिक कर्व्ह secp521r1 (aka NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{एक्स्टेंशनला मंजुरी देण्यात आली आहे}other{# एक्स्टेंशनना मंजुरी देण्यात आली आहे}}</translation>
 <translation id="3822559385185038546">या प्रॉक्सीची अंमलबजावणी तुमच्या ॲडमिनिस्ट्रेटरकडून होते</translation>
 <translation id="3826440694796503677">तुमच्या अ‍ॅडमिनिस्ट्रेटरने आणखी Google खाती जोडणे बंद केले आहे</translation>
 <translation id="3827306204503227641">सॅन्डबॉक्स न केलेल्या प्लगिन ना अनुमती देणे सुरु ठेवा</translation>
@@ -2389,6 +2397,7 @@
 <translation id="4353114845960720315">तुम्ही VR वापरत असताना ही साइट कदाचित पुढील गोष्टींबद्दल अधिक माहिती मिळवू शकेल:</translation>
 <translation id="4354344420232759511">तुम्ही भेट दिलेल्या साइट येथे दिसतील</translation>
 <translation id="435527878592612277">तुमचा फोटो निवडा</translation>
+<translation id="4357784477082216550"><ph name="URL" /> ला तुमच्या कॅमेर्‍याची स्थिती ट्रॅक करून तुमच्या रूमचा नकाशा तयार करायचा आहे</translation>
 <translation id="4358313196493694334">क्लिक करण्याचे स्थान स्थिर करा</translation>
 <translation id="4359408040881008151">अवलंबून असलेल्या एक्स्टेंशन(ना) मुळे इंस्टॉल केले.</translation>
 <translation id="4359717112757026264">शहराचे दृश्य</translation>
@@ -2629,6 +2638,7 @@
 <translation id="4720185134442950733">मोबाइल डेटा नेटवर्क</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" /> साठी पासवर्ड</translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> तुमची स्क्रीन शेअर करत आहे.</translation>
+<translation id="4723140812774948886">पुढच्याशी बदला</translation>
 <translation id="4724450788351008910">सदस्यत्व बदलले</translation>
 <translation id="4725511304875193254">कॉर्गी</translation>
 <translation id="4726710629007580002">हे एक्स्टेंशन इंस्टॉल करण्याचा प्रयत्न करताना चेतावणी देण्यात आली:</translation>
@@ -2943,6 +2953,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> ला एकाहून अधिक फायली डाउनलोड करायच्या आहेत</translation>
 <translation id="5192062846343383368">तुमची पर्यवेक्षण सेटिंग्ज पाहण्यासाठी Family Link ॲप उघडा</translation>
 <translation id="5193988420012215838">तुमच्या क्लिपबोर्डवर कॉपी केले</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{एक्स्टेंशन पाहण्यासाठी क्लिक करा}other{ही एक्सटेंशन पाहण्यासाठी क्लिक करा}}</translation>
 <translation id="5204673965307125349">कृपया डिव्हाइस पॉवरवॉश करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="5206215183583316675">"<ph name="CERTIFICATE_NAME" />" हटवायचे?</translation>
 <translation id="520621735928254154">सर्टिफिकेट आया‍त एरर</translation>
@@ -3025,6 +3036,7 @@
 <translation id="5310281978693206542">तुमच्या डिव्हाइसवर लिंक पाठवा</translation>
 <translation id="5311304534597152726">हे म्हणून साइन करा</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> कृपया पुन्हा प्रयत्न करा.</translation>
+<translation id="5313628438272378649">हे अपलोड तुमच्या संस्थेच्या सुरक्षा धोरणांचे उल्लंघन करते आणि पूर्ण केले जाऊ शकत नाही.</translation>
 <translation id="5315738755890845852">अतिरिक्त महिरपी कंस: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">ओळख</translation>
 <translation id="5317780077021120954">सेव्ह करा</translation>
@@ -3080,6 +3092,7 @@
 <translation id="5398772614898833570">जाहिराती ब्लॉक केल्या</translation>
 <translation id="5402815541704507626">मोबाइल डेटा वापरून अपडेट डाउनलोड करा</translation>
 <translation id="540296380408672091">कुकीज नेहमी <ph name="HOST" /> वर अवरोधित करा</translation>
+<translation id="540495485885201800">मागच्याशी बदला</translation>
 <translation id="5405146885510277940">सेटिंग्ज रीसेट करा</translation>
 <translation id="5408750356094797285">झूम करा: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">या होस्ट आणि डोमेनसाठी प्रॉक्सी सेटिंग्ज वापरू नका:</translation>
@@ -3117,6 +3130,7 @@
 <translation id="5449588825071916739">सर्व टॅब बुकमार्क करा</translation>
 <translation id="5449716055534515760">विं&amp;डो बंद करा</translation>
 <translation id="5454166040603940656"><ph name="PROVIDER" /> सह</translation>
+<translation id="5454360575035671759">Plugin VM हटवल्याने तुमचे VM हटवले जाईल. यामध्ये त्यांच्या अ‍ॅप्लिकेशन, सेटिंग्ज आणि डेटाचा समावेश आहे. तुम्हाला नक्की सुरू ठेवायचे आहे का?</translation>
 <translation id="5457113250005438886">चुकीचा</translation>
 <translation id="5457459357461771897">तुमच्या कॉंप्युटरवरील फोटो, संगीत आणि अन्य मीडिया वाचा आणि हटवा</translation>
 <translation id="5457599981699367932">अतिथी म्हणून ब्राउझ करा</translation>
@@ -3133,6 +3147,7 @@
 <translation id="5470735824776589490">Powerwash सह तुमचा डिव्हाइस रीसेट केला जाण्यापूर्वी तो रीस्टार्ट करणे आवश्यक आहे. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">हाय! मी तुमचा टेक्‍स्‍ट टू स्‍पीच व्हॉइस आहे.</translation>
 <translation id="5473333559083690127">नवीन पिन पुन्हा प्रविष्‍ट करा</translation>
+<translation id="548137908954174608">लाइव्ह कॅप्शन सुरू करा</translation>
 <translation id="5481941284378890518">जवळपासचे प्रिंटर जोडा</translation>
 <translation id="5483785310822538350">फाइल आणि डिव्हाइस ॲक्सेस रद्द करा</translation>
 <translation id="5485080380723335835">तुमचे <ph name="DEVICE_TYPE" /> सुरक्षेच्या कारणास्तव लॉक करण्यात आलेले आहे. पुढे जाण्यासाठी तुम्ही तुमचा पासवर्ड स्वतः टाका.</translation>
@@ -3169,6 +3184,7 @@
 <translation id="5518584115117143805">ईमेल एंक्रिप्शन प्रमाणपत्र</translation>
 <translation id="5521078259930077036">तुम्ही अपेक्षा करत होता हे तेच होमपेज आहे?</translation>
 <translation id="5522156646677899028">या विस्‍तारामध्‍ये एक गंभीर सुरक्षा भेद्यता आहे.</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{तुमच्या अ‍ॅडमिनिस्ट्रेटरने एक्स्टेंशन इंस्टॉल केले आहे}other{तुमच्या अ‍ॅडमिनिस्ट्रेटरने # एक्स्टेंशन इंस्टॉल केली आहेत}}</translation>
 <translation id="5525677322972469346">एक नवीन पर्यवेक्षित वापरकर्ता तयार करा</translation>
 <translation id="5526701598901867718">सर्व (असुरक्षित)</translation>
 <translation id="5526745900034778153">सिंक पुन्हा पुढे चालू करण्यासाठी पुन्हा साइन इन करा</translation>
@@ -3836,6 +3852,7 @@
 <translation id="6459799433792303855">ॲक्टिव्ह विंडो दुसऱ्या डिस्प्लेवर हलवली आहे.</translation>
 <translation id="6460601847208524483">पुढील शोधा</translation>
 <translation id="6461170143930046705">नेटवर्क शोधत आहे...</translation>
+<translation id="6462438303393708881">अपलोड रद्द करा</translation>
 <translation id="6463795194797719782">&amp;संपादन</translation>
 <translation id="6466988389784393586">सर्व बुकमार्क &amp;उघडा</translation>
 <translation id="6467304607960172345">फुलस्क्रीन व्हिडिओ ऑप्टिमाइझ करा</translation>
@@ -3883,6 +3900,7 @@
 <translation id="6531282281159901044">धोकादायक फाईल ठेवा</translation>
 <translation id="6532101170117367231">Google ड्राइव्ह मध्ये सेव्ह करा</translation>
 <translation id="6532106788206463496">बदल सेव्ह करा</translation>
+<translation id="6532663472409656417">एंटरप्राइझची नोंदणी केली</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />टीप:<ph name="END_BOLD" /> डेटाचे संकलन कामप्रदर्शन कमी करू शकत असल्यामुळे, तुम्ही काय करत आहात हे केवळ तुम्हाला माहिती असल्यास किंवा असे करण्यास तुम्हाला सांगितले गेले असल्यास सुरू करा.</translation>
 <translation id="6541638731489116978">या साइटला तुमचे मोशन सेन्सर अ‍ॅक्सेस करण्यापासून ब्लॉक केले आहे.</translation>
 <translation id="6545665334409411530">पुनरावृत्ती दर</translation>
@@ -4024,6 +4042,7 @@
 <translation id="6758056191028427665">आम्ही आमचे काम कसे करत आहोत त्याबद्दल आम्हाला कळवा.</translation>
 <translation id="6759193508432371551">फॅक्टरी रीसेट</translation>
 <translation id="6762833852331690540">सुरू</translation>
+<translation id="6767115174726603949">आभासी वास्तविकता डिव्हाइस आणि डेटा अ‍ॅक्सेस करा</translation>
 <translation id="6767566652486411142">दुसरी भाषा निवडा...</translation>
 <translation id="6767639283522617719">डोमेनशी जोडू शकत नाही. संस्थात्मक एककासाठी सेटिंग्ज योग्य असल्याची खात्री करा.</translation>
 <translation id="6769712124046837540">प्रिंटर जोडणे...</translation>
@@ -4036,6 +4055,7 @@
 <translation id="677965093459947883">खूप लहान</translation>
 <translation id="6781284683813954823">डूडल लिंक</translation>
 <translation id="6781978626986383437">Linux बॅकअप रद्द केले</translation>
+<translation id="6785915470941880363">उलटे स्क्रोलिंग <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">विस्तार</translation>
 <translation id="6787839852456839824">कीबोर्ड शॉर्टकट</translation>
 <translation id="6788210894632713004">पॅक न केलेले एक्स्टेंशन</translation>
@@ -4142,6 +4162,7 @@
 <translation id="6923132443355966645">स्क्रोल करा / क्लिक करा</translation>
 <translation id="6923633482430812883">शेअर माउंट करताना एरर आली. कृपया तुम्ही कनेक्ट करत असलेला फाइल सर्व्हर SMBv2 किंवा त्यानंतरच्या आवृत्तीला सपोर्ट करतो की नाही हे तपासा.</translation>
 <translation id="6930036377490597025">बाह्य सिक्युरिटी की किंवा बिल्ट-इन सेन्सर</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एक्स्टेंशन नाकारण्यात आले आहे}other{# एक्स्टेंशन नाकारण्यात आली आहेत}}</translation>
 <translation id="6935286146439255109">पेपर ट्रे सापडत नाही</translation>
 <translation id="693807610556624488">लिहा ऑपरेशन यावर विशेषतांची कमाल लांबी ओलांडते: " <ph name="DEVICE_NAME" /> ".</translation>
 <translation id="6938386202199793006">तुमच्याकडे एक सेव्ह केलेला प्रिंटर आहे.</translation>
@@ -4230,6 +4251,7 @@
 <translation id="7053983685419859001">अवरोधित करा</translation>
 <translation id="7055152154916055070">रीडिरेक्ट ब्लॉक केले:</translation>
 <translation id="7056526158851679338">&amp;निरीक्षण डिव्हाइसेस</translation>
+<translation id="7057767408836081338">अ‍ॅप डेटा मिळवता आला नाही, तरीही अ‍ॅप रन करण्याचा प्रयत्न करत आहे...</translation>
 <translation id="7059858479264779982">स्वयं-लाँच करा वर सेट करा</translation>
 <translation id="7059893117020417984">खाजगीरीत्या ब्राउझ करण्यासाठी, गुप्त विंडो उघडण्याकरता डॉट्स आयकन मेन्यूवर क्लिक करा</translation>
 <translation id="7062222374113411376">अलीकडील बंद केलेल्या साइटना डेटा पाठविणे आणि प्राप्त करणे समाप्त करण्यासाठी अनुमती द्या (शिफारस केलेले)</translation>
@@ -4283,6 +4305,7 @@
 <translation id="7120865473764644444">संंकालित सर्व्हरशी कनेक्ट करणे शक्य झाले नाही. पुन्हा प्रयत्न करीत आहे...</translation>
 <translation id="7121362699166175603">अ‍ॅड्रेस बारवरील इतिहास आणि आपोआप पूर्ण करण्याचे दाखले साफ करते. तुमच्या Google खात्यामध्ये <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> वर कदाचित ब्राउझिंगचे इतर फॉर्म असतील.</translation>
 <translation id="7121389946694989825">वापर आणि निदान डेटा पाठवा. हे डिव्हाइस सध्या Google ला आपोआप निदान, डिव्हाइस आणि अ‍ॅप वापर डेटा पाठवत आहे. हे तुमच्या लहान मुलाला ओळखण्यासाठी वापरले जाणार नाही आणि सिस्ट्म आणि अ‍ॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अ‍ॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. तुमच्या लहान मुलासाठी अतिरिक्त वेब आणि अ‍ॅप अ‍ॅक्टिव्हिटी सुरू केलेली असल्यास, ही माहिती त्याच्या Google खात्यामध्ये स्टोअर केली जाऊ शकते. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">डेव्हलपर मोड</translation>
 <translation id="7121728544325372695">स्मार्ट डॅश</translation>
 <translation id="7123360114020465152">आता सपोर्ट करत नाही.</translation>
 <translation id="7127980134843952133">इतिहास डाउनलोड करा</translation>
@@ -4446,6 +4469,7 @@
 <translation id="7352651011704765696">काहीतरी चूक झाली</translation>
 <translation id="735361434055555355">Linux इन्स्टॉल करत आहे...</translation>
 <translation id="7353887511974462734">सद्य गटामध्ये जोडा</translation>
+<translation id="7354341762311560488">फिंगरप्रिंट सेन्सर म्हणजे तुमच्या कीबोर्डवर तळाशी डावीकडे असलेली की. कोणत्याही बोटाने तिला हळुवार स्पर्श करा.</translation>
 <translation id="735745346212279324">VPN डिस्कनेक्ट केले</translation>
 <translation id="7359588939039777303">जाहिराती ब्लॉक केल्या.</translation>
 <translation id="7360183604634508679">बुकमार्क मेनू</translation>
@@ -4744,6 +4768,7 @@
 <translation id="7792388396321542707">शेअरिंग थांबवा</translation>
 <translation id="779308894558717334">फिकट हिरवा</translation>
 <translation id="7793098747275782155">गडद निळा</translation>
+<translation id="7797571222998226653">बंद करा</translation>
 <translation id="7799299114731150374">वॉलपेपर यशस्वीरीत्‍‍‍‍या सेट केला</translation>
 <translation id="7800518121066352902">घड्याळाच्या वि&amp;रुद्ध दिशेने फिरवा</translation>
 <translation id="780301667611848630">नाही, नको</translation>
@@ -4994,7 +5019,6 @@
 <translation id="8101987792947961127">पुढील रीबूटवर Powerwash आवश्यक</translation>
 <translation id="8102159139658438129">तुमच्या कनेक्ट केलेल्या फोनसाठी पर्याय पाहण्याकरिता <ph name="LINK_BEGIN" />सेटिंग्ज<ph name="LINK_END" /> वर जा</translation>
 <translation id="8104696615244072556">तुमचे <ph name="IDS_SHORT_PRODUCT_NAME" /> डिव्हाइस Powerwash करा आणि मागील आवृत्तीकडे परत या.</translation>
-<translation id="8106661353233173262">काहीतरी चूक झाली. स्कॅन केलेल्या फाइलची वेळ संपली.</translation>
 <translation id="8107015733319732394">तुमच्या <ph name="DEVICE_TYPE" /> वर Google Play स्टोअर इंस्टॉल करत आहे. यासाठी काही मिनिटे लागतील.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{कोणत्याही तृतीय पक्ष कुकी नाहीत}=1{१ तृतीय पक्ष कुकी ब्लॉक केली आहे}other{# तृतीय पक्ष कुकी ब्लॉक केल्या आहेत}}</translation>
 <translation id="810875025413331850">कोणतीही जवळपासची डिव्हाइस आढळली नाहीत.</translation>
@@ -5079,6 +5103,7 @@
 <translation id="8227119283605456246">फाईल संलग्न करा</translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> साठी पासवर्ड सेव्ह करायचा आहे का?</translation>
 <translation id="8234795456569844941">कृपया आमच्या इंजिनियरना ही समस्या सोडवण्यात मदत करा. तुम्हाला प्रोफाइल एरर मिळण्याआधी नेमके काय झाले ते आम्हाला सांगा:</translation>
+<translation id="8236123533334037984">तुमची संस्था सुरक्षा मंजुरीसाठी हे अपलोड स्कॅन करत आहे.</translation>
 <translation id="8236917170563564587">त्याऐवजी हा टॅब शेअर करा</translation>
 <translation id="8237647586961940482">गडद गुलाबी आणि लाल</translation>
 <translation id="8241040075392580210">Shady</translation>
@@ -5536,6 +5561,7 @@
 <translation id="8863753581171631212">लिंक नवीन <ph name="APP" /> मध्ये उघडा</translation>
 <translation id="8864055848767439877"><ph name="TAB_NAME" /> <ph name="APP_NAME" />वर शेअर करत आहे</translation>
 <translation id="8864458770072227512">या डिव्हाइसवरून <ph name="EMAIL" /> काढून टाकण्यात आला</translation>
+<translation id="8867228703146808825">बिल्ड तपशील क्लिपबोर्डवर कॉपी करा</translation>
 <translation id="8868626022555786497">वापरात आहे</translation>
 <translation id="8870318296973696995">होम</translation>
 <translation id="8870413625673593573">अलीकडे बंद</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 90da0e83..ecf39ae 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -4057,7 +4057,7 @@
 <translation id="677965093459947883">Sangat kecil</translation>
 <translation id="6781284683813954823">Pautan Coretan</translation>
 <translation id="6781978626986383437">Sandaran Linux dibatalkan</translation>
-<translation id="6785915470941880363">Penatalan songsang <ph name="LINK_BEGIN" />ketahui lebih lanjut<ph name="LINK_END" /></translation>
+<translation id="6785915470941880363">Penatalan songsang <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">Pelanjutan</translation>
 <translation id="6787839852456839824">Pintasan papan kekunci</translation>
 <translation id="6788210894632713004">Sambungan dinyahpek</translation>
@@ -4471,7 +4471,7 @@
 <translation id="7352651011704765696">Kesilapan telah berlaku</translation>
 <translation id="735361434055555355">Memasang Linux...</translation>
 <translation id="7353887511974462734">Tambahkan tab pada Kumpulan yang Sedia Ada</translation>
-<translation id="7354341762311560488">Penderia cap jari ialah kekunci sebelah kanan di bahagian bawah pada papan kekunci anda. Sentuh dengan lembut menggunakan mana-mana jari.</translation>
+<translation id="7354341762311560488">Penderia cap jari ialah kekunci pada bahagian bawah sebelah kiri papan kekunci anda. Sentuh dengan lembut menggunakan mana-mana jari.</translation>
 <translation id="735745346212279324">VPN diputuskan sambungan</translation>
 <translation id="7359588939039777303">Iklan disekat.</translation>
 <translation id="7360183604634508679">Menu penanda halaman</translation>
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Powerwash diperlukan pada but semula seterusnya</translation>
 <translation id="8102159139658438129">Pergi ke <ph name="LINK_BEGIN" />Tetapan<ph name="LINK_END" /> untuk melihat pilihan bagi telefon anda yang disambungkan</translation>
 <translation id="8104696615244072556">Powerwash peranti <ph name="IDS_SHORT_PRODUCT_NAME" /> anda dan kembali ke versi terdahulu.</translation>
-<translation id="8106661353233173262">Kesilapan telah berlaku. Fail yang diimbas telah tamat masa.</translation>
 <translation id="8107015733319732394">Memasang Gedung Google Play pada <ph name="DEVICE_TYPE" /> anda. Proses ini mungkin mengambil masa beberapa minit.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Tiada kuki pihak ketiga}=1{1 kuki pihak ketiga disekat}other{# kuki pihak ketiga disekat}}</translation>
 <translation id="810875025413331850">Tiada peranti berdekatan dijumpai.</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 30feb08b..b9f67c6 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -652,7 +652,7 @@
 <translation id="1879000426787380528">အောက်ပါအဖြစ် လက်မှတ်ထိုးဝင်ပါ-</translation>
 <translation id="1880905663253319515">လက်မှတ် "<ph name="CERTIFICATE_NAME" />"ကို ဖျက်ရမလား?</translation>
 <translation id="1884013283844450420">ကွန်ရက် <ph name="NETWORK_COUNT" /> ခုအနက်မှ <ph name="NETWORK_INDEX" />၊ <ph name="NETWORK_NAME" />၊ ချိတ်ဆက်ရန်</translation>
-<translation id="1884930769492918228">ကင်မရာအနေအထားကို မှတ်သားပြီး သင့်အခန်းကို နေရာချပါ</translation>
+<translation id="1884930769492918228">ကင်မရာအနေအထားကို မှတ်သားပြီး သင့်အခန်းကို နေရာချရန်</translation>
 <translation id="1886996562706621347">ဆိုက်များအား ပရိုတိုကောများ အတွက် ပုံသေ ကိုင်တွယ်သူများ ဖြစ်လာရန် တောင်းခွင့် ပြုရန်</translation>
 <translation id="1887442540531652736">လက်မှတ်ထိုးဝင်ခြင်း အမှားအယွင်း</translation>
 <translation id="1887597546629269384">"ဟေး Google" ဟု ထပ်ပြောပါ</translation>
@@ -3039,7 +3039,7 @@
 <translation id="5310281978693206542">သင့်စက်ပစ္စည်းများသို့ လင့်ခ်ပို့ပါ</translation>
 <translation id="5311304534597152726">ဤအကောင့်ဖြင့် လက်မှတ်ထိုးဝင်ထားသည်</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> ထပ်စမ်းကြည့်ပါ။</translation>
-<translation id="5313628438272378649">ဤအပ်လုဒ်က သင့်အဖွဲ့အစည်း၏ လုံခြုရးမူဝါဒများကို ချိုးဖောက်သဖြင့် အပြီးသတ်၍မရပါ။</translation>
+<translation id="5313628438272378649">ဤအပ်လုဒ်က သင့်အဖွဲ့အစည်း၏ လုံခြုံရေးမူဝါဒများကို ချိုးဖောက်သဖြင့် အပြီးသတ်၍မရပါ။</translation>
 <translation id="5315738755890845852">တွန့်ကွင်းအပို- <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">အထောက်အထား</translation>
 <translation id="5317780077021120954">သိမ်းရန်</translation>
@@ -5020,7 +5020,6 @@
 <translation id="8101987792947961127">နောက်တစ်ကြိမ် reboot လုပ်လျှင် Powerwash လိုအပ်သည်။</translation>
 <translation id="8102159139658438129">သင်ချိတ်ထားသောဖုန်းအတွက် ရွေးစရာများ ကြည့်ရန် <ph name="LINK_BEGIN" />ဆက်တင်များ<ph name="LINK_END" /> သို့ သွားပါ</translation>
 <translation id="8104696615244072556">သင့် <ph name="IDS_SHORT_PRODUCT_NAME" /> စက်ပစ္စည်းအား powerwash လုပ်ပြီးနောက် ယခင်ဗားရှင်းသို့ ပြန်သွားရန်</translation>
-<translation id="8106661353233173262">တစ်ခုခုမှားသွားသည်။ စကင်ဖတ်ထားသည့်ဖိုင် အချိန်ကုန်သွားပါပြီ။</translation>
 <translation id="8107015733319732394">သင့် <ph name="DEVICE_TYPE" /> တွင် Google Play စတိုးကို ထည့်သွင်းနေပါသည်။ မိနစ်အနည်းငယ် ကြာနိုင်ပါသည်။</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီးများ မရှိပါ}=1{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီး ၁ ခုကို ပိတ်ထားသည်}other{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီး # ခုကို ပိတ်ထားသည်}}</translation>
 <translation id="810875025413331850">အနီးအနားတွင် ကိရိယာများ မရှိပါ။</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index af7174cd..15edf26 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -647,7 +647,7 @@
 <translation id="1879000426787380528">निम्न व्यक्तिका रूपमा साइन इन गर्नुहोस्</translation>
 <translation id="1880905663253319515">प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" लाई मेटाउने?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" /> मध्ये नेटवर्क <ph name="NETWORK_INDEX" />, जोड्नुहोस्</translation>
-<translation id="1884930769492918228">क्यामेराको स्थान पत्ता लगाउने तथा तपाईंको कोठाको नक्साङ्कन गर्ने</translation>
+<translation id="1884930769492918228">क्यामेराको स्थिति पत्ता लगाउने तथा तपाईंको कोठाको नक्साङ्कन गर्ने</translation>
 <translation id="1886996562706621347">प्रोटोकलहरूको लागि पूर्वनिर्धारित हेन्डलर बन्न अनुरोध गर्न साइटहरूलाई अनुमति दिनुहोस् (सिफारिश गरिएको)</translation>
 <translation id="1887442540531652736">साइन इनसम्बन्धी त्रुटि</translation>
 <translation id="1887597546629269384">फेरि "Hey Google" भन्नुहोस्</translation>
@@ -2038,7 +2038,7 @@
 <translation id="3819800052061700452">&amp;पूर्ण स्क्रीन</translation>
 <translation id="3820172043799983114">अमान्य PIN।</translation>
 <translation id="3820749202859700794">SECG अण्डाकार कर्भ secp521r1 (NIST P-521 पनि भनिन्छ)</translation>
-<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{एउटा एक्स्टेन्सन थपिदिन गरिएको अनुरोध स्वीकार गरिएको छ}other{# वटा एक्स्टेन्सन थपिदिन गरिएको अनुरोध स्वीकार गरिएको छ}}</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{एउटा एक्स्टेन्सन स्वीकार गरिएको छ}other{# वटा एक्स्टेन्सन स्वीकार गरिएको छ}}</translation>
 <translation id="3822559385185038546">यो प्रोक्सी तपाईंका प्रशासकद्वारा लागू गरिएको हो</translation>
 <translation id="3826440694796503677">तपाईंका व्यवस्थापकले योभन्दा बढी Google खाताहरू थप्ने सुविधा असक्षम पार्नुभएको छ</translation>
 <translation id="3827306204503227641">स्यान्डबक्स हटाइएका प्लगइनहरूलाई अनुमति जारी राख्नुहोस्</translation>
@@ -2396,7 +2396,7 @@
 <translation id="4353114845960720315">तपाईं VR मा हुँदा यो साइटले निम्न कुराबारे सिक्न सक्छ:</translation>
 <translation id="4354344420232759511">तपाईंले भ्रमण गर्ने साइटहरू यहाँ देखिने छन्</translation>
 <translation id="435527878592612277">आफ्नो तस्बिर चयन गर्नुहोस्</translation>
-<translation id="4357784477082216550"><ph name="URL" /> क्यामेराको स्थान पत्ता लगाउन तथा तपाईंको कोठाको नक्साङ्कन गर्न चाहन्छ</translation>
+<translation id="4357784477082216550"><ph name="URL" /> क्यामेराको अवस्था पत्ता लगाउन तथा तपाईंको कोठाको नक्साङ्कन गर्न चाहन्छ</translation>
 <translation id="4358313196493694334">क्लिक गरिने स्थान स्थिर राख्नुहोस्</translation>
 <translation id="4359408040881008151">स्थापनाको कारणले निर्भर एक्सटेन्स(हरू)।</translation>
 <translation id="4359717112757026264">सहरी परिदृश्य</translation>
@@ -4039,7 +4039,7 @@
 <translation id="6758056191028427665">हामी कस्तो काम गर्दैछौं भन्नेबारे प्रतिक्रिया दिनुहोस्।</translation>
 <translation id="6759193508432371551">कारखाना रिसेट</translation>
 <translation id="6762833852331690540">सक्रिय छ</translation>
-<translation id="6767115174726603949">भर्चुअल रियालिटी यन्त्र र तिनमा भएका डेटामाथि पहुँच राख्ने</translation>
+<translation id="6767115174726603949">भर्चुअल रियालिटी भएका यन्त्र र तिनमा भएका डेटामाथि पहुँच राख्ने</translation>
 <translation id="6767566652486411142">अर्को भाषा छनौट गर्नुहोस्...</translation>
 <translation id="6767639283522617719">डोमेन जोड्न सकिँदैन। संगठनात्मक एकाइका लागि सेटिङहरू सही छन् भन्ने सुनिश्चित गर्नुहोस्।</translation>
 <translation id="6769712124046837540">मुद्रक थप्दै...</translation>
@@ -4159,7 +4159,7 @@
 <translation id="6923132443355966645">स्क्रोल गर्नुहोस् / क्लिक गर्नुहोस्</translation>
 <translation id="6923633482430812883">आदान प्रदान माउन्ट गर्ने क्रममा त्रुटि भयो। आफूले जडान गर्न खोजिरहेको फाइल सर्भरले SMBv2 वा सोभन्दा नवीनतम संस्करण समर्थन गर्छ भन्ने कुरा जाँच गर्नुहोस्।</translation>
 <translation id="6930036377490597025">बाह्य सुरक्षा साँचो वा अन्तर्निर्मित सेन्सर</translation>
-<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एउटा एक्स्टेन्सन थपिदिन गरिएको अनुरोध अस्वीकार गरिएको छ}other{# वटा एक्स्टेन्सन थपिदिन गरिएको अनुरोध अस्वीकार गरिएको छ}}</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एउटा एक्स्टेन्सन अस्वीकार गरिएको छ}other{# वटा एक्स्टेन्सन अस्वीकार गरिएको छ}}</translation>
 <translation id="6935286146439255109">कागज राख्ने एउटा ट्रे छैन</translation>
 <translation id="693807610556624488">लेख्ने कार्यले "<ph name="DEVICE_NAME" />" मा विशेषताको अधिकतम लम्बाइ नाघ्छ</translation>
 <translation id="6938386202199793006">तपाईंसँग १ प्रिन्टर छ।</translation>
@@ -5017,7 +5017,6 @@
 <translation id="8101987792947961127">अर्को रिबुटमा पावरवास आवश्यक छ</translation>
 <translation id="8102159139658438129">आफ्नो जोडिएको फोनसम्बन्धी विकल्पहरू हेर्न <ph name="LINK_BEGIN" />सेटिङहरू<ph name="LINK_END" />मा जानुहोस्</translation>
 <translation id="8104696615244072556">Powerwash तपाईँको <ph name="IDS_SHORT_PRODUCT_NAME" /> उपकरणलाई powerwash गरी पहिलेको संस्करणमा फर्कन सक्नुहुन्छ।</translation>
-<translation id="8106661353233173262">केही चिज गडबड भयो। यो फाइल स्क्यान गर्ने समय सकिएको छ।</translation>
 <translation id="8107015733319732394">तपाईंको <ph name="DEVICE_TYPE" /> मा उक्त Google Play स्टोर स्थापना गर्दै। यस कार्यमा केही समय लाग्नसक्छ।</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{कुनै पनि तेस्रो पक्षीय कुकी छैन}=1{१ तेस्रो पक्षीय कुकीलाई रोक लगाइयो}other{# वटा तेस्रो पक्षीय कुकीलाई रोक लगाइयो}}</translation>
 <translation id="810875025413331850">वरपर कुनै पनि यन्त्र भेटिएन।</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 2536b4f..725193c 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Powerwash vereist bij volgende keer opnieuw opstarten</translation>
 <translation id="8102159139658438129">Ga naar <ph name="LINK_BEGIN" />Instellingen <ph name="LINK_END" /> om opties voor je gekoppelde telefoon te bekijken</translation>
 <translation id="8104696615244072556">Powerwash je <ph name="IDS_SHORT_PRODUCT_NAME" />-apparaat en zet de vorige versie terug.</translation>
-<translation id="8106661353233173262">Er is iets misgegaan. Er is een time-out opgetreden voor het gescande bestand.</translation>
 <translation id="8107015733319732394">De Google Play Store wordt geïnstalleerd op je <ph name="DEVICE_TYPE" />. Dit kan enkele minuten duren.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Geen cookies van derden}=1{1 cookie van derden is geblokkeerd}other{# cookies van derden zijn geblokkeerd}}</translation>
 <translation id="810875025413331850">Geen apparaten in de buurt gevonden.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 8ccdb98..aebbde7 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -648,7 +648,7 @@
 <translation id="1879000426787380528">Logg på som</translation>
 <translation id="1880905663253319515">Vil du slette sertifikatet «<ph name="CERTIFICATE_NAME" />»?</translation>
 <translation id="1884013283844450420">Nettverk <ph name="NETWORK_INDEX" /> av <ph name="NETWORK_COUNT" /> – <ph name="NETWORK_NAME" /> – koble til</translation>
-<translation id="1884930769492918228">Spor kameraposisjonen, og kartlegg rommet ditt</translation>
+<translation id="1884930769492918228">spore kameraposisjonen og kartlegge rommet ditt</translation>
 <translation id="1886996562706621347">Tillat at nettsteder kan be om å bli standardbehandlere for protokoller (anbefales)</translation>
 <translation id="1887442540531652736">Påloggingsfeil</translation>
 <translation id="1887597546629269384">Si «Hey Google» igjen</translation>
@@ -1701,7 +1701,7 @@
 <translation id="3382073616108123819">Beklager. Systemet kunne ikke fastslå enhetsidentifikatorer for denne enheten.</translation>
 <translation id="3382086682569279540">Kontoen du administrerer, fjernes snart</translation>
 <translation id="3382200254148930874">Avslutter tilsynet …</translation>
-<translation id="3383210070657133526"><ph name="URL" /> vil kunne starte virtuell virkelighet-økter</translation>
+<translation id="3383210070657133526"><ph name="URL" /> ønsker å kunne starte virtuell virkelighet-økter</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation>
 <translation id="338583716107319301">Skillelinje</translation>
 <translation id="338691029516748599">Nettverk <ph name="NETWORK_INDEX" /> av <ph name="NETWORK_COUNT" /> – <ph name="NETWORK_NAME" /> – <ph name="SECURITY_STATUS" /> – signalstyrke <ph name="SIGNAL_STRENGTH" /> % – administreres av administratoren din – koble til</translation>
@@ -5018,7 +5018,6 @@
 <translation id="8101987792947961127">Powerwash kreves ved neste omstart</translation>
 <translation id="8102159139658438129">Gå til <ph name="LINK_BEGIN" />Innstillinger<ph name="LINK_END" /> for å se alternativer for den tilkoblede telefonen</translation>
 <translation id="8104696615244072556">Kjør Powerwash på <ph name="IDS_SHORT_PRODUCT_NAME" />-enheten din og gå tilbake til forrige versjon.</translation>
-<translation id="8106661353233173262">Noe gikk galt. Den skannede filen ble tidsavbrutt.</translation>
 <translation id="8107015733319732394">Installerer Google Play-butikken på <ph name="DEVICE_TYPE" />-enheten din. Dette kan ta noen minutter.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ingen informasjonskapsler fra tredjeparter}=1{1 informasjonskapsel fra en tredjepart er blokkert}other{# informasjonskapsler fra tredjeparter er blokkert}}</translation>
 <translation id="810875025413331850">Fant ingen enheter i nærheten.</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index dae6f76..47ab33b 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -392,6 +392,7 @@
 <translation id="1545177026077493356">ସ୍ୱଚାଳିତ କିଓସ୍କ ମୋଡ୍</translation>
 <translation id="1545775234664667895">ସଂସ୍ଥାପିତ ହୋଇଥିବା ଥିମ୍ "<ph name="THEME_NAME" />"</translation>
 <translation id="1546280085599573572">ଏହି ଏକ୍ସଟେନ୍‌ସନ୍ ଏହା ପରିବର୍ତ୍ତନ କରିଛି ଯେ ଯେତେବେଳେ ଆପଣ ହୋମ୍‌ ବଟନ୍‌ କ୍ଲିକ୍‌ କରନ୍ତି ସେତେବେଳେ କେଉଁ ପୃଷ୍ଠା ଦେଖାଇବ।</translation>
+<translation id="1549275686094429035">ARC ସକ୍ଷମ ଅଛି</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" />, <ph name="VOLUME_NAME" />କୁ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହେଁ। ଏହା ଆପଣଙ୍କ ଫାଇଲ୍‌କୁ ସଂଶୋଧନ କିମ୍ବା ଡିଲିଟ୍‌ କରିପାରେ।</translation>
 <translation id="1553538517812678578">ଅସୀମିତ</translation>
 <translation id="1554390798506296774"><ph name="HOST" />ରେ ସର୍ବଦା ଅନ୍‌ସ୍ୟାଣ୍ଡବକ୍ସ କରାଯାଇଥିବା ପ୍ଲଗ୍‌ଇନ୍‌ଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
@@ -646,6 +647,7 @@
 <translation id="1879000426787380528">ଏହିପରି ଭାବରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation>
 <translation id="1880905663253319515">ସାର୍ଟିଫିକେଟ୍ "<ph name="CERTIFICATE_NAME" />" ଡିଲିଟ୍ କରିବେ କି?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" />ଟିର <ph name="NETWORK_INDEX" /> ନେଟ୍‌ୱାର୍କ, <ph name="NETWORK_NAME" /> ସଂଯୋଗ କରନ୍ତୁ</translation>
+<translation id="1884930769492918228">କ୍ୟାମେରା ସ୍ଥିତି ଟ୍ରାକ୍ କରିବାକୁ ଏବଂ ଆପଣଙ୍କ ରୁମକୁ ମ୍ୟାପ୍ କରିବାକୁ</translation>
 <translation id="1886996562706621347">ସାଇଟ୍‍ଗୁଡ଼ିକୁ ପ୍ରୋଟୋକଲ୍ ପାଇଁ ଡିଫଲ୍ଟ ହ୍ୟାଣ୍ଡଲର୍ ହେବା ପାଇଁ ପଚାରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ (ସୁପାରିଶ୍ କରାଯାଇଛି)</translation>
 <translation id="1887442540531652736">ସାଇନ୍‍-ଇନ୍ କରିବାରେ ତ୍ରୁଟି</translation>
 <translation id="1887597546629269384">ପୁଣି "Hey Google" କୁହନ୍ତୁ</translation>
@@ -728,6 +730,7 @@
 <translation id="2018352199541442911">କ୍ଷମା କରିବେ, ଏହି ସମୟରେ ଆପଣଙ୍କର ବାହ୍ୟ ଷ୍ଟୋରେଜ୍ ଡିଭାଇସ୍ ସମର୍ଥିତ ନୁହେଁ</translation>
 <translation id="2019718679933488176">ନୂଆ ଟାବ୍‍‍ରେ ଅଡିଓ &amp;ଖୋଲନ୍ତୁ</translation>
 <translation id="2020183425253392403">ନେଟ୍‍ୱାର୍କ ଠିକଣା ସେଟିଂସ୍ ଦେଖାନ୍ତୁ</translation>
+<translation id="2020225359413970060">ଫାଇଲ୍ ସ୍କାନ୍ କରନ୍ତୁ</translation>
 <translation id="2022953316617983419">QR କୋଡ୍</translation>
 <translation id="2023167225947895179">ପିନ୍‍କୁ ଅନୁମାନ କରିବା ସହଜ ହୋଇପାରେ</translation>
 <translation id="202352106777823113">ଡାଉନ୍‌ଲୋଡ୍‌ ଅଧିକ ସମୟ ନେଉଥିଲା ଏବଂ ନେଟ୍‍ୱାର୍କ ଦ୍ୱାରା ବନ୍ଦ କରାଯାଇଥିଲା।</translation>
@@ -757,6 +760,7 @@
 <translation id="2059913712424898428">ସମୟ କ୍ଷେତ୍ର</translation>
 <translation id="2065405795449409761">Chrome ସ୍ୱୟଂଚାଳିତ ପରୀକ୍ଷଣ ସଫ୍ଟୱେର୍ ଦ୍ୱାରା ନିୟନ୍ତ୍ରିତ ହେଉଛି।</translation>
 <translation id="2071393345806050157">କୌଣସି ସ୍ଥାନୀୟ ଲଗ୍‌ ଫାଇଲ୍‌ ନାହିଁ।</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{ଏକ୍ସଟେନସନ ଇନଷ୍ଟଲ୍ କରିବାକୁ କ୍ଲିକ୍ କରନ୍ତୁ}other{ଏହି ଏକ୍ସଟେନସନଗୁଡ଼ିକ ଇନଷ୍ଟଲ୍ କରିବାକୁ କ୍ଲିକ୍ କରନ୍ତୁ}}</translation>
 <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% ବ୍ୟାଟେରୀ ଅଛି</translation>
 <translation id="2075959085554270910">ଆପଣଙ୍କୁ ଟାପ୍‌-ଟୁ-କ୍ଲିକ୍‍ ଏବଂ ଟାଣି ଟାପ୍‌ କରିବା ସୁବିଧା, ସକ୍ଷମ/ଅକ୍ଷମ କରିବାକୁ ଅନୁମତି ଦିଏ</translation>
 <translation id="2076269580855484719">ଏହି ପ୍ଲଗ୍‌ଇନ୍ ଲୁଚାନ୍ତୁ</translation>
@@ -852,6 +856,7 @@
 <translation id="219008588003277019">ସ୍ଥାନୀୟ କ୍ଲାଏଣ୍ଟ ମଡ୍ୟୁଲ୍: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(ଖାଲି)</translation>
 <translation id="2191223688506386601">ଗୋଟିଏ ଶେଷ କଥା</translation>
+<translation id="2191754378957563929">ଚାଲୁ ଅଛି</translation>
 <translation id="2192505247865591433">ଠାରୁ:</translation>
 <translation id="2193365732679659387">ବିଶ୍ୱସ୍ତ ସେଟିଂସ୍</translation>
 <translation id="2195331105963583686">ଆପଣ ସେହି ସମୟ ପରେ ମଧ୍ୟ <ph name="DEVICE_TYPE" /> ବ୍ୟବହାର କରିପାରିବେ, କିନ୍ତୁ ଏହା ଆଉ ସ୍ୱଚାଳିତ ସଫ୍ଟୱେୟାର ଏବଂ ସୁରକ୍ଷା ଅପ୍‌ଡେଟ୍‍ଗୁଡ଼ିକ ପାଇବ ନାହିଁ।</translation>
@@ -1362,6 +1367,7 @@
 <translation id="2875698561019555027">(Chromeର ତ୍ରୁଟି ଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକ)</translation>
 <translation id="2876336351874743617">ଟିପଚିହ୍ନ 2</translation>
 <translation id="2876369937070532032">ଆପଣଙ୍କର ସୁରକ୍ଷା ବିପଦରେ ଥିବା ବେଳେ, Googleକୁ ଆପଣ ଯାଇଥିବା କିଛି ପୃଷ୍ଠାର URL ପଠାଏ</translation>
+<translation id="2877030408509021795">ସ୍କାନ୍ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି, ସବୁକିଛି ଠିକ୍ ଅଛି।</translation>
 <translation id="2878782256107578644">ସ୍କାନ୍ ଚାଲୁଛି, ବର୍ତ୍ତମାନ ଖୋଲିବେ କି?</translation>
 <translation id="288042212351694283">ଆପଣଙ୍କର ୟୁନିଭର୍ସାଲ୍ ଦ୍ଵିତୀୟ ଫ୍ୟାକ୍ଟର୍ ଡିଭାଇସ୍‍ଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରନ୍ତୁ</translation>
 <translation id="2881076733170862447">ଆପଣ ଯେତେବେଳେ ଏକ୍ସଟେନ୍‌ସନ୍‌କୁ କ୍ଲିକ୍ କରିବେ</translation>
@@ -1693,6 +1699,7 @@
 <translation id="3382073616108123819">ଓହୋଃ!  ଏହି ଡିଭାଇସ୍‌ ପାଇଁ ଡିଭାଇସ୍‌ ଚିହ୍ନଟକାରୀ ସ୍ଥିର କରିବାରେ ସିଷ୍ଟମ୍‌ ବିଫଳ ହୋ‍ଇଛି</translation>
 <translation id="3382086682569279540">ଆପଣ ପରିଚାଳନା କରୁଥିବା ଆକାଉଣ୍ଟକୁ ଖୁବ୍‍ଶୀଘ୍ର କାଢ଼ିଦିଆଯିବ।</translation>
 <translation id="3382200254148930874">ନିରୀକ୍ଷଣ ବନ୍ଦ କରାଯାଉଛି...</translation>
+<translation id="3383210070657133526"><ph name="URL" /> ଭର୍ଚୁଆଲ୍ ରିଆଲିଟୀ ସେସନ୍ ଆରମ୍ଭ କରିବା ପାଇଁ ଯୋଗ୍ୟ ହେବାକୁ ଚାହେଁ</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">ବିଭାଜନକାରୀ</translation>
 <translation id="338691029516748599"><ph name="NETWORK_COUNT" />ଟିର <ph name="NETWORK_INDEX" /> ନେଟ୍‌ୱାର୍କ, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, ସିଗ୍‍ନାଲ୍‍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />%, ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ, ସଂଯୋଗ କରନ୍ତୁ</translation>
@@ -2029,6 +2036,7 @@
 <translation id="3819800052061700452">&amp;ପୂର୍ଣ୍ଣସ୍କ୍ରିନ</translation>
 <translation id="3820172043799983114">ଅବୈଧ PIN।</translation>
 <translation id="3820749202859700794">SECG ଅଣ୍ଡାକାର ବକ୍ର secp521r1 (aka NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{ଗୋଟିଏ ଏକ୍ସଟେନସନକୁ ଅନୁମୋଦନ କରାଯାଇଛି}other{#ଟି ଏକ୍ସଟେନସନକୁ ଅନୁମୋଦନ କରାଯାଇଛି}}</translation>
 <translation id="3822559385185038546">ଏହି ପ୍ରୋକ୍ସି ଆପଣଙ୍କର ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି।</translation>
 <translation id="3826440694796503677">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍ ଅଧିକ Google ଆକାଉଣ୍ଟ ଯୋଗ କରିବାକୁ ଅକ୍ଷମ କରିଛନ୍ତି</translation>
 <translation id="3827306204503227641">unsandboxed ପ୍ଲଗ୍‌ଇନ୍ସକୁ ଅନୁମତି ଦେବା ଜାରି ରଖନ୍ତୁ</translation>
@@ -2386,6 +2394,7 @@
 <translation id="4353114845960720315">ଆପଣ VRରେ ଥିବା ସମୟରେ, ଏହି ସାଇଟ୍ ଏ ବିଷୟରେ ଜାଣିପାରିବ:</translation>
 <translation id="4354344420232759511">ଆପଣ ଦେଖିଥିବା ସାଇଟ୍‌ଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ</translation>
 <translation id="435527878592612277">ଆପଣଙ୍କର ଫଟୋ ଚୟନ କରନ୍ତୁ</translation>
+<translation id="4357784477082216550"><ph name="URL" /> କ୍ୟାମେରା ସ୍ଥିତି ଟ୍ରାକ୍ କରିବାକୁ ଏବଂ ଆପଣଙ୍କ ରୁମ୍ ମ୍ୟାପ୍ କରିବାକୁ ଚାହେଁ</translation>
 <translation id="4358313196493694334">କ୍ଲିକ୍ ଲୋକେସନ୍ ସ୍ଥିର କରନ୍ତୁ</translation>
 <translation id="4359408040881008151">ନିର୍ଭରଶୀଳ ଏକ୍ସଟେନ୍‍ସନ୍‌(ଗୁଡ଼ିକ) କାରଣରୁ ଇନ୍‌ଷ୍ଟଲ୍ କରାଯାଇଛି।</translation>
 <translation id="4359717112757026264">ସିଟିସ୍କେପ୍</translation>
@@ -2626,6 +2635,7 @@
 <translation id="4720185134442950733">ମୋବାଇଲ୍ ଡାଟା ନେଟ୍‍ୱାର୍କ</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" />ଙ୍କ ପାଇଁ ପାସ୍‌ୱର୍ଡ</translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> ଆପଣଙ୍କର ସ୍କ୍ରିନ୍ ସେୟାର୍ କରୁଛନ୍ତି।</translation>
+<translation id="4723140812774948886">ପରବର୍ତ୍ତୀ ଆଇଟମ୍ ସହିତ ସ୍ୱାପ୍ କରନ୍ତୁ</translation>
 <translation id="4724450788351008910">ଅନୁବନ୍ଧନ ବଦଳିଗଲା</translation>
 <translation id="4725511304875193254">କୋର୍ଗି</translation>
 <translation id="4726710629007580002">ଏହି ଏକ୍ସଟେନ୍‌ସନ୍‌କୁ ଇନ୍‌ଷ୍ଟଲ୍‌ କରିବାକୁ ଚେଷ୍ଟା କରିବା ସମୟରେ ଚେତାବନୀଗୁଡ଼ିକ ଦେଇଥିଲା:</translation>
@@ -2940,6 +2950,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> ଏକାଧିକ ଫାଇଲ୍ ଡାଉନ୍‌ଲୋଡ୍ କରିବାକୁ ଚାହୁଁଛି</translation>
 <translation id="5192062846343383368">ଆପଣଙ୍କର ନିରୀକ୍ଷଣ ସେଟିଂସ୍ ଦେଖିବାକୁ Family Link ଆପ୍ ଖୋଲନ୍ତୁ</translation>
 <translation id="5193988420012215838">ଆପଣଙ୍କର କ୍ଲିପ୍‌ବୋର୍ଡକୁ କପି କରାଯାଇଛି</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{ଏକ୍ସଟେନସନ୍ ଦେଖିବାକୁ କ୍ଲିକ୍ କରନ୍ତୁ}other{ଏହି ଏକ୍ସଟେନସନଗୁଡ଼ିକୁ ଦେଖିବା ପାଇଁ କ୍ଲିକ୍ କରନ୍ତୁ}}</translation>
 <translation id="5204673965307125349">ଦୟାକରି ଡିଭାଇସ୍‌କୁ ପାୱାର୍‍ୱାସ୍ କରନ୍ତୁ ଏବଂ ପୁଣି ଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="5206215183583316675">"<ph name="CERTIFICATE_NAME" />" ଡିଲିଟ୍‍ କରିବେ କି?</translation>
 <translation id="520621735928254154">ସାର୍ଟିଫିକେଟ୍‍ ଇମ୍ପୋର୍ଟ ତ୍ରୁଟି</translation>
@@ -3022,6 +3033,7 @@
 <translation id="5310281978693206542">ଆପଣଙ୍କର ଡିଭାଇସ୍‌ଗୁଡ଼ିକୁ ଲିଙ୍କ୍ ପଠାନ୍ତୁ</translation>
 <translation id="5311304534597152726">ଏପରି ଭାବରେ ସାଇନ୍‌ ଇନ୍‌ ହେଉଛି</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
+<translation id="5313628438272378649">ଏହି ଅପଲୋଡ୍ ଆପଣଙ୍କ ସଂସ୍ଥାର ସୁରକ୍ଷା ନୀତିଗୁଡ଼ିକର ଉଲ୍ଲଙ୍ଘନ କରୁଛି ଏବଂ ଏହାକୁ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇପାରିବ ନାହିଁ।</translation>
 <translation id="5315738755890845852">ଅତିରିକ୍ତ କୁଟିଳ ବନ୍ଧନୀ: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">ପରିଚୟ</translation>
 <translation id="5317780077021120954">ସଞ୍ଚୟ</translation>
@@ -3077,6 +3089,7 @@
 <translation id="5398772614898833570">ବିଜ୍ଞାପନଗୁଡ଼ିକ ଅବରୋଧ ହୋ‍ଇଛି</translation>
 <translation id="5402815541704507626">ମୋବାଇଲ୍‌ ଡାଟା ବ୍ୟବହାର କରି ଅପ୍‌ଡେଟ୍‌ ଡାଉନ୍‌ଲୋଡ୍‌ କରନ୍ତୁ</translation>
 <translation id="540296380408672091">ସର୍ବଦା <ph name="HOST" />ରେ କୁକୀଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation>
+<translation id="540495485885201800">ପୂର୍ବବର୍ତ୍ତୀ ଆଇଟମ୍ ସହିତ ସ୍ୱାପ୍ କରନ୍ତୁ</translation>
 <translation id="5405146885510277940">ସେଟିଂସ୍ ରିସେଟ୍ କରନ୍ତୁ</translation>
 <translation id="5408750356094797285">ଜୁମ୍ କରନ୍ତୁ: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">ଏହି ହୋଷ୍ଟ ଏବଂ ଡୋମେନ୍‌ଗୁଡ଼ିକ ପାଇଁ ପ୍ରକ୍ସି ସେଟିଂସ୍ ବ୍ୟବହାର କରନ୍ତୁ ନାହିଁ:</translation>
@@ -3114,6 +3127,7 @@
 <translation id="5449588825071916739">ସମସ୍ତ ଟାବ୍‌କୁ ବୁକ୍‌ମାର୍କ କରନ୍ତୁ</translation>
 <translation id="5449716055534515760">Win&amp;dow ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="5454166040603940656"><ph name="PROVIDER" />ଙ୍କ ସହିତ</translation>
+<translation id="5454360575035671759">Plugin VM କାଢ଼ି ଦେବା ଦ୍ୱାରା ଆପଣଙ୍କର VM ଡିଲିଟ୍ ହୋଇଯିବ। ଏଥିରେ ଏହାର ଆପ୍ଲିକେସନଗୁଡ଼ିକ, ସେଟିଂସ୍ ଏବଂ ଡାଟା ଅନ୍ତର୍ଭୁକ୍ତ ରହିବ। ଆପଣ ଜାରି ରଖିବାକୁ ଚାହୁଁଥିବା ନିଶ୍ଚିତ କି?</translation>
 <translation id="5457113250005438886">ଅବୈଧ</translation>
 <translation id="5457459357461771897">ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟର୍‍ରୁ ଫଟୋ, ସଙ୍ଗୀତ ଓ ଅନ୍ୟ ମିଡିଆ ପଢ଼ନ୍ତୁ ଏବଂ ଡିଲିଟ୍ କରନ୍ତୁ</translation>
 <translation id="5457599981699367932">ଅତିଥି ହିସାବରେ ବ୍ରାଉଜ୍ କରନ୍ତୁ</translation>
@@ -3130,6 +3144,7 @@
 <translation id="5470735824776589490">ପାୱର୍‌ୱାସ୍ ସହିତ ଆପଣଙ୍କର ଡିଭାଇସ୍‌କୁ ରିସେଟ୍ କରିବା ପୂର୍ବରୁ ରିଷ୍ଟାର୍ଟ କରିବା ଆବଶ୍ୟକ ଅଟେ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">ଆଜ୍ଞା ନମସ୍କାର! ମୁଁ ଆପଣଙ୍କ ଲେଖାକୁ ସ୍ପୀଚ୍‌ରେ ପରିବର୍ତ୍ତନ କରୁଥିବା ଭଏସ୍‌ ଅଟେ।</translation>
 <translation id="5473333559083690127">ନୂଆ PIN ପୁଣି ଲେଖନ୍ତୁ</translation>
+<translation id="548137908954174608">ଲାଇଭ୍ କ୍ୟାପସନ୍ ସକ୍ଷମ କରନ୍ତୁ</translation>
 <translation id="5481941284378890518">ନିକଟସ୍ଥ ପ୍ରିଣ୍ଟର୍‌ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="5483785310822538350">ଫାଇଲ୍ ଏବଂ ଡିଭାଇସ୍ ଆକ୍‌ସେସ୍‌କୁ ପ୍ରତ୍ୟାହାର କରନ୍ତୁ</translation>
 <translation id="5485080380723335835">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" /> ସୁରକ୍ଷା କାରଣରୁ ଲକ୍‌ କରାଯାଇଛି। ଜାରି ରଖିବାକୁ ମାନୁଆଲ୍‌ ଭାବେ ଆପଣଙ୍କର ପାସ୍‌ୱର୍ଡ ଲେଖନ୍ତୁ।</translation>
@@ -3166,6 +3181,7 @@
 <translation id="5518584115117143805">ଇମେଲ୍ ଏନ୍‌କ୍ରିପ୍‌ସନ୍ ସାର୍ଟିଫିକେଟ୍</translation>
 <translation id="5521078259930077036">ଏହା କ'ଣ ଆପଣ ପ୍ରତ୍ୟାଶିତ କରୁଥିବା ସେହି ମୂଳପୃଷ୍ଠା ଅଟେ?</translation>
 <translation id="5522156646677899028">ଏହି ଏକ୍ସନେଟନ୍‍ସନ୍‌ରେ ଗମ୍ଭୀର ସୁରକ୍ଷା ସମ୍ବେଦନଶୀଳତା ଅଛି।</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ଦ୍ୱାରା ଏକ ଏକ୍ସଟେନସନ ଇନଷ୍ଟଲ କରାଯାଇଛି}other{ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ଦ୍ୱାରା #ଟି ଏକ୍ସଟେନସନ ଇନଷ୍ଟଲ କରାଯାଇଛି}}</translation>
 <translation id="5525677322972469346">ଏକ ନୂତନ ପର୍ଯ୍ୟବେକ୍ଷିତ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରନ୍ତୁ</translation>
 <translation id="5526701598901867718">ସମସ୍ତ (ଅସୁରକ୍ଷିତ)</translation>
 <translation id="5526745900034778153">ପୁଣି ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ ଆଉଥରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation>
@@ -3832,6 +3848,7 @@
 <translation id="6459799433792303855">ସକ୍ରିୟ ଥିବା ୱିଣ୍ଡୋ, ଅନ୍ୟ ଏକ ଡିସ୍‌ପ୍ଲେକୁ ଘୁଞ୍ଚାଯାଇଛି।</translation>
 <translation id="6460601847208524483">ପରବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ</translation>
 <translation id="6461170143930046705">ନେଟ୍‌ୱାର୍କଗୁଡ଼ିକ ସନ୍ଧାନ କରୁଛି...</translation>
+<translation id="6462438303393708881">ଅପଲୋଡ୍ ବାତିଲ୍ କରନ୍ତୁ</translation>
 <translation id="6463795194797719782">&amp;ସମ୍ପାଦନ</translation>
 <translation id="6466988389784393586">&amp;ସମସ୍ତ ବୁକ୍‌ମାର୍କ ଖୋଲନ୍ତୁ</translation>
 <translation id="6467304607960172345">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ ଭିଡିଓଗୁଡ଼ିକୁ ଅପ୍ଟିମାଇଜ୍ କରନ୍ତୁ</translation>
@@ -3880,6 +3897,7 @@
 <translation id="6531282281159901044">ବିପଜ୍ଜନକ ଫାଇଲ୍‌କୁ ରଖନ୍ତୁ</translation>
 <translation id="6532101170117367231">Google ଡ୍ରାଇଭ୍‍‍ରେ ସେଭ୍ କରନ୍ତୁ</translation>
 <translation id="6532106788206463496">ପରିବର୍ତ୍ତନଗୁଡିକୁ ସେଭ୍ କରନ୍ତୁ</translation>
+<translation id="6532663472409656417">ଏଣ୍ଟରପ୍ରାଇଜ୍ ପଞ୍ଜିକରଣ କରାଯାଇଛି</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />ଟିପ୍ପଣୀ:<ph name="END_BOLD" /> ଯଦି ଆପଣ ଜାଣିଛନ୍ତି ଯେ ଆପଣ କ'ଣ କରୁଛନ୍ତି କିମ୍ବା ଆପଣଙ୍କୁ ଏପରି କରିବାକୁ କୁହାଯାଇଛି, କାରଣ ଡାଟାର ସଂଗ୍ରହ କାର୍ଯ୍ୟଦକ୍ଷତାକୁ କମାଇପାରେ।</translation>
 <translation id="6541638731489116978">ଏହି ସାଇଟ୍‍କୁ ଆପଣଙ୍କ ମୋସନ୍ ସେନ୍‌ସର୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
 <translation id="6545665334409411530">ପୁନରାବୃତ୍ତି ଦର</translation>
@@ -4022,6 +4040,7 @@
 <translation id="6758056191028427665">ଆମେ କେଉଁଭଳି କାମ କରୁଛୁ, ତାହା ଆମକୁ ଜଣାନ୍ତୁ।</translation>
 <translation id="6759193508432371551">ଫ୍ୟାକ୍ଟୋରୀ ରିସେଟ୍</translation>
 <translation id="6762833852331690540">ଚାଲୁ ଅଛି</translation>
+<translation id="6767115174726603949">ଭର୍ଚୁଆଲ୍ ରିଆଲିଟୀ ଡିଭାଇସ୍ ଏବଂ ଡାଟାକୁ ଆକ୍ସେସ୍ କରନ୍ତୁ</translation>
 <translation id="6767566652486411142">ଅନ୍ୟ ଏକ ଭାଷା ବାଛନ୍ତୁ...</translation>
 <translation id="6767639283522617719">ଡୋମେନ୍‌ରେ ଯୋଗ ଦେଇପାରିବ ନାହିଁ। ଏହା ସୁନିଶ୍ଚିତ କରନ୍ତୁ, ଯେ ସଂଗଠନାତ୍ମକ ୟୁନିଟ୍ ପାଇଁ ସେଟିଂସ୍‌ଗୁଡ଼ିକ ଠିକ୍‌ ଅଟେ।</translation>
 <translation id="6769712124046837540">ପ୍ରିଣ୍ଟର୍ ଯୋଗ କରାଯାଉଛି...</translation>
@@ -4034,6 +4053,7 @@
 <translation id="677965093459947883">ଅତି ଛୋଟ</translation>
 <translation id="6781284683813954823">ଡୁଡଲ୍ ଲିଙ୍କ</translation>
 <translation id="6781978626986383437">Linuxର ବ୍ୟାକ୍‌ଅପ୍ ବାତିଲ୍ କରାଯାଇଛି</translation>
+<translation id="6785915470941880363">ଓଲଟା ସ୍କ୍ରଲିଂ <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">ପରିବର୍ଦ୍ଧନ</translation>
 <translation id="6787839852456839824">କୀ'ବୋର୍ଡ ସର୍ଟକଟ୍‌ଗୁଡ଼ିକ</translation>
 <translation id="6788210894632713004">ଏକ୍ସଟେନ୍‌ସନ୍ ଖୋଲନ୍ତୁ</translation>
@@ -4140,6 +4160,7 @@
 <translation id="6923132443355966645">ସ୍କ୍ରୋଲ୍ / କ୍ଲିକ୍</translation>
 <translation id="6923633482430812883">ସେୟାର୍ ମାଉଣ୍ଟ କରିବାରେ ତ୍ରୁଟି ହୋଇଛି। ଦୟାକରି ଯାଞ୍ଚ କରନ୍ତୁ ଯେ ଆପଣ ଯେଉଁ ଫାଇଲ୍ ସର୍ଭର୍ ସହ ସଂଯୋଗ କରୁଛନ୍ତି ତାହା SMBv2 କିମ୍ବା ପରବର୍ତ୍ତୀ ସଂସ୍କରଣକୁ ସମର୍ଥନ କରୁଛି।</translation>
 <translation id="6930036377490597025">ଏକ୍ସଟର୍ନଲ୍ ସୁରକ୍ଷା କୀ କିମ୍ବା ବିଲ୍ଟ-ଇନ୍ ସେନ୍ସର୍</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{ଏକ ଏକ୍ସଟେନସନ୍ ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି}other{#ଟି ଏକ୍ସଟେନସନ୍ ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି}}</translation>
 <translation id="6935286146439255109">ଏକ ପେପର୍ ଟ୍ରେ ଉପଲବ୍ଧ ନାହିଁ</translation>
 <translation id="693807610556624488">ଲେଖିବା କାର୍ଯ୍ୟ ବିଶେଷତାର ସର୍ବାଧିକ ଦୈର୍ଘ୍ୟରୁ ଅଧିକ ହୋଇଛି: "<ph name="DEVICE_NAME" />"।</translation>
 <translation id="6938386202199793006">ଆପଣଙ୍କ ପାଖରେ 1ଟି ସେଭ୍ କରାଯାଇଥିବା ପ୍ରିଣ୍ଟର୍ ଅଛି।</translation>
@@ -4228,6 +4249,7 @@
 <translation id="7053983685419859001">ଅବରୋଧ କରନ୍ତୁ</translation>
 <translation id="7055152154916055070">ରିଡାଇରେକ୍ଟକୁ ଅବରୋଧ କରାଯାଇଛି:</translation>
 <translation id="7056526158851679338">ଡିଭାଇସ୍‌ଗୁଡ଼ିକ &amp;ନିରୀକ୍ଷଣ କରନ୍ତୁ</translation>
+<translation id="7057767408836081338">ଆପ୍ ଡାଟା ପାଇବାକୁ ବିଫଳ ହୋଇଛି, ଯେ କୌଣସି ପ୍ରକାରେ ଆପ୍ ଚଲାଇବାକୁ ଚେଷ୍ଟା କରୁଛି...</translation>
 <translation id="7059858479264779982">ସ୍ୱତଃ-ଲଞ୍ଚରେ ସେଟ୍‌ କରାଯାଇଛି</translation>
 <translation id="7059893117020417984">ବ୍ୟକ୍ତିଗତ ଭାବେ ବ୍ରାଉଜ୍‌ କରିବାକୁ, ଡଟ୍‍ ଆଇକନ୍‍ ମେନୁରେ କ୍ଲିକ୍‍ କରି ଏକ ଇନ୍‍କଗ୍ନିଟୋ ୱିଣ୍ଡୋ ଖୋଲନ୍ତୁ</translation>
 <translation id="7062222374113411376">ଡାଟା ପଠାଇବା ଓ ଗ୍ରହଣ କରିବା ସମାପ୍ତ କରିବାକୁ ନିକଟରେ ବନ୍ଦ କରାଯାଇଥିବା ସାଇଟ୍‌ଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ (ସୁପାରିଶ୍ କରାଯାଇଛି)</translation>
@@ -4281,6 +4303,7 @@
 <translation id="7120865473764644444">ସିଙ୍କ୍ ସର୍ଭର୍ ସହ ସଂଯୋଗ କରିପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରାଯାଉଛି…</translation>
 <translation id="7121362699166175603">ଠିକଣା ବାର୍‍‍ରେ ଥିବା ଇତିବୃତ୍ତି ଓ ସ୍ୱତଃପୂରଣଗୁଡ଼ିକୁ ଖାଲି କରେ। ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟର ବାଉଜିଂ ଇତିବୃତ୍ତି <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ରେ ଅନ୍ୟ ଫର୍ମରେ ଥାଇପାରେ।</translation>
 <translation id="7121389946694989825">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟାକୁ ପଠାନ୍ତୁ। ଏହି ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ସ୍ୱଚାଳିତରୂପେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଆପ୍ ଏବଂ ଆପ୍ ବ୍ୟବହାର ଡାଟା Googleକୁ ପଠାଉଛି। ଆପଣଙ୍କ ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ଏହାକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍‌ରେ ସ୍ଥିରତା ତଥା ଅନ୍ୟ ଉନ୍ନତିଗୁଡ଼ିକ ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା Google ଆପ୍ସ ଏବଂ ତାହାର ସହଭାଗୀ, ଯେପରିକି Android ଡେଭଲପର୍‌କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଯଦି ଆପଣଙ୍କର ପିଲା ପାଇଁ ଅତିରିକ୍ତ ୱେବ୍ ଏବଂ ଆପ୍ କାର୍ଯ୍ୟକଳାପ ସେଟିଂସ୍ ଚାଲୁ ସ୍ଥିତିରେ ଥାଏ, ତେବେ ଏହି ଡାଟା ହୁଏତ ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇଯିବ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">ଡେଭଲପର୍ ମୋଡ୍</translation>
 <translation id="7121728544325372695">ସ୍ମାର୍ଟ ଡ୍ୟାଶ୍</translation>
 <translation id="7123360114020465152">ଆଉ ସମର୍ଥିତ ନୁହେଁ</translation>
 <translation id="7127980134843952133">ଡାଉନ୍‍‍ଲୋଡ୍ ଇତିବୃତ୍ତି</translation>
@@ -4444,6 +4467,7 @@
 <translation id="7352651011704765696">କିଛି ଭୁଲ୍ ହୋଇଛି</translation>
 <translation id="735361434055555355">Linux ଇନ୍‌ଷ୍ଟଲ୍ କରାଯାଉଛି...</translation>
 <translation id="7353887511974462734">ପୂର୍ବରୁ ଥିବା ଗୋଷ୍ଠୀରେ ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="7354341762311560488">ଆପଣଙ୍କ କୀ'ବୋର୍ଡ ତଳେ ବାମ-ପାର୍ଶ୍ୱରେ ଥିବା କୀ' ଟିପଚିହ୍ନ ସେନ୍ସର୍ ଅଟେ। ଏହାକୁ ଯେ କୌଣସି ଆଙ୍ଗୁଠିରେ ହାଲୁକା ଭାବେ ସ୍ପର୍ଶ କରନ୍ତୁ।</translation>
 <translation id="735745346212279324">VPN ବିଚ୍ଛିନ୍ନ ହୋଇଛି</translation>
 <translation id="7359588939039777303">ବିଜ୍ଞାପନଗୁଡ଼ିକ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
 <translation id="7360183604634508679">ବୁକ୍‌ମାର୍କ ମେନୁ</translation>
@@ -4744,6 +4768,7 @@
 <translation id="7792388396321542707">ସେୟାର୍ କରିବା ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="779308894558717334">ହାଲୁକା ସବୁଜ</translation>
 <translation id="7793098747275782155">ଗାଢ଼ ନୀଳ</translation>
+<translation id="7797571222998226653">ବନ୍ଦ ଅଛି</translation>
 <translation id="7799299114731150374">ୱାଲପେପର୍ ସଫଳତାର ସହ ସେଟ୍ ହୋଇଛି</translation>
 <translation id="7800518121066352902">ଘଡ଼ିର &amp;ବିପରୀତ ଦିଗରେ ଘୂରାନ୍ତୁ</translation>
 <translation id="780301667611848630">ନାଁ, ଥାଉ</translation>
@@ -4992,7 +5017,6 @@
 <translation id="8101987792947961127">ପରବର୍ତ୍ତୀ ରିବୁଟ୍‌ରେ ପାୱାର୍‍ୱାସ୍ ଆବଶ୍ୟକ</translation>
 <translation id="8102159139658438129">ସଂଯୁକ୍ତ ଥିବା ଆପଣଙ୍କ ଫୋନ୍ ପାଇଁ ବିକଳ୍ପ ଦେଖିବାକୁ <ph name="LINK_BEGIN" />ସେଟିଂସ୍<ph name="LINK_END" />କୁ ଯାଆନ୍ତୁ</translation>
 <translation id="8104696615244072556">ଆପଣଙ୍କର <ph name="IDS_SHORT_PRODUCT_NAME" /> ଡିଭାଇସ୍‌କୁ ପାୱାର୍‍ୱାସ୍ କରନ୍ତୁ ଏବଂ ପୂର୍ବବର୍ତ୍ତୀ ସଂସ୍କରଣକୁ ଫେରନ୍ତୁ।</translation>
-<translation id="8106661353233173262">କିଛି ତ୍ରୁଟି ହୋଇଗଲା। ସ୍କାନ୍ କରାଯାଇଥିବା ଫାଇଲ୍‍ର ସମୟ ସୀମା ସମାପ୍ତ ହୋଇଯାଇଛି।</translation>
 <translation id="8107015733319732394">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />ରେ Google Play Store ଇନ୍‌ଷ୍ଟଲ୍‌ ହେଉଛି। ଏଥିରେ କିଛି ସମୟ ଲାଗିପାରେ।</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{କୌଣସି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ନାହିଁ}=1{1ଟି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ବ୍ଲକ୍ କରାଯାଇଛି}other{#ଟି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ବ୍ଲକ୍ କରାଯାଇଛି}}</translation>
 <translation id="810875025413331850">ନିକଟରେ କୌଣସି ଡିଭାଇସ୍ ମିଳି ନାହିଁ।</translation>
@@ -5076,6 +5100,7 @@
 <translation id="8227119283605456246">ଫାଇଲ୍ ସଂଲଗ୍ନ କରନ୍ତୁ</translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> ପାଇଁ ପାସ୍‌ୱାର୍ଡ ସେଭ୍ କରିବେ?</translation>
 <translation id="8234795456569844941">ଏହି ସମସ୍ୟାର ସମାଧାନ କରିବା ପାଇଁ ଦୟାକରି ଆମ ଇଞ୍ଜିନିୟର୍‌ମାନଙ୍କୁ ସାହାଯ୍ୟ କରନ୍ତୁ। ଆପଣ ପ୍ରୋଫାଇଲ୍ ତ୍ରୁଟି ମେସେଜ୍ ପାଇବାର ଠିକ୍ ପୂର୍ବରୁ କ’ଣ ଘଟିଥିଲା, ଆମକୁ କୁହନ୍ତୁ:</translation>
+<translation id="8236123533334037984">ସୁରକ୍ଷା ଅନୁମୋଦନ ପାଇଁ ଆପଣଙ୍କ ସଂସ୍ଥା ଏହି ଅପଲୋଡକୁ ସ୍କାନ୍ କରୁଛି।</translation>
 <translation id="8236917170563564587">ଏହା ପରିବର୍ତ୍ତେ ଏହି ଟାବ୍ ସେୟାର୍ କରନ୍ତୁ</translation>
 <translation id="8237647586961940482">ଗାଢ଼ ଗୋଲାପି ଓ ଲାଲ</translation>
 <translation id="8241040075392580210">ଛାୟାପ୍ରଦ</translation>
@@ -5532,6 +5557,7 @@
 <translation id="8863753581171631212">ନୂଆ <ph name="APP" />ରେ ଲିଙ୍କ୍‍ ଖୋଲନ୍ତୁ</translation>
 <translation id="8864055848767439877"><ph name="APP_NAME" /> ସହ <ph name="TAB_NAME" /> ସେୟାର୍ କରାଯାଉଛି</translation>
 <translation id="8864458770072227512">ଏହି ଡିଭାଇସ୍‌ରୁ <ph name="EMAIL" /> କାଢ଼ି ଦିଆଯାଇଥିଲା</translation>
+<translation id="8867228703146808825">କ୍ଲିପବୋର୍ଡକୁ ବିଲ୍ଡ ବିବରଣୀଗୁଡ଼ିକ କପି କରନ୍ତୁ</translation>
 <translation id="8868626022555786497">ବ୍ୟବହାରରେ ଅଛି</translation>
 <translation id="8870318296973696995">ମୂଳପୃଷ୍ଠା</translation>
 <translation id="8870413625673593573">ନିକଟରେ ବନ୍ଦ କରାଯାଇଛି</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index e848fd1..e291a190 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -2954,7 +2954,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> ਇੱਕ ਤੋਂ ਵੱਧ ਫ਼ਾਈਲਾਂ ਡਾਊਨਲੋਡ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ</translation>
 <translation id="5192062846343383368">ਆਪਣੀਆਂ ਨਿਗਰਾਨੀ ਸੈਟਿੰਗਾਂ ਦੇਖਣ ਲਈ Family Link ਐਪ ਖੋਲ੍ਹੋ</translation>
 <translation id="5193988420012215838">ਤੁਹਾਡੇ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕੀਤਾ ਗਿਆ</translation>
-<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{ਐਕਸਟੈਂਸ਼ਨ ਦੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ}one{ਐਕਸਟੈਂਸ਼ਨ ਦੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ}other{ਐਕਸਟੈਂਸ਼ਨਾਂ ਦੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ}}</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{ਐਕਸਟੈਂਸ਼ਨ ਦੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ}one{ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ ਦੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ}other{ਇਹਨਾਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ}}</translation>
 <translation id="5204673965307125349">ਕਿਰਪਾ ਕਰਕੇ ਡੀਵਾਈਸ ਪਾਵਰਵਾਸ਼ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="5206215183583316675">ਕੀ "<ph name="CERTIFICATE_NAME" />" ਮਿਟਾਉਣਾ ਹੈ?</translation>
 <translation id="520621735928254154">ਪ੍ਰਮਾਣ-ਪੱਤਰ ਆਯਾਤ ਗੜਬੜ</translation>
@@ -5019,7 +5019,6 @@
 <translation id="8101987792947961127">ਅਗਲੇ ਰੀਬੂਟ 'ਤੇ ਪਾਵਰਵਾਸ਼ ਲੁੜੀਂਦਾ</translation>
 <translation id="8102159139658438129">ਤੁਹਾਡੇ ਕਨੈਕਟ ਕੀਤੇ ਫ਼ੋਨ ਲਈ ਵਿਕਲਪਾਂ ਨੂੰ ਦੇਖਣ ਵਾਸਤੇ <ph name="LINK_BEGIN" />ਸੈਟਿੰਗਾਂ<ph name="LINK_END" /> 'ਤੇ ਜਾਓ</translation>
 <translation id="8104696615244072556">ਆਪਣੇ <ph name="IDS_SHORT_PRODUCT_NAME" /> ਡੀਵਾਈਸ ਨੂੰ ਪਾਵਰਵਾਸ਼ ਕਰੋ ਅਤੇ ਪਿਛਲੇ ਵਰਜਨ 'ਤੇ ਵਾਪਸ ਜਾਓ।</translation>
-<translation id="8106661353233173262">ਕੋਈ ਗੜਬੜ ਹੋਈ। ਸਕੈਨ ਕੀਤੀ ਫ਼ਾਈਲ ਦਾ ਸਮਾਂ ਸਮਾਪਤ ਹੋ ਗਿਆ ਹੈ।</translation>
 <translation id="8107015733319732394">ਤੁਹਾਡੀ <ph name="DEVICE_TYPE" /> 'ਤੇ Google Play ਸਟੋਰ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਇਸ ਵਿੱਚ ਥੋੜ੍ਹੀ ਦੇਰ ਲੱਗ ਸਕਦੀ ਹੈ।</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ਕੋਈ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀ ਨਹੀਂ}=1{1 ਤੀਜੀ-ਧਿਰ ਦੀ ਕੁਕੀ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ}other{# ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ}}</translation>
 <translation id="810875025413331850">ਕੋਈ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸ ਨਹੀਂ ਮਿਲੇ।</translation>
@@ -5103,7 +5102,7 @@
 <translation id="8227119283605456246">ਫ਼ਾਈਲ ਨੱਥੀ ਕਰੋ</translation>
 <translation id="8230134520748321204">ਕੀ <ph name="ORIGIN" /> ਲਈ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?</translation>
 <translation id="8234795456569844941">ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਇੰਜੀਨੀਅਰਾਂ ਨੂੰ ਇਸ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਸਾਨੂੰ ਦੱਸੋ ਕਿ ਤੁਹਾਨੂੰ ਪ੍ਰੋਫਾਈਲ ਗੜਬੜ ਸੁਨੇਹਾ ਮਿਲਣ ਤੋਂ ਠੀਕ ਪਹਿਲਾਂ ਕੀ ਹੋਇਆ ਸੀ:</translation>
-<translation id="8236123533334037984">ਸੁਰੱਖਿਆ ਮਨਜ਼ੂਰੀਆਂ ਲਈ ਤੁਹਾਡੀ ਸੰਸਥਾ ਇਸ ਅੱਪਲੋਡ ਨੂੰ ਸਕੈਨ ਕਰ ਰਹੀ ਹੈ।</translation>
+<translation id="8236123533334037984">ਸੁਰੱਖਿਆ ਮਨਜ਼ੂਰੀ ਲਈ ਤੁਹਾਡੀ ਸੰਸਥਾ ਇਸ ਅੱਪਲੋਡ ਨੂੰ ਸਕੈਨ ਕਰ ਰਹੀ ਹੈ।</translation>
 <translation id="8236917170563564587">ਇਸਦੀ ਬਜਾਏ ਇਹ ਟੈਬ ਸਾਂਝੀ ਕਰੋ</translation>
 <translation id="8237647586961940482">ਗੂੜ੍ਹਾ ਗੁਲਾਬੀ ਅਤੇ ਲਾਲ</translation>
 <translation id="8241040075392580210">ਛਾਇਆਮਈ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 7c29957..a913566 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Przy następnym uruchomieniu trzeba wykonać Powerwash</translation>
 <translation id="8102159139658438129">Otwórz <ph name="LINK_BEGIN" />Ustawienia<ph name="LINK_END" />, by zobaczyć opcje połączenia z telefonem</translation>
 <translation id="8104696615244072556">Wykonaj Powerwash na urządzeniu z <ph name="IDS_SHORT_PRODUCT_NAME" /> i przywróć poprzednią wersję.</translation>
-<translation id="8106661353233173262">Coś poszło nie tak. Przekroczono limit czasu skanowania pliku.</translation>
 <translation id="8107015733319732394">Instaluję Sklep Google Play na urządzeniu <ph name="DEVICE_TYPE" />. Może to potrwać kilka minut.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Brak plików cookie innych firm}=1{Zablokowano 1 plik cookie innej firmy}few{Zablokowano # pliki cookie innych firm}many{Zablokowano # plików cookie innych firm}other{Zablokowano # pliku cookie innych firm}}</translation>
 <translation id="810875025413331850">Nie znaleziono żadnych urządzeń w pobliżu.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index aa5e740..88e8378a 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -5025,7 +5025,6 @@
 <translation id="8101987792947961127">Powerwash obrigatório na próxima reinicialização</translation>
 <translation id="8102159139658438129">Acesse <ph name="LINK_BEGIN" />Configurações<ph name="LINK_END" /> para ver as opções do smartphone conectado</translation>
 <translation id="8104696615244072556">Execute um powerwash no seu dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e volte para a versão anterior.</translation>
-<translation id="8106661353233173262">Algo deu errado. O arquivo verificado expirou.</translation>
 <translation id="8107015733319732394">Instalando a Google Play Store no seu <ph name="DEVICE_TYPE" />. Isso pode demorar alguns minutos.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Sem cookies de terceiros}=1{1 cookie de terceiros foi bloqueado}one{# cookie de terceiros foi bloqueado}other{# cookies de terceiros foram bloqueados}}</translation>
 <translation id="810875025413331850">Nenhum dispositivo próximo encontrado.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 87c7379..2d9cef2 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -4058,7 +4058,7 @@
 <translation id="677965093459947883">Muito pequeno</translation>
 <translation id="6781284683813954823">Link do doodle</translation>
 <translation id="6781978626986383437">Cópia de segurança do Linux cancelada</translation>
-<translation id="6785915470941880363">Deslocamento invertido <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
+<translation id="6785915470941880363">Deslocamento invertido <ph name="LINK_BEGIN" />Saber mais<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">Extensões</translation>
 <translation id="6787839852456839824">Atalhos de teclado</translation>
 <translation id="6788210894632713004">Extensão expandida</translation>
@@ -5024,7 +5024,6 @@
 <translation id="8101987792947961127">Powerwash necessário no próximo reinício</translation>
 <translation id="8102159139658438129">Aceda a <ph name="LINK_BEGIN" />Definições<ph name="LINK_END" /> para ver as opções para o telemóvel associado.</translation>
 <translation id="8104696615244072556">Efetue um Powerwash ao dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e regresse à versão anterior.</translation>
-<translation id="8106661353233173262">Ocorreu um erro. A análise do ficheiro excedeu o tempo limite.</translation>
 <translation id="8107015733319732394">A instalar a Google Play Store no <ph name="DEVICE_TYPE" />… Esta ação pode demorar alguns minutos.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Sem cookies de terceiros}=1{1 cookie de terceiros está bloqueado}other{# cookies de terceiros estão bloqueados}}</translation>
 <translation id="810875025413331850">Não foram encontrados dispositivos nas proximidades.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index a95c6ed..f5b6ac4b 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -651,7 +651,7 @@
 <translation id="1879000426787380528">Conectează-te ca</translation>
 <translation id="1880905663253319515">Șterge certificatul „<ph name="CERTIFICATE_NAME" />”?</translation>
 <translation id="1884013283844450420">Rețeaua <ph name="NETWORK_INDEX" /> din <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, conectează-te</translation>
-<translation id="1884930769492918228">Să urmărească poziția camerei video și să-ți mapeze camera</translation>
+<translation id="1884930769492918228">să urmărească poziția camerei video și să-ți mapeze camera</translation>
 <translation id="1886996562706621347">Permiteți site-urilor să solicite să devină handlere prestabilite pentru protocoale (recomandat)</translation>
 <translation id="1887442540531652736">Eroare de conectare</translation>
 <translation id="1887597546629269384">Rostește din nou „Hei Google"</translation>
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Este necesară lansarea Powerwash la următoarea repornire</translation>
 <translation id="8102159139658438129">Accesează <ph name="LINK_BEGIN" />Setări<ph name="LINK_END" /> ca să vezi opțiunile pentru telefonul conectat</translation>
 <translation id="8104696615244072556">Folosește Powerwash pe dispozitivul <ph name="IDS_SHORT_PRODUCT_NAME" /> și revino la versiunea anterioară.</translation>
-<translation id="8106661353233173262">A apărut o eroare. Fișierul scanat a expirat.</translation>
 <translation id="8107015733319732394">Se instalează Magazinul Google Play pe dispozitivul <ph name="DEVICE_TYPE" />. Ar putea dura câteva minute.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Niciun cookie terță parte}=1{Un cookie terță parte este blocat}few{# cookie-uri terță parte sunt blocate}other{# de cookie-uri terță parte sunt blocate}}</translation>
 <translation id="810875025413331850">Nu a fost găsit niciun dispozitiv în apropiere.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 601e56c..276ed47 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">При следующей перезагрузке устройства необходимо выполнить Powerwash</translation>
 <translation id="8102159139658438129">Чтобы открыть параметры подключенного телефона, перейдите в <ph name="LINK_BEGIN" />Настройки<ph name="LINK_END" />.</translation>
 <translation id="8104696615244072556">Воспользуйтесь функцией Powerwash на устройстве <ph name="IDS_SHORT_PRODUCT_NAME" /> и вернитесь к предыдущей версии.</translation>
-<translation id="8106661353233173262">Произошла ошибка. Превышено время ожидания проверки файла.</translation>
 <translation id="8107015733319732394">Установка Google Play Маркета на устройство <ph name="DEVICE_TYPE" /> (может занять несколько минут)…</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Нет сторонних файлов cookie}=1{Заблокирован 1 сторонний файл cookie}one{Заблокирован # сторонний файл cookie}few{Заблокировано # сторонних файла cookie}many{Заблокировано # сторонних файлов cookie}other{Заблокировано # сторонних файла cookie}}</translation>
 <translation id="810875025413331850">Устройства поблизости не найдены.</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 0bc7eeb2..0804503 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -5018,7 +5018,6 @@
 <translation id="8101987792947961127">ඊළඟ පණගැන්වීමේදී Powerwash අවශ්‍යයි</translation>
 <translation id="8102159139658438129">ඔබේ සම්බන්ධිත දුරකථනය සඳහා විකල්ප බැලීමට <ph name="LINK_BEGIN" />සැකසීම්<ph name="LINK_END" /> වෙත යන්න</translation>
 <translation id="8104696615244072556">ඔබේ <ph name="IDS_SHORT_PRODUCT_NAME" /> උපාංගය Powerwash කර පෙර සංස්කරණයට නැවත යන්න.</translation>
-<translation id="8106661353233173262">යම් දෙයක් වැරදිණි. ස්කෑන් කළ ගොනුව කාලය නිමා වී ඇත.</translation>
 <translation id="8107015733319732394">ඔබේ <ph name="DEVICE_TYPE" /> මත Google Play Store ස්ථාපනය කරමින්. මේ සඳහා විනාඩි කිහිපයක් ගත විය හැකිය.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{තෙවන පාර්ශ්ව කුකී නැත}=1{1 තෙවන පාර්ශ්ව කුකීයක් අවහිර කළා}one{තෙවන පාර්ශ්ව කුකී # ක් අවහිර කළා}other{තෙවන පාර්ශ්ව කුකී # ක් අවහිර කළා}}</translation>
 <translation id="810875025413331850">කිසිඳු උපාංගයක් අවටින් හමු නොවිය.</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 2c7def7..517a4cb 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -734,7 +734,7 @@
 <translation id="2018352199541442911">Je nám ľúto, ale vaše externé pamäťové zariadenie nie je momentálne podporované.</translation>
 <translation id="2019718679933488176">&amp;Otvoriť zvuk na novej karte</translation>
 <translation id="2020183425253392403">Zobraziť nastavenia sieťovej adresy</translation>
-<translation id="2020225359413970060">Skenovať súbor</translation>
+<translation id="2020225359413970060">Skontrolovať súbor</translation>
 <translation id="2022953316617983419">QR kód</translation>
 <translation id="2023167225947895179">PIN sa dá ľahko uhádnuť</translation>
 <translation id="202352106777823113">Sťahovanie trvalo príliš dlho a bolo zastavené sieťou.</translation>
@@ -1371,7 +1371,7 @@
 <translation id="2875698561019555027">(Chybové stránky prehliadača Chrome)</translation>
 <translation id="2876336351874743617">2. prst</translation>
 <translation id="2876369937070532032">Pri ohrození zabezpečenia odosiela Googlu webové adresy niektorých navštívených stránok</translation>
-<translation id="2877030408509021795">Skenovanie je dokončené, všetko je v poriadku.</translation>
+<translation id="2877030408509021795">Kontrola je dokončená, všetko je v poriadku.</translation>
 <translation id="2878782256107578644">Prebieha kontrola, chcete ho otvoriť?</translation>
 <translation id="288042212351694283">Prístup k vašim zariadeniam so štandardom Universal 2nd Factor</translation>
 <translation id="2881076733170862447">Keď kliknete na rozšírenie</translation>
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Pri ďalšom spustení sa bude vyžadovať funkcia Powerwash</translation>
 <translation id="8102159139658438129">Ak si chcete zobraziť možnosti pre pripojený telefón, prejdite do časti <ph name="LINK_BEGIN" />Nastavenia<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Vykonajte obnovenie Powerwash na svojom zariadení <ph name="IDS_SHORT_PRODUCT_NAME" /> a obnovte na ňom predchádzajúcu verziu.</translation>
-<translation id="8106661353233173262">Vyskytol sa problém. Časový limit kontroly súboru vypršal.</translation>
 <translation id="8107015733319732394">Inštaluje sa Obchod Google Play na zariadení <ph name="DEVICE_TYPE" />. Môžete to chvíľu trvať.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Žiadne súbory cookie tretích strán}=1{Je blokovaný 1 súbor cookie tretej strany}few{Sú blokované # súbory cookie tretích strán}many{# third-party cookies are blocked}other{Je blokovaných # súborov cookie tretích strán}}</translation>
 <translation id="810875025413331850">Nenašli sa žiadne zariadenia nablízku.</translation>
@@ -5106,7 +5105,7 @@
 <translation id="8227119283605456246">Pripojiť súbor</translation>
 <translation id="8230134520748321204">Chcete uložiť heslo pre web <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomôžte našim programátorom vyriešiť tento problém. Povedzte nám, čo sa stalo presne predtým, než sa zobrazilo chybové hlásenie profilu:</translation>
-<translation id="8236123533334037984">Vaša organizácia skenuje tento nahraný súbor na bezpečnostné schválenie.</translation>
+<translation id="8236123533334037984">Vaša organizácia kontroluje tento nahraný súbor kvôli bezpečnostnému schváleniu.</translation>
 <translation id="8236917170563564587">Zdieľať radšej túto kartu</translation>
 <translation id="8237647586961940482">Tmavoružová a červená</translation>
 <translation id="8241040075392580210">Polojasný</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index cfea3da..1417d67 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -3095,7 +3095,7 @@
 <translation id="5398772614898833570">Oglasi blokirani</translation>
 <translation id="5402815541704507626">Prenos posodobitve s prenosom podatkov v mobilnem omrežju</translation>
 <translation id="540296380408672091">Vedno blokiraj piškotke na <ph name="HOST" /></translation>
-<translation id="540495485885201800">Zamenj s prejšnjim</translation>
+<translation id="540495485885201800">Zamenjaj s prejšnjim</translation>
 <translation id="5405146885510277940">Ponastavitev nastavitev</translation>
 <translation id="5408750356094797285">Povečava: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">Ne uporabljaj nastavitev proxyja za te gostitelje in domene:</translation>
@@ -5025,7 +5025,6 @@
 <translation id="8101987792947961127">Pri naslednjem zagonu je treba izvesti Powerwash</translation>
 <translation id="8102159139658438129">Odprite <ph name="LINK_BEGIN" />nastavitve<ph name="LINK_END" />, če si želite ogledati možnosti za povezani telefon</translation>
 <translation id="8104696615244072556">V napravi <ph name="IDS_SHORT_PRODUCT_NAME" /> uporabite funkcijo Powerwash in jo povrnite na prejšnjo različico.</translation>
-<translation id="8106661353233173262">Prišlo je do napake. Potekla je časovna omejitev za pregledano datoteko.</translation>
 <translation id="8107015733319732394">Nameščanje Trgovine Google Play v napravi <ph name="DEVICE_TYPE" />. To lahko traja nekaj minut.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ni piškotkov drugih spletnih mest}=1{1 piškotek drugega spletnega mesta je blokiran}one{# piškotek drugih spletnih mest je blokiran}two{# piškotka drugih spletnih mest sta blokirana}few{# piškotki drugih spletnih mest so blokirani}other{# piškotkov drugih spletnih mest je blokiranih}}</translation>
 <translation id="810875025413331850">Ni naprav v bližini.</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index a344111..443e21c0 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -393,6 +393,7 @@
 <translation id="1545177026077493356">Modaliteti automatik "Kioskë"</translation>
 <translation id="1545775234664667895">Tema e instaluar "<ph name="THEME_NAME" />"</translation>
 <translation id="1546280085599573572">Kjo shtesë ka ndryshuar se cila faqe shfaqet kur klikon te butoni "Kreu".</translation>
+<translation id="1549275686094429035">ARC-ja është aktivizuar</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" /> dëshiron të ketë qasje te <ph name="VOLUME_NAME" />. Ai mund të modifikojë ose fshijë skedarët e tu.</translation>
 <translation id="1553538517812678578">e pakufizuar</translation>
 <translation id="1554390798506296774">Lejo gjithmonë përbërësit shtesë të pakufizuar në <ph name="HOST" /></translation>
@@ -647,6 +648,7 @@
 <translation id="1879000426787380528">Identifikohu si</translation>
 <translation id="1880905663253319515">Të fshihet certifikata "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="1884013283844450420">Rrjeti <ph name="NETWORK_INDEX" /> nga <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, lidhu</translation>
+<translation id="1884930769492918228">Monitoro pozicionin e kamerës dhe krijo një hartë të dhomës</translation>
 <translation id="1886996562706621347">Lejo faqet të pyesin dhe të bëhen përpunues të parazgjedhur për protokollet (rekomandohet)</translation>
 <translation id="1887442540531652736">Gabim në identifikim</translation>
 <translation id="1887597546629269384">Thuaj përsëri "Hej Google"</translation>
@@ -729,6 +731,7 @@
 <translation id="2018352199541442911">Na vjen keq, por hapësira e jashtme ruajtëse në pajisjen tënde nuk mbështetet në këtë moment.</translation>
 <translation id="2019718679933488176">&amp;Hape audion në një skedë të re</translation>
 <translation id="2020183425253392403">Shfaq cilësimet e adresës së rrjetit</translation>
+<translation id="2020225359413970060">Skano skedarin</translation>
 <translation id="2022953316617983419">Kodi QR</translation>
 <translation id="2023167225947895179">Kodi PIN mund të jetë i lehtë për t'u gjetur</translation>
 <translation id="202352106777823113">Shkarkimi po vonohej dhe u ndalua nga rrjeti.</translation>
@@ -758,6 +761,7 @@
 <translation id="2059913712424898428">Brezi orar</translation>
 <translation id="2065405795449409761">Chrome po kontrollohet nga një softuer testues i automatizuar.</translation>
 <translation id="2071393345806050157">Nuk ka skedar lokal të regjistrit.</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliko për të instaluar shtesën}other{Kliko për të instaluar këto shtesa}}</translation>
 <translation id="2075474481720804517">Bateria <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="2075959085554270910">Të lejon të aktivizosh/çaktivizosh klikimin me trokitje dhe zvarritjen me trokitje</translation>
 <translation id="2076269580855484719">Fshihe këtë përbërës shtesë</translation>
@@ -853,6 +857,7 @@
 <translation id="219008588003277019">Moduli i klientit origjinal: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(bosh)</translation>
 <translation id="2191223688506386601">Edhe diçka të fundit</translation>
+<translation id="2191754378957563929">Aktiv</translation>
 <translation id="2192505247865591433">Nga:</translation>
 <translation id="2193365732679659387">Cilësimet e besimit</translation>
 <translation id="2195331105963583686">Do të jesh sërish në gjendje ta përdorësh këtë <ph name="DEVICE_TYPE" /> pas kësaj kohe, por pajisja nuk do të marrë më përditësime automatike të softuerëve dhe të sigurisë</translation>
@@ -1364,6 +1369,7 @@
 <translation id="2875698561019555027">(Faqet e gabimit të Chrome)</translation>
 <translation id="2876336351874743617">Gishti 2</translation>
 <translation id="2876369937070532032">Dërgon URL-të e disa faqeve që viziton te Google, kur siguria jote është në rrezik</translation>
+<translation id="2877030408509021795">Skanimi përfundoi. Gjithçka gati për të vazhduar.</translation>
 <translation id="2878782256107578644">Skanimi është në vazhdim, të hapet tani?</translation>
 <translation id="288042212351694283">Qasu në pajisjet e tua të "Universal 2nd Factor"</translation>
 <translation id="2881076733170862447">Kur klikon te shtesa</translation>
@@ -1695,6 +1701,7 @@
 <translation id="3382073616108123819">Mos! Sistemi nuk arriti të përcaktonte identifikuesit e pajisjeve për këtë pajisje.</translation>
 <translation id="3382086682569279540">Llogaria që menaxhon ti do të hiqet së shpejti</translation>
 <translation id="3382200254148930874">Po ndalon mbikëqyrjen...</translation>
+<translation id="3383210070657133526"><ph name="URL" /> dëshiron që të mund të nisë sesione të realitetit virtual</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">Ndarës</translation>
 <translation id="338691029516748599">Rrjeti <ph name="NETWORK_INDEX" /> nga <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, fuqia e sinjalit <ph name="SIGNAL_STRENGTH" />%, menaxhuar nga administratori yt, lidhu</translation>
@@ -2031,6 +2038,7 @@
 <translation id="3819800052061700452">&amp;Ekran i plotë</translation>
 <translation id="3820172043799983114">Kodi PIN i pavlefshëm</translation>
 <translation id="3820749202859700794">Kurba eliptike SECG secp521r1 (e njohur edhe si NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{Një shtesë është miratuar}other{# shtesa janë miratuar}}</translation>
 <translation id="3822559385185038546">Ky përfaqësues zbatohet nga administratori yt</translation>
 <translation id="3826440694796503677">Administratori yt ka çaktivizuar shtimin e "Llogarive të tjera të Google"</translation>
 <translation id="3827306204503227641">Vazhdo lejimin e përbërësve shtesë të pakufizuar</translation>
@@ -2389,6 +2397,7 @@
 <translation id="4353114845960720315">Kur je në VR, ky sajt mund të arrijë të mësojë për:</translation>
 <translation id="4354344420232759511">Sajtet që viziton do të shfaqen këtu</translation>
 <translation id="435527878592612277">Zgjidh foton tënde</translation>
+<translation id="4357784477082216550"><ph name="URL" /> dëshiron të monitorojë pozicionin e kamerës dhe të krijojë një hartë të dhomës</translation>
 <translation id="4358313196493694334">Stabilizo vendndodhjen e klikimit</translation>
 <translation id="4359408040881008151">Instaluar për shkak të shtesës(ave) të varur(a).</translation>
 <translation id="4359717112757026264">Peizazhe qyteti</translation>
@@ -2629,6 +2638,7 @@
 <translation id="4720185134442950733">Rrjeti i të dhënave celulare</translation>
 <translation id="4722735765955348426">Fjalëkalimi për <ph name="USERNAME" /></translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> po ndan ekranin tënd.</translation>
+<translation id="4723140812774948886">Ndërroje me tjetrin</translation>
 <translation id="4724450788351008910">Bashkimi ndryshoi</translation>
 <translation id="4725511304875193254">Korgi</translation>
 <translation id="4726710629007580002">Pati paralajmërime kur u përpoqe ta instaloje këtë shtesë:</translation>
@@ -2943,6 +2953,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> dëshiron të shkarkojë disa skedarë</translation>
 <translation id="5192062846343383368">Hap aplikacionin Family Link për të shikuar cilësimet e mbikëqyrjes</translation>
 <translation id="5193988420012215838">Kopjuar te kujtesa e fragmenteve</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{Kliko për të shikuar shtesën}other{Kliko për të shikuar këto shtesa}}</translation>
 <translation id="5204673965307125349">Kryej powerwash për pajisjen dhe provo përsëri.</translation>
 <translation id="5206215183583316675">Të fshihet "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="520621735928254154">Gabim në importimin e certifikatës</translation>
@@ -3025,6 +3036,7 @@
 <translation id="5310281978693206542">Dërgo lidhjen te pajisjet e tua</translation>
 <translation id="5311304534597152726">Identifikuar si</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> Provo përsëri.</translation>
+<translation id="5313628438272378649">Ky ngarkim shkel politikat e sigurisë së organizatës sate dhe nuk mund të përfundohet.</translation>
 <translation id="5315738755890845852">Kllapë gjarpërushe shtesë: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">Identiteti</translation>
 <translation id="5317780077021120954">Ruaj</translation>
@@ -3080,6 +3092,7 @@
 <translation id="5398772614898833570">Reklamat janë të bllokuara</translation>
 <translation id="5402815541704507626">Shkarko përditësimin duke përdorur të dhënat celulare</translation>
 <translation id="540296380408672091">Blloko gjithmonë kukit në <ph name="HOST" /></translation>
+<translation id="540495485885201800">Ndërro me të mëparshmin</translation>
 <translation id="5405146885510277940">Rivendos cilësimet</translation>
 <translation id="5408750356094797285">Zmadhimi: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">Mos i përdor cilësimet e përfaqësuesit për këta strehues dhe domene:</translation>
@@ -3117,6 +3130,7 @@
 <translation id="5449588825071916739">Shëno të gjitha skedat si referencë</translation>
 <translation id="5449716055534515760">Mbyll dri&amp;taren</translation>
 <translation id="5454166040603940656">me <ph name="PROVIDER" /></translation>
+<translation id="5454360575035671759">Heqja e Plugin VM do ta fshijë pajisjen virtuale. Kjo përfshin aplikacionet, cilësimet dhe të dhënat e saj. Je i sigurt që dëshiron të vazhdosh?</translation>
 <translation id="5457113250005438886">E pavlefshme</translation>
 <translation id="5457459357461771897">Lexo dhe fshi fotografitë, muzikën dhe media të tjera nga kompjuteri</translation>
 <translation id="5457599981699367932">Shfleto si vizitor</translation>
@@ -3133,6 +3147,7 @@
 <translation id="5470735824776589490">Kërkohet një rinisje para se pajisja jote të mund të rivendoset me Powerwash. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">Përshëndetje! Unë jam zëri i tekstit në ligjërim.</translation>
 <translation id="5473333559083690127">Fut përsëri kodin e ri PIN</translation>
+<translation id="548137908954174608">Aktivizo "Titrat në çast"</translation>
 <translation id="5481941284378890518">Shto printerët në afërsi</translation>
 <translation id="5483785310822538350">Revoko qasjen në skedar dhe pajisje</translation>
 <translation id="5485080380723335835">Pajisja jote <ph name="DEVICE_TYPE" /> është kyçur për siguri. Fut manualisht fjalëkalimin për të vazhduar.</translation>
@@ -3169,6 +3184,7 @@
 <translation id="5518584115117143805">Certifikata e enkriptimit të mail-it</translation>
 <translation id="5521078259930077036">A është kjo faqja kryesore që prisje?</translation>
 <translation id="5522156646677899028">Kjo shtesë përmban një dobësi serioze sigurie.</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Një shtesë është instaluar nga administratori yt}other{# shtesa janë instaluar nga administratori yt}}</translation>
 <translation id="5525677322972469346">Krijo një përdorues të ri të kontrolluar</translation>
 <translation id="5526701598901867718">Të gjitha (të pasigurta)</translation>
 <translation id="5526745900034778153">Identifikohu sërish për të rifilluar sinkronizimin</translation>
@@ -3835,6 +3851,7 @@
 <translation id="6459799433792303855">Dritarja aktive u zhvendos në një ekran tjetër.</translation>
 <translation id="6460601847208524483">Gjej tjetrin</translation>
 <translation id="6461170143930046705">Po kërkon për rrjete...</translation>
+<translation id="6462438303393708881">Anulo ngarkimin</translation>
 <translation id="6463795194797719782">&amp;Redakto</translation>
 <translation id="6466988389784393586">&amp;Hapi të gjithë faqeshënuesit</translation>
 <translation id="6467304607960172345">Optimizo videot në ekranin e plotë</translation>
@@ -3882,6 +3899,7 @@
 <translation id="6531282281159901044">Mbaje skedarin e rrezikshëm</translation>
 <translation id="6532101170117367231">Ruaj në "Diskun e Google"</translation>
 <translation id="6532106788206463496">Ruaj ndryshimet</translation>
+<translation id="6532663472409656417">E regjistruar për ndërmarrjen</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Shënim.<ph name="END_BOLD" /> Aktivizoje vetëm nëse e di e çfarë po bën ose nëse të është kërkuar ta bësh këtë, sepse grumbullimi të dhënave mund të ulë rendimentin.</translation>
 <translation id="6541638731489116978">Kjo faqe nuk lejohet të t'i hapë sensorët e lëvizjes.</translation>
 <translation id="6545665334409411530">Shpejtësia e përsëritjes</translation>
@@ -4023,6 +4041,7 @@
 <translation id="6758056191028427665">Na trego se si po ecim.</translation>
 <translation id="6759193508432371551">Rivendosje në gjendje fabrike</translation>
 <translation id="6762833852331690540">Aktiv</translation>
+<translation id="6767115174726603949">Qasu te pajisjet dhe të dhënat e "Realitetit virtual"</translation>
 <translation id="6767566652486411142">Zgjidh një gjuhë tjetër...</translation>
 <translation id="6767639283522617719">Nuk mund t'i bashkohet domenit. Sigurohu që cilësimet të jenë të sakta për njësinë organizative.</translation>
 <translation id="6769712124046837540">Po shton printerin...</translation>
@@ -4035,6 +4054,7 @@
 <translation id="677965093459947883">Shumë të vogla</translation>
 <translation id="6781284683813954823">Lidhja e vizatimit Doodle</translation>
 <translation id="6781978626986383437">Rezervimi i Linux u anulua</translation>
+<translation id="6785915470941880363">Lëvizja në të kundërt <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">Shtesat</translation>
 <translation id="6787839852456839824">Shkurtoret e tastierës</translation>
 <translation id="6788210894632713004">Shtesë e shpaketuar</translation>
@@ -4141,6 +4161,7 @@
 <translation id="6923132443355966645">Lëviz/kliko</translation>
 <translation id="6923633482430812883">Gabim gjatë montimit të ndarjes. Kontrollo që serveri i skedarëve me të cilin po lidhesh mbështet SMBv2 ose një version më të lartë.</translation>
 <translation id="6930036377490597025">Çelësi i jashtëm i sigurisë ose sensori i integruar</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Një shtesë është refuzuar}other{# shtesa janë refuzuar}}</translation>
 <translation id="6935286146439255109">Mungon një tabaka letre</translation>
 <translation id="693807610556624488">Veprimi i shkrimit e kalon gjatësinë maksimale të atributit te: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Ke 1 printer të ruajtur.</translation>
@@ -4229,6 +4250,7 @@
 <translation id="7053983685419859001">Bllokoje</translation>
 <translation id="7055152154916055070">Ridrejtimi u bllokua:</translation>
 <translation id="7056526158851679338">&amp;Inspekto pajisjet</translation>
+<translation id="7057767408836081338">Marrja e të dhënave të aplikacionit dështoi, por po përpiqemi ta ekzekutojmë aplikacionin gjithsesi...</translation>
 <translation id="7059858479264779982">Vendose në hapje automatike</translation>
 <translation id="7059893117020417984">Për të shfletuar në mënyrë private, kliko menynë e ikonës me pika për të hapur një dritare "të fshehtë"</translation>
 <translation id="7062222374113411376">Lejo përfundimin e dërgimit dhe marrjes të të dhënave nga sajtet e mbyllura së fundi (rekomandohet)</translation>
@@ -4282,6 +4304,7 @@
 <translation id="7120865473764644444">Nuk mund të lidhej me serverin e sinkronizimit.</translation>
 <translation id="7121362699166175603">Pastron historikun dhe plotësimet automatike në shiritin e adresës. Llogaria jote e Google mund të ketë forma të tjera të historikut të shfletimit në <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121389946694989825">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Aktualisht kjo pajisje po dërgon automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto nuk do të përdoren për të identifikuar fëmijën tënd dhe do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar për fëmijën tënd, këto të dhëna mund të ruhen në "Llogarinë e Google" të fëmijës. <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">Modaliteti i zhvilluesit</translation>
 <translation id="7121728544325372695">Vizat inteligjente</translation>
 <translation id="7123360114020465152">Nuk mbështetet më</translation>
 <translation id="7127980134843952133">Shkarko historikun</translation>
@@ -4445,6 +4468,7 @@
 <translation id="7352651011704765696">Diçka shkoi keq</translation>
 <translation id="735361434055555355">Po instalohet Linux...</translation>
 <translation id="7353887511974462734">Shto në grup ekzistues</translation>
+<translation id="7354341762311560488">Sensori i gjurmës së gishtit është tasti poshtë majtas në tastierë. Preke lehtë me një gisht.</translation>
 <translation id="735745346212279324">Rrjeti VPN u shkëput</translation>
 <translation id="7359588939039777303">Reklamat janë të bllokuara.</translation>
 <translation id="7360183604634508679">Menyja e faqeshënuesve</translation>
@@ -4744,6 +4768,7 @@
 <translation id="7792388396321542707">Ndalo ndarjen</translation>
 <translation id="779308894558717334">E gjelbër e çelur</translation>
 <translation id="7793098747275782155">Blu e errët</translation>
+<translation id="7797571222998226653">Joaktiv</translation>
 <translation id="7799299114731150374">Imazhi i sfondit u caktua me sukses</translation>
 <translation id="7800518121066352902">Rrotullo në drejtim &amp;të kundërt të akrepave të orës</translation>
 <translation id="780301667611848630">Jo, faleminderit</translation>
@@ -4993,7 +5018,6 @@
 <translation id="8101987792947961127">Kërkohet Powerwash me rindezjen e ardhshme</translation>
 <translation id="8102159139658438129">Shko te <ph name="LINK_BEGIN" />Cilësimet<ph name="LINK_END" /> për të parë opsione për telefonin e lidhur</translation>
 <translation id="8104696615244072556">Kryej Powerwash të pajisjes tënde <ph name="IDS_SHORT_PRODUCT_NAME" /> dhe kthehu te versioni i mëparshëm.</translation>
-<translation id="8106661353233173262">Ndodhi një gabim. Skedarit të skanuar i ka përfunduar afati.</translation>
 <translation id="8107015733319732394">Po instalon Google Play Store në pajisjen tënde <ph name="DEVICE_TYPE" />. Kjo mund të kërkojë disa minuta kohë.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Asnjë kuki e palëve të treta}=1{1 kuki e palëve të treta është bllokuar}other{# kuki të palëve të treta janë bllokuar}}</translation>
 <translation id="810875025413331850">Nuk u gjetën pajisje afër.</translation>
@@ -5078,6 +5102,7 @@
 <translation id="8227119283605456246">Bashkëngjit skedarin</translation>
 <translation id="8230134520748321204">Të ruhet fjalëkalimi për <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ndihmoji inxhinierët tanë ta rregullojnë këtë problem. Na trego se çfarë ndodhi përpara se të merrje mesazhin e gabimit të profilit:</translation>
+<translation id="8236123533334037984">Organizata jote po e skanon këtë ngarkim për miratimin e sigurisë.</translation>
 <translation id="8236917170563564587">Ndaj këtë skedë më mirë</translation>
 <translation id="8237647586961940482">Rozë e errët dhe e kuqe</translation>
 <translation id="8241040075392580210">Në hije</translation>
@@ -5534,6 +5559,7 @@
 <translation id="8863753581171631212">Hape lidhjen në dritaren e re të <ph name="APP" /></translation>
 <translation id="8864055848767439877">Po ndahet <ph name="TAB_NAME" /> te <ph name="APP_NAME" /></translation>
 <translation id="8864458770072227512"><ph name="EMAIL" /> u hoq nga kjo pajisje</translation>
+<translation id="8867228703146808825">Kopjo detajet e ndërtimit në kujtesën e fragmenteve</translation>
 <translation id="8868626022555786497">Në përdorim</translation>
 <translation id="8870318296973696995">Faqja kryesore</translation>
 <translation id="8870413625673593573">Të mbyllura së fundi</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 547efa0..5dd30c1 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -3130,7 +3130,7 @@
 <translation id="5449588825071916739">Обележи све картице</translation>
 <translation id="5449716055534515760">Close Win&amp;dow (Затвори прозор)</translation>
 <translation id="5454166040603940656">са добављачем <ph name="PROVIDER" /></translation>
-<translation id="5454360575035671759">Ако уклоните Plugin VM, избрисаћете VM. То обухвата апликације, подешавања и податке додатне компоненте. Желите ли стварно да наставите?</translation>
+<translation id="5454360575035671759">Ако уклоните Plugin VM, избрисаћете виртуелну машину. То обухвата њене апликације, подешавања и податке. Желите ли стварно да наставите?</translation>
 <translation id="5457113250005438886">Неважеће</translation>
 <translation id="5457459357461771897">Читање слика, музике и других медија са рачунара и брисање тих медија</translation>
 <translation id="5457599981699367932">Прегледајте као гост</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">Powerwash је обавезан при следећем поновном покретању</translation>
 <translation id="8102159139658438129">Идите у <ph name="LINK_BEGIN" />Подешавања<ph name="LINK_END" /> да бисте видели опције за повезани телефон</translation>
 <translation id="8104696615244072556">Обавите Powerwash уређаја <ph name="IDS_SHORT_PRODUCT_NAME" /> и вратите га на претходну верзију.</translation>
-<translation id="8106661353233173262">Нешто није у реду. Скенирана датотека је истекла.</translation>
 <translation id="8107015733319732394">Google Play продавница се инсталира на уређају <ph name="DEVICE_TYPE" />. То може да потраје неколико минута.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Нема колачића треће стране}=1{1 колачић треће стране је блокиран}one{# колачић треће стране је блокиран}few{# колачића треће стране су блокирана}other{# колачића треће стране је блокирано}}</translation>
 <translation id="810875025413331850">Није пронађен ниједан уређај у близини.</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index ab63af44..aa5b1448 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Powerwash krävs vid nästa omstart</translation>
 <translation id="8102159139658438129">Du hittar alternativ för den anslutna mobilen i <ph name="LINK_BEGIN" />inställningarna<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Använd Powerwash på din <ph name="IDS_SHORT_PRODUCT_NAME" />-enhet och återgå till föregående version</translation>
-<translation id="8106661353233173262">Något gick fel. Tidsgränsen för filgenomsökningen överskreds.</translation>
 <translation id="8107015733319732394">Google Play Butik installeras på din <ph name="DEVICE_TYPE" />. Det kan ta några minuter.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Inga cookies från tredje part}=1{1 cookie från tredje part har blockerats}other{# cookies från tredje part har blockerats}}</translation>
 <translation id="810875025413331850">Inga enheter i närheten hittades.</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 9bff6ef..18e20ad 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1369,7 +1369,7 @@
 <translation id="2875698561019555027">(Kurasa za hitilafu kwenye Chrome)</translation>
 <translation id="2876336351874743617">Kidole cha 2</translation>
 <translation id="2876369937070532032">Hutuma kwa Google URL za baadhi ya kurasa ambazo umetembelea wakati usalama wako uko hatarini</translation>
-<translation id="2877030408509021795">Imekamilisha kuchanganua, kila kitu ni shwari</translation>
+<translation id="2877030408509021795">Imekamilisha kuchanganua, kila kitu ni shwari.</translation>
 <translation id="2878782256107578644">Inachanganua, ungependa kufungua sasa?</translation>
 <translation id="288042212351694283">Fikia vifaa vyako vya Ubia wa Hatua mbili</translation>
 <translation id="2881076733170862447">Unapobofya Kiendelezi</translation>
@@ -5020,7 +5020,6 @@
 <translation id="8101987792947961127">Powerwash inahitajika kwenye kuwasha kunakofuata</translation>
 <translation id="8102159139658438129">Nenda kwenye <ph name="LINK_BEGIN" />Mipangilio<ph name="LINK_END" /> ili uone chaguo za simu yako iliyounganishwa</translation>
 <translation id="8104696615244072556">Tumia Powerwash kwenye kifaa <ph name="IDS_SHORT_PRODUCT_NAME" /> chako na urejee kwenye toleo la awali.</translation>
-<translation id="8106661353233173262">Hitilafu fulani imetokea. Muda wa kuchanganua faili umeisha.</translation>
 <translation id="8107015733319732394">Inasakinisha duka la Google Play kwenye <ph name="DEVICE_TYPE" />. Huenda hatua hii ikachukua dakika chache.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Hakuna vidakuzi vya mtu au kampuni nyingine}=1{Imezuia kidakuzi kimoja cha mtu au kampuni nyingine}other{Imezuia vidakuzi # vya mtu na kampuni nyingine}}</translation>
 <translation id="810875025413331850">Haikupata vifaa vyovyote vilivyo karibu.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index dc33ba73..1fc6f84 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1581,7 +1581,7 @@
 <translation id="3192947282887913208">ஆடியோ கோப்புகள்</translation>
 <translation id="3194737229810486521">உங்கள் சாதனத்தில், தரவை நிரந்தரமாகச் சேமிக்க <ph name="URL" /> விரும்புகிறது</translation>
 <translation id="3199127022143353223">சேவைகங்கள்</translation>
-<translation id="3201306578844503970">நெட்வொர்க் பிழை காரணமாக விர்ச்சுவல் மெஷினை நிறுவ முடியவில்லை. மீண்டும் முயலவும் அல்லது உங்கள் நிறுவனத்தின் சாதன நிர்வாகியைத் தொடர்பு கொள்ளவும். பிழைக் குறியீடு: <ph name="ERROR_CODE" />.</translation>
+<translation id="3201306578844503970">நெட்வொர்க் பிழையால் விர்ச்சுவல் மெஷினை நிறுவ முடியவில்லை. மீண்டும் முயலவும் அல்லது உங்கள் நிறுவனத்தின் சாதன நிர்வாகியைத் தொடர்பு கொள்ளவும். பிழைக் குறியீடு: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">கிடைக்கக்கூடிய USB சாதனங்கள் இங்குத் தோன்றும்.</translation>
 <translation id="3202131003361292969">தடம்</translation>
 <translation id="3202173864863109533">இந்தத் தாவலின் ஆடியோ முடக்கப்படுகிறது.</translation>
@@ -4999,7 +4999,6 @@
 <translation id="8101987792947961127">அடுத்த மறுதொடக்கத்திற்கு பவர்வாஷ் தேவைப்படுகிறது</translation>
 <translation id="8102159139658438129">இணைக்கப்பட்ட உங்கள் ஃபோனுக்கான விருப்பத்தேர்வுகளைப் பார்க்க, <ph name="LINK_BEGIN" />அமைப்புகளுக்குச்<ph name="LINK_END" /> செல்லவும்</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> சாதனத்தை பவர்வாஷ் செய்து, முந்தைய பதிப்பிற்கு மாறவும்.</translation>
-<translation id="8106661353233173262">ஏதோ தவறாகிவிட்டது. ஸ்கேன் செய்யப்பட்ட கோப்பின் நேரம் முடிந்துவிட்டது.</translation>
 <translation id="8107015733319732394">உங்கள் <ph name="DEVICE_TYPE" /> இல் Google Play ஸ்டோரை நிறுவுகிறது. இதற்குச் சில நிமிடங்கள் ஆகலாம்.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{மூன்றாம் தரப்பின் குக்கீகள் எதுவும் இல்லை}=1{1 மூன்றாம் தரப்பின் குக்கீ தடுக்கப்பட்டுள்ளது}other{# மூன்றாம் தரப்பின் குக்கீகள் தடுக்கப்பட்டுள்ளன}}</translation>
 <translation id="810875025413331850">அருகில் சாதனங்கள் இல்லை.</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 433d42724..6b7c0e1 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -650,7 +650,7 @@
 <translation id="1879000426787380528">ఇలా సైన్ ఇన్ చేయండి</translation>
 <translation id="1880905663253319515">ప్రమాణపత్రం "<ph name="CERTIFICATE_NAME" />"ను తొలగించాలా?</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" />లో <ph name="NETWORK_INDEX" />, <ph name="NETWORK_NAME" />, కనెక్ట్ చేయండి</translation>
-<translation id="1884930769492918228">కెమెరా స్థితిని ట్రాక్ చేసి, మీ గదిని మ్యాప్ చేయండి</translation>
+<translation id="1884930769492918228">కెమెరాను ట్రాక్ చేసి, మీ గది పరిసరాలను మ్యాపింగ్ చేయండి</translation>
 <translation id="1886996562706621347">ప్రోటోకాల్స్‌కు డిఫాల్ట్ హ్యాండ్లర్‌లుగా కావడం కోసం అడగటానికి సైట్‌లను అనుమతించండి (సిఫార్సు చేయబడింది)</translation>
 <translation id="1887442540531652736">సైన్ ఇన్ ఎర్రర్</translation>
 <translation id="1887597546629269384">మళ్లీ ఒక్కసారి "Hey Google" అని చెప్పండి</translation>
@@ -2399,7 +2399,7 @@
 <translation id="4353114845960720315">మీరు VRలో ఉన్నప్పుడు, ఈ సైట్ కింది వాటిని గురించి తెలుసుకునే అవకాశం ఉంది:</translation>
 <translation id="4354344420232759511">మీరు సందర్శించే సైట్‌లు ఇక్కడ చూపబడతాయి</translation>
 <translation id="435527878592612277">మీ ఫోటోని ఎంచుకోండి</translation>
-<translation id="4357784477082216550"><ph name="URL" /> మీ కెమెరా స్థితిని ట్రాక్ చేసి, మీ గదిని మ్యాప్ చేయాలనుకుంటోంది</translation>
+<translation id="4357784477082216550"><ph name="URL" /> మీ కెమెరాను ట్రాక్ చేసి, మీ గది పరిసరాలను మ్యాపింగ్ చేయండి</translation>
 <translation id="4358313196493694334">క్లిక్ స్థానాన్ని స్థిరీకరిస్తుంది</translation>
 <translation id="4359408040881008151">ఆధారిత పొడిగింపు(లు) కారణంగా ఇన్‌స్టాల్ చేయబడింది.</translation>
 <translation id="4359717112757026264">నగర చిత్రాలు</translation>
@@ -4470,7 +4470,7 @@
 <translation id="7352651011704765696">ఏదో తప్పు జరిగింది</translation>
 <translation id="735361434055555355">Linuxను ఇన్‌స్టాల్ చేస్తోంది...</translation>
 <translation id="7353887511974462734">ఇప్పటికే ఉన్న గుంపునకు జోడించు</translation>
-<translation id="7354341762311560488">మీ కీబోర్డ్‌లో దిగువన ఎడమ వైపు కీ కింది భాగంలో వేలిముద్ర సెన్సార్ ఉంది. ఏదైనా వేలితో దానిపై మెల్లగా తాకండి.</translation>
+<translation id="7354341762311560488">మీ కీబోర్డ్‌లో దిగువున ఎడమ వైపు కీ కింది భాగంలో వేలిముద్ర సెన్సార్ ఉంది. ఏదైనా వేలితో దానిపై మెల్లగా తాకండి.</translation>
 <translation id="735745346212279324">VPN డిస్‌కనెక్ట్ చేయబడింది</translation>
 <translation id="7359588939039777303">ప్రకటనలు బ్లాక్ చేయబడ్డాయి.</translation>
 <translation id="7360183604634508679">బుక్‌మార్క్‌ల మెను</translation>
@@ -5018,7 +5018,6 @@
 <translation id="8101987792947961127">తరువాత రీబూట్‌లో పవర్‌వాష్ అవసరం</translation>
 <translation id="8102159139658438129">మీ కనెక్ట్ చేయబడిన ఫోన్ యొక్క ఎంపికలను చూడటం కోసం <ph name="LINK_BEGIN" />సెట్టింగ్‌లు<ph name="LINK_END" />లోకి వెళ్లండి</translation>
 <translation id="8104696615244072556">మీ <ph name="IDS_SHORT_PRODUCT_NAME" /> పరికరాన్ని పవర్‌వాష్ చేసి, మునుపటి వెర్షన్‌కు తిరిగి మార్చండి.</translation>
-<translation id="8106661353233173262">ఏదో తప్పు జరిగింది. స్కాన్ చేసిన ఫైల్ సమయం ముగిసింది.</translation>
 <translation id="8107015733319732394">మీ <ph name="DEVICE_TYPE" />లో Google Play స్టోర్‌ని ఇన్‌స్టాల్ చేస్తోంది. ఇందుకు కొన్ని నిమిషాలు పట్టవచ్చు.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{మూడవ పక్షం కుక్కీలు లేవు}=1{మూడవ పక్షానికి సంబంధించిన 1 కుక్కీ బ్లాక్ చేయబడింది}other{మూడవ పక్షానికి సంబంధించిన # కుక్కీలు బ్లాక్ చేయబడ్డాయి}}</translation>
 <translation id="810875025413331850">సమీప పరికరాలు ఏవీ కనుగొనబడలేదు.</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 0dd81f3..7ea0e6a 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">ต้องใช้ Powerwash ในการรีบูตครั้งถัดไป</translation>
 <translation id="8102159139658438129">ไปที่<ph name="LINK_BEGIN" />การตั้งค่า<ph name="LINK_END" />เพื่อดูตัวเลือกสำหรับโทรศัพท์ที่เชื่อมต่อ</translation>
 <translation id="8104696615244072556">Powerwash อุปกรณ์ <ph name="IDS_SHORT_PRODUCT_NAME" /> ของคุณและเปลี่ยนกลับไปใช้เวอร์ชันก่อนหน้า</translation>
-<translation id="8106661353233173262">เกิดข้อผิดพลาด ไฟล์ที่สแกนหมดเวลาแล้ว</translation>
 <translation id="8107015733319732394">กำลังติดตั้ง Google Play Store ใน <ph name="DEVICE_TYPE" /> อาจใช้เวลาสักครู่</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ไม่มีคุกกี้ของบุคคลที่สาม}=1{บล็อกคุกกี้ของบุคคลที่สามไว้ 1 รายการ}other{บล็อกคุกกี้ของบุคคลที่สามไว้ # รายการ}}</translation>
 <translation id="810875025413331850">ไม่พบอุปกรณ์ที่อยู่ใกล้เคียง</translation>
@@ -5108,7 +5107,7 @@
 <translation id="8227119283605456246">แนบไฟล์</translation>
 <translation id="8230134520748321204">บันทึกรหัสผ่านสำหรับ <ph name="ORIGIN" /> ไหม</translation>
 <translation id="8234795456569844941">โปรดช่วยวิศวกรของเราแก้ปัญหานี้ แจ้งให้เราทราบถึงสิ่งที่เกิดขึ้นก่อนที่คุณจะได้รับข้อความแสดงข้อผิดพลาดของโปรไฟล์</translation>
-<translation id="8236123533334037984">องค์กรของคุณกำลังสแกนการอัปโหลดนี้เพื่อการอนุมัติด้านความปลอดภัย</translation>
+<translation id="8236123533334037984">องค์กรของคุณกำลังสแกนข้อมูลที่อัปโหลดนี้เพื่อการอนุมัติด้านความปลอดภัย</translation>
 <translation id="8236917170563564587">แชร์แท็บนี้แทน</translation>
 <translation id="8237647586961940482">สีชมพูเข้มและสีแดง</translation>
 <translation id="8241040075392580210">เชดดี้</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 8198307..0a7d768 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Gelecek yeniden başlatmada Powerwash gerekli</translation>
 <translation id="8102159139658438129">Bağlı telefonunuzla ilgili seçenekleri görmek için <ph name="LINK_BEGIN" />Ayarlar<ph name="LINK_END" />'a gidin</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> cihazınızda Powerwash işlemi yapabilir ve bir önceki sürüme geri dönebilirsiniz.</translation>
-<translation id="8106661353233173262">Bir sorun oldu. Taranan dosya zaman aşımına uğradı.</translation>
 <translation id="8107015733319732394">Google Play Store <ph name="DEVICE_TYPE" /> cihazınıza yükleniyor. Bu işlem birkaç dakika sürebilir.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Üçüncü taraf çerez yok}=1{1 üçüncü taraf çerez engellendi}other{# üçüncü taraf çerez engellendi}}</translation>
 <translation id="810875025413331850">Yakında olan cihaz bulunamadı.</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 5708f9a4..9bc47ce6 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -5023,7 +5023,6 @@
 <translation id="8101987792947961127">Під час наступного перезавантаження потрібно виконати Powerwash</translation>
 <translation id="8102159139658438129">Перейдіть у <ph name="LINK_BEGIN" />Налаштування<ph name="LINK_END" />, щоб переглянути параметри для підключеного телефона</translation>
 <translation id="8104696615244072556">Виконати Powerwash на вашому пристрої <ph name="IDS_SHORT_PRODUCT_NAME" /> і повернутися до попередньої версії.</translation>
-<translation id="8106661353233173262">Сталася помилка. Час очікування для зісканованого файлу минув.</translation>
 <translation id="8107015733319732394">Встановлення додатка Google Play Store на ваш <ph name="DEVICE_TYPE" />. Це може зайняти кілька хвилин.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Немає файлів cookie третіх сторін}=1{Заблоковано 1 файл cookie третіх сторін}one{Заблоковано # файл cookie третіх сторін}few{Заблоковано # файли cookie третіх сторін}many{Заблоковано # файлів cookie третіх сторін}other{Заблоковано # файлу cookie третіх сторін}}</translation>
 <translation id="810875025413331850">Пристроїв поблизу не знайдено.</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index f5654bd03..2cacb8a 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -652,7 +652,7 @@
 <translation id="1879000426787380528">سائن ان کریں بطور</translation>
 <translation id="1880905663253319515">سرٹیفکیٹ "<ph name="CERTIFICATE_NAME" />" حذف کریں؟</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" /> میں سے نیٹ ورک <ph name="NETWORK_INDEX" />، <ph name="NETWORK_NAME" />، منسلک کریں</translation>
-<translation id="1884930769492918228">کیمرا کی پوزیشن ٹریک کریں اور اپنے کمرہ کی پیمائش کریں</translation>
+<translation id="1884930769492918228">کیمرا کی پوزیشن ٹریک کرنا اور آپ کے کمرے کی پیمائش کرنا</translation>
 <translation id="1886996562706621347">سائٹس کو پروٹوکولز کیلئے ڈیفالٹ ہینڈلرز بننے کی درخواست کرنے کی اجازت دیں (تجویز کردہ)</translation>
 <translation id="1887442540531652736">سائن ان کی خرابی</translation>
 <translation id="1887597546629269384">‏دوبارہ "Ok Google" بولیں</translation>
@@ -2642,7 +2642,7 @@
 <translation id="4720185134442950733">موبائل ڈیٹا نیٹ ورک</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" /> کے لیے پاس ورڈ</translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> آپ کی اسکرین کا اشتراک کر رہی ہے۔</translation>
-<translation id="4723140812774948886">اگلے کے ساتھ سوائپ کریں</translation>
+<translation id="4723140812774948886">اگلے کے ساتھ تبدیل کریں</translation>
 <translation id="4724450788351008910">الحاق تبدیل کر دیا گیا</translation>
 <translation id="4725511304875193254">کورگی</translation>
 <translation id="4726710629007580002">اس ایکسٹینشن کو انسٹال کرتے وقت وارننگز موصول ہوئیں:</translation>
@@ -3096,7 +3096,7 @@
 <translation id="5398772614898833570">اشتہارات مسدود ہیں</translation>
 <translation id="5402815541704507626">موبائل ڈیٹا استعمال کرتے ہوۓ اپڈیٹ ڈاؤن لوڈ کریں</translation>
 <translation id="540296380408672091"><ph name="HOST" /> پر کوکیز کو ہمیشہ مسدود کریں</translation>
-<translation id="540495485885201800">پچھلے کے ساتھ سوائپ کریں</translation>
+<translation id="540495485885201800">پچھلے کے ساتھ تبدیل کریں</translation>
 <translation id="5405146885510277940">ترتیبات ری سیٹ کریں</translation>
 <translation id="5408750356094797285">زوم: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">ان میزبانوں اور ڈومینز کیلئے پراکسی ترتیبات استعمال نہ کریں:</translation>
@@ -3188,7 +3188,7 @@
 <translation id="5518584115117143805">ای میل مرموز کاری سرٹیفیکیٹ</translation>
 <translation id="5521078259930077036">کیا یہی وہ ہوم صفحہ ہے جس کی آپ توقع کر رہے تھے؟</translation>
 <translation id="5522156646677899028">اس ایکسٹینشن میں ایک سنگین سیکیورٹی خطرہ شامل ہے۔</translation>
-<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{آپ کے منتظم کے ذریعے ایک ایکسٹینشن انسٹال کر دی گئی ہے}other{# ایکسٹینشنز انسٹال کر دی گئی ہیں}}</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{آپ کے منتظم نے ایک ایکسٹینشن انسٹال کر دی ہے}other{# ایکسٹینشنز انسٹال کر دی گئی ہیں}}</translation>
 <translation id="5525677322972469346">ایک نیا تحفظ یافتہ صارف تخلیق کریں</translation>
 <translation id="5526701598901867718">تمام (غیر محفوظ)</translation>
 <translation id="5526745900034778153">مطابقت پذیری دوبارہ شروع کرنے کیلئے دوبارہ سائن ان کریں</translation>
@@ -4045,7 +4045,7 @@
 <translation id="6758056191028427665">ہماری کارکردگی کے بارے میں ہمیں بتائیں۔</translation>
 <translation id="6759193508432371551">فیکٹری ری سیٹ</translation>
 <translation id="6762833852331690540">آن</translation>
-<translation id="6767115174726603949">ورچوئل رئیلٹی آلات اور ڈیٹا تک رسائی حاصل کریں</translation>
+<translation id="6767115174726603949">ورچوئل رئیلٹی آلات اور ڈیٹا تک رسائی حاصل کرنا</translation>
 <translation id="6767566652486411142">کسی دوسری زبان کا انتخاب کریں...</translation>
 <translation id="6767639283522617719">ڈومین میں شامل نہیں کیا جا سکا۔ یقینی بنائیں کہ ترتیبات تنظیمی یونٹ کے لیے درست ہیں۔</translation>
 <translation id="6769712124046837540">پرنٹر کو شامل کیا جا رہا ہے…</translation>
@@ -5024,7 +5024,6 @@
 <translation id="8101987792947961127">اگلے ریبوٹ پر پاور واش درکار ہوگا</translation>
 <translation id="8102159139658438129">اپنے منسلک کردہ فون کے اختیارات دیکھنے کیلئے <ph name="LINK_BEGIN" />ترتیبات<ph name="LINK_END" /> پر جائیں</translation>
 <translation id="8104696615244072556">‏اپنا <ph name="IDS_SHORT_PRODUCT_NAME" /> آلہ Powerwash کریں اور پچھلے ورژن پر جائیں۔</translation>
-<translation id="8106661353233173262">کچھ غلط ہو گیا۔ اسکین کردہ فائل کا وقت ختم ہو گیا۔</translation>
 <translation id="8107015733319732394">‏آپ کے <ph name="DEVICE_TYPE" /> پر Google Play اسٹور انسٹال کیا جا رہا ہے۔ اس میں کچھ منٹ کا وقت لگ سکتا ہے۔</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{کوئی فریق ثالث کوکی نہیں ہے}=1{1 فریق ثالث کوکی مسدود ہے}other{# فریق ثالث کوکیز مسدود ہیں}}</translation>
 <translation id="810875025413331850">کوئی قریبی آلہ نہیں ملا۔</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 6783ef4..7b66ebb2 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -5019,7 +5019,6 @@
 <translation id="8101987792947961127">Qurilmani keyingi marta qayta ishga tushirishda Powerwash amali bajarilishi kerak</translation>
 <translation id="8102159139658438129">Ulangan telefon parametrlari bilan <ph name="LINK_BEGIN" />Sozlamalar<ph name="LINK_END" /> orqali tanishing</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> qurilmasida “Powerwash” funksiyasidan foydalanish va avvalgi versiyasiga qaytish.</translation>
-<translation id="8106661353233173262">Xatolik yuz berdi. Fayl tekshiruvi uchun ajratilgan vaqt tugadi.</translation>
 <translation id="8107015733319732394">Google Market <ph name="DEVICE_TYPE" /> qurilmangizga o‘rnatilmoqda. Bu bir necha daqiqa oladi.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Tashqi cookie fayllar yoʻq}=1{1 ta tashqi cookie fayl bloklandi}other{# ta tashqi cookie fayl bloklandi}}</translation>
 <translation id="810875025413331850">Yaqin-atrofda hech qanday qurilma topilmadi.</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 830b7a42..556c1d5 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -396,6 +396,7 @@
 <translation id="1545177026077493356">Chế độ kiosk tự động</translation>
 <translation id="1545775234664667895">Đã cài đặt chủ đề "<ph name="THEME_NAME" />"</translation>
 <translation id="1546280085599573572">Tiện ích này đã thay đổi trang nào sẽ hiển thị khi bạn nhấp vào nút Trang chủ.</translation>
+<translation id="1549275686094429035">Đã bật ARC</translation>
 <translation id="1549788673239553762"><ph name="APP_NAME" /> muốn truy cập <ph name="VOLUME_NAME" />. Ứng dụng này có thể sửa đổi hoặc xóa các tệp của bạn.</translation>
 <translation id="1553538517812678578">không giới hạn</translation>
 <translation id="1554390798506296774">Luôn cho phép các plugin không có hộp cát trên <ph name="HOST" /></translation>
@@ -650,6 +651,7 @@
 <translation id="1879000426787380528">Đăng nhập bằng</translation>
 <translation id="1880905663253319515">Xóa chứng chỉ "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="1884013283844450420">Mạng <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Kết nối</translation>
+<translation id="1884930769492918228">Theo dõi vị trí camera và vẽ bản đồ phòng bạn</translation>
 <translation id="1886996562706621347">Cho phép các trang web yêu cầu trở thành trình xử lý mặc định cho giao thức (nên chọn)</translation>
 <translation id="1887442540531652736">Lỗi đăng nhập</translation>
 <translation id="1887597546629269384">Nói lại "Ok Google"</translation>
@@ -732,6 +734,7 @@
 <translation id="2018352199541442911">Rất tiếc, thiết bị lưu trữ bên ngoài của bạn không được hỗ trợ vào thời điểm này.</translation>
 <translation id="2019718679933488176">&amp;Mở Âm thanh trong Tab Mới</translation>
 <translation id="2020183425253392403">Hiển thị cài đặt địa chỉ mạng</translation>
+<translation id="2020225359413970060">Quét tệp</translation>
 <translation id="2022953316617983419">Mã QR</translation>
 <translation id="2023167225947895179">Mã PIN có thể dễ đoán</translation>
 <translation id="202352106777823113">Quá trình tải xuống mất quá nhiều thời gian và đã bị ngừng bởi mạng.</translation>
@@ -761,6 +764,7 @@
 <translation id="2059913712424898428">Múi giờ</translation>
 <translation id="2065405795449409761">Chrome đang được phần mềm kiểm tra tự động kiểm soát.</translation>
 <translation id="2071393345806050157">Không có tệp nhật ký cục bộ.</translation>
+<translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Nhấp để cài đặt tiện ích này}other{Nhấp để cài đặt các tiện ích này}}</translation>
 <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% pin</translation>
 <translation id="2075959085554270910">Cho phép bạn bật/tắt tính năng chạm để nhấp và kéo nhấn</translation>
 <translation id="2076269580855484719">Ẩn plugin này</translation>
@@ -856,6 +860,7 @@
 <translation id="219008588003277019">Mô-đun Ứng dụng khách Gốc: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(trống)</translation>
 <translation id="2191223688506386601">Một điều cuối cùng</translation>
+<translation id="2191754378957563929">Đang bật</translation>
 <translation id="2192505247865591433">Từ:</translation>
 <translation id="2193365732679659387">Cài đặt tin cậy</translation>
 <translation id="2195331105963583686">Bạn vẫn có thể sử dụng <ph name="DEVICE_TYPE" /> này sau thời gian đó, nhưng thiết bị sẽ không nhận được các bản cập nhật bảo mật và phần mềm tự động nữa</translation>
@@ -1367,6 +1372,7 @@
 <translation id="2875698561019555027">(Các trang lỗi của Chrome)</translation>
 <translation id="2876336351874743617">Ngón tay số 2</translation>
 <translation id="2876369937070532032">Gửi URL của một số trang mà bạn truy cập cho Google khi bạn gặp rủi ro về bảo mật</translation>
+<translation id="2877030408509021795">Đã quét xong! Mọi thứ đều ổn.</translation>
 <translation id="2878782256107578644">Hệ thống đang quét, bạn muốn mở ngay?</translation>
 <translation id="288042212351694283">Truy cập thiết bị Universal 2nd Factor</translation>
 <translation id="2881076733170862447">Khi bạn nhấp vào tiện ích</translation>
@@ -1698,6 +1704,7 @@
 <translation id="3382073616108123819">Rất tiếc! Hệ thống không thể xác định số nhận dạng thiết bị cho thiết bị này.</translation>
 <translation id="3382086682569279540">Tài khoản bạn quản lý sẽ sớm bị xóa</translation>
 <translation id="3382200254148930874">Ngừng tính năng giám sát...</translation>
+<translation id="3383210070657133526"><ph name="URL" /> muốn có khả năng bắt đầu phiên thực tế ảo</translation>
 <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation>
 <translation id="338583716107319301">Dấu phân tách</translation>
 <translation id="338691029516748599">Mạng <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, Cường độ tín hiệu <ph name="SIGNAL_STRENGTH" />%, Do quản trị viên của bạn quản lý, Kết nối</translation>
@@ -2034,6 +2041,7 @@
 <translation id="3819800052061700452">&amp;Toàn màn hình</translation>
 <translation id="3820172043799983114">Mã PIN không hợp lệ.</translation>
 <translation id="3820749202859700794">Đường cong elip SECG secp521r1 (aka NIST P-521)</translation>
+<translation id="3821372858277557370">{NUM_EXTENSIONS,plural, =1{1 tiện ích đã được phê duyệt}other{# tiện ích đã được phê duyệt}}</translation>
 <translation id="3822559385185038546">Proxy này được quản trị viên của bạn thực thi</translation>
 <translation id="3826440694796503677">Quản trị viên đã tắt tính năng thêm Tài khoản Google khác</translation>
 <translation id="3827306204503227641">Tiếp tục cho phép plugin không có hộp cát</translation>
@@ -2392,6 +2400,7 @@
 <translation id="4353114845960720315">Khi bạn ở chế độ thực tế ảo, trang web này có thể biết được:</translation>
 <translation id="4354344420232759511">Các trang web bạn truy cập sẽ xuất hiện ở đây</translation>
 <translation id="435527878592612277">Chọn ảnh của bạn</translation>
+<translation id="4357784477082216550"><ph name="URL" /> muốn theo dõi vị trí camera và vẽ bản đồ phòng bạn</translation>
 <translation id="4358313196493694334">Ổn định vị trí nhấp</translation>
 <translation id="4359408040881008151">Đã được cài đặt vì (các) tiện ích phụ thuộc.</translation>
 <translation id="4359717112757026264">Cảnh quan thành phố</translation>
@@ -2632,6 +2641,7 @@
 <translation id="4720185134442950733">Mạng dữ liệu di động</translation>
 <translation id="4722735765955348426">Mật khẩu của <ph name="USERNAME" /></translation>
 <translation id="4722920479021006856"><ph name="APP_NAME" /> đang chia sẻ màn hình của bạn.</translation>
+<translation id="4723140812774948886">Hoán đổi với mục tiếp theo</translation>
 <translation id="4724450788351008910">Đã thay đổi Liên kết</translation>
 <translation id="4725511304875193254">Chó Corgi</translation>
 <translation id="4726710629007580002">Đã có cảnh báo khi cố cài đặt tiện ích này:</translation>
@@ -2946,6 +2956,7 @@
 <translation id="51918995459521422"><ph name="ORIGIN" /> muốn tải nhiều tệp xuống</translation>
 <translation id="5192062846343383368">Mở ứng dụng Family Link để xem các tùy chọn cài đặt giám sát của bạn</translation>
 <translation id="5193988420012215838">Đã sao chép vào khay nhớ tạm</translation>
+<translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{Nhấp để xem tiện ích này}other{Nhấp để xem các tiện ích này}}</translation>
 <translation id="5204673965307125349">Vui lòng powerwash thiết bị và thử lại.</translation>
 <translation id="5206215183583316675">Xóa "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="520621735928254154">Lỗi nhập chứng chỉ</translation>
@@ -3028,6 +3039,7 @@
 <translation id="5310281978693206542">Gửi đường dẫn liên kết tới thiết bị của bạn</translation>
 <translation id="5311304534597152726">Đăng nhập bằng</translation>
 <translation id="53116743016968120"><ph name="ERROR_MESSAGE" /> Vui lòng thử lại.</translation>
+<translation id="5313628438272378649">Dữ liệu tải lên này vi phạm các chính sách bảo mật của tổ chức bạn nên không hoàn tất được.</translation>
 <translation id="5315738755890845852">Thừa dấu ngoặc nhọn: <ph name="ERROR_LINE" /></translation>
 <translation id="5315873049536339193">Nhận dạng</translation>
 <translation id="5317780077021120954">Lưu</translation>
@@ -3083,6 +3095,7 @@
 <translation id="5398772614898833570">Đã chặn quảng cáo</translation>
 <translation id="5402815541704507626">Tải xuống bản cập nhật bằng cách dùng dữ liệu di động</translation>
 <translation id="540296380408672091">Luôn chặn cookie trên <ph name="HOST" /></translation>
+<translation id="540495485885201800">Hoán đổi với mục trước</translation>
 <translation id="5405146885510277940">Đặt lại các tùy chọn cài đặt</translation>
 <translation id="5408750356094797285">Thu phóng: <ph name="PERCENT" /></translation>
 <translation id="5411472733320185105">Không sử dụng cài đặt proxy cho các máy chủ và tên miền này:</translation>
@@ -3120,6 +3133,7 @@
 <translation id="5449588825071916739">Đánh dấu trang tất cả các tab</translation>
 <translation id="5449716055534515760">Đóng cửa &amp;sổ</translation>
 <translation id="5454166040603940656">với <ph name="PROVIDER" /></translation>
+<translation id="5454360575035671759">Việc xóa Plugin VM sẽ xóa máy ảo của bạn, trong đó có cả các ứng dụng, tùy chọn cài đặt và dữ liệu trên máy ảo. Bạn có chắc chắn muốn tiếp tục không?</translation>
 <translation id="5457113250005438886">Không hợp lệ</translation>
 <translation id="5457459357461771897">Đọc và xóa ảnh, nhạc và các phương tiện khác khỏi máy tính của bạn</translation>
 <translation id="5457599981699367932">Duyệt với tư cách Khách</translation>
@@ -3136,6 +3150,7 @@
 <translation id="5470735824776589490">Bạn cần khởi động lại trước khi có thể đặt lại thiết bị của mình bằng Powerwash. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation>
 <translation id="5471768120198416576">Chào bạn! Đây là giọng nói của tính năng chuyển văn bản sang lời nói.</translation>
 <translation id="5473333559083690127">Nhập lại mã PIN mới</translation>
+<translation id="548137908954174608">Bật Phụ đề trực tiếp</translation>
 <translation id="5481941284378890518">Thêm máy in lân cận</translation>
 <translation id="5483785310822538350">Thu hồi quyền truy cập vào tệp và thiết bị</translation>
 <translation id="5485080380723335835"><ph name="DEVICE_TYPE" /> của bạn bị khóa vì lý do bảo mật. Hãy nhập thủ công mật khẩu của bạn để tiếp tục.</translation>
@@ -3172,6 +3187,7 @@
 <translation id="5518584115117143805">Chứng chỉ Mã hóa Email</translation>
 <translation id="5521078259930077036">Đây có phải là trang chủ bạn muốn không?</translation>
 <translation id="5522156646677899028">Tiện ích này chứa lỗ hổng bảo mật nghiêm trọng.</translation>
+<translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Quản trị viên của bạn đã cài đặt 1 tiện ích}other{Quản trị viên của bạn đã cài đặt # tiện ích}}</translation>
 <translation id="5525677322972469346">Tạo người dùng được giám sát mới</translation>
 <translation id="5526701598901867718">Tất cả (không an toàn)</translation>
 <translation id="5526745900034778153">Đăng nhập lại để tiếp tục đồng bộ hóa</translation>
@@ -3838,6 +3854,7 @@
 <translation id="6459799433792303855">Cửa sổ đang hoạt động được di chuyển sang màn hình khác.</translation>
 <translation id="6460601847208524483">Tìm Tiếp theo</translation>
 <translation id="6461170143930046705">Đang tìm mạng...</translation>
+<translation id="6462438303393708881">Hủy tải lên</translation>
 <translation id="6463795194797719782">&amp;Chỉnh sửa</translation>
 <translation id="6466988389784393586">&amp;Mở tất cả dấu trang</translation>
 <translation id="6467304607960172345">Tối ưu hóa các video ở chế độ toàn màn hình</translation>
@@ -3885,6 +3902,7 @@
 <translation id="6531282281159901044">Giữ tệp nguy hiểm</translation>
 <translation id="6532101170117367231">Lưu vào Google Drive</translation>
 <translation id="6532106788206463496">Lưu thay đổi</translation>
+<translation id="6532663472409656417">Do doanh nghiệp đăng ký</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Lưu ý:<ph name="END_BOLD" /> Chỉ bật nếu bạn biết mình đang làm gì hoặc nếu bạn đã được yêu cầu bật vì việc thu thập dữ liệu có thể giảm hiệu suất hoạt động.</translation>
 <translation id="6541638731489116978">Trang web này đã bị chặn sử dụng cảm biến chuyển động.</translation>
 <translation id="6545665334409411530">Tốc độ lặp lại</translation>
@@ -4026,6 +4044,7 @@
 <translation id="6758056191028427665">Hãy cho chúng tôi biết ý kiến của bạn về dịch vụ của chúng tôi.</translation>
 <translation id="6759193508432371551">Khôi phục cài đặt gốc</translation>
 <translation id="6762833852331690540">Đang bật</translation>
+<translation id="6767115174726603949">Truy cập vào dữ liệu và thiết bị Thực tế ảo</translation>
 <translation id="6767566652486411142">Chọn ngôn ngữ khác...</translation>
 <translation id="6767639283522617719">Không thể kết hợp miền. Hãy đảm bảo các tùy chọn cài đặt cho đơn vị tổ chức là chính xác.</translation>
 <translation id="6769712124046837540">Đang thêm máy in...</translation>
@@ -4038,6 +4057,7 @@
 <translation id="677965093459947883">Rất nhỏ</translation>
 <translation id="6781284683813954823">Liên kết Doodle</translation>
 <translation id="6781978626986383437">Đã hủy quá trình sao lưu Linux</translation>
+<translation id="6785915470941880363">Cuộn ngược <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation>
 <translation id="6786747875388722282">Tiện ích</translation>
 <translation id="6787839852456839824">Phím tắt</translation>
 <translation id="6788210894632713004">Tiện ích đã giải nén</translation>
@@ -4144,6 +4164,7 @@
 <translation id="6923132443355966645">Cuộn / Nhấp</translation>
 <translation id="6923633482430812883">Lỗi kết nối mục chia sẻ. Vui lòng kiểm tra để đảm bảo rằng máy chủ tệp mà bạn đang kết nối hỗ trợ SMBv2 trở lên.</translation>
 <translation id="6930036377490597025">Khóa bảo mật bên ngoài hoặc cảm biến tích hợp</translation>
+<translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{1 tiện ích đã bị từ chối}other{# tiện ích đã bị từ chối}}</translation>
 <translation id="6935286146439255109">Thiếu một khay giấy</translation>
 <translation id="693807610556624488">Tác vụ ghi vượt quá độ dài tối đa của thuộc tính cho: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Bạn đã lưu 1 máy in.</translation>
@@ -4232,6 +4253,7 @@
 <translation id="7053983685419859001">Chặn</translation>
 <translation id="7055152154916055070">Liên kết chuyển hướng đã chặn:</translation>
 <translation id="7056526158851679338">&amp;Kiểm tra thiết bị</translation>
+<translation id="7057767408836081338">Không lấy được dữ liệu ứng dụng. Hệ thống vẫn đang cố chạy ứng dụng...</translation>
 <translation id="7059858479264779982">Đặt thành tự động chạy</translation>
 <translation id="7059893117020417984">Để duyệt web riêng tư, hãy nhấp vào menu biểu tượng ba dấu chấm để mở cửa sổ ẩn danh</translation>
 <translation id="7062222374113411376">Cho phép các trang web đóng gần đây hoàn tất gửi và nhận dữ liệu (khuyến nghị)</translation>
@@ -4285,6 +4307,7 @@
 <translation id="7120865473764644444">Không thể kết nối với máy chủ đồng bộ hóa. Đang thử lại...</translation>
 <translation id="7121362699166175603">Xóa lịch sử duyệt web và nội dung tự động hoàn thành trong thanh địa chỉ. Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121389946694989825">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Thiết bị này hiện tự động gửi dữ liệu chẩn đoán, dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ không dùng để nhận dạng con bạn mà giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng cho con mình thì dữ liệu này có thể được lưu vào Tài khoản Google của trẻ. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation>
+<translation id="7121438501124788993">Chế độ nhà phát triển</translation>
 <translation id="7121728544325372695">Dấu gạch ngang thông minh</translation>
 <translation id="7123360114020465152">Không còn được hỗ trợ</translation>
 <translation id="7127980134843952133">Lịch sử tải xuống</translation>
@@ -4448,6 +4471,7 @@
 <translation id="7352651011704765696">Đã xảy ra lỗi</translation>
 <translation id="735361434055555355">Đang cài đặt Linux...</translation>
 <translation id="7353887511974462734">Thêm vào nhóm hiện có</translation>
+<translation id="7354341762311560488">Cảm biến vân tay là phím dưới cùng bên trái của bàn phím. Hãy chạm nhẹ ngón tay bất kỳ vào đó.</translation>
 <translation id="735745346212279324">Đã ngắt kết nối VPN</translation>
 <translation id="7359588939039777303">Đã chặn quảng cáo.</translation>
 <translation id="7360183604634508679">Menu dấu trang</translation>
@@ -4748,6 +4772,7 @@
 <translation id="7792388396321542707">Dừng chia sẻ</translation>
 <translation id="779308894558717334">Xanh lục nhạt</translation>
 <translation id="7793098747275782155">Xanh lam đậm</translation>
+<translation id="7797571222998226653">Đang tắt</translation>
 <translation id="7799299114731150374">Đã đặt hình nền thành công</translation>
 <translation id="7800518121066352902">Xoay &amp;ngược chiều kim đồng hồ</translation>
 <translation id="780301667611848630">Không, cảm ơn</translation>
@@ -4998,7 +5023,6 @@
 <translation id="8101987792947961127">Yêu cầu Powerwash trong lần khởi động lại tiếp theo</translation>
 <translation id="8102159139658438129">Chuyển tới mục <ph name="LINK_BEGIN" />Cài đặt<ph name="LINK_END" /> để xem các tùy chọn cho điện thoại đã kết nối</translation>
 <translation id="8104696615244072556">Powerwash thiết bị <ph name="IDS_SHORT_PRODUCT_NAME" /> của bạn và quay lại phiên bản trước.</translation>
-<translation id="8106661353233173262">Đã xảy ra lỗi. Tệp được quét đã hết thời gian chờ.</translation>
 <translation id="8107015733319732394">Đang cài đặt Cửa hàng Google Play trên <ph name="DEVICE_TYPE" /> của bạn. Quá trình này có thể mất vài phút.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Không có cookie bên thứ ba}=1{Đã chặn 1 cookie bên thứ ba}other{Đã chặn # cookie bên thứ ba}}</translation>
 <translation id="810875025413331850">Không tìm thấy thiết bị lân cận.</translation>
@@ -5083,6 +5107,7 @@
 <translation id="8227119283605456246">Đính kèm tệp</translation>
 <translation id="8230134520748321204">Bạn có muốn lưu mật khẩu cho <ph name="ORIGIN" /> không?</translation>
 <translation id="8234795456569844941">Hãy giúp các kỹ sư của chúng tôi khắc phục sự cố này. Hãy cho chúng tôi biết điều gì đã xảy ra ngay trước khi bạn nhận được thông báo lỗi hồ sơ:</translation>
+<translation id="8236123533334037984">Tổ chức của bạn đang quét dữ liệu tải lên này để phê duyệt tính bảo mật.</translation>
 <translation id="8236917170563564587">Chia sẻ tab này</translation>
 <translation id="8237647586961940482">Đỏ và hồng đậm</translation>
 <translation id="8241040075392580210">Bóng mát</translation>
@@ -5539,6 +5564,7 @@
 <translation id="8863753581171631212">Mở liên kết trong <ph name="APP" /> mới</translation>
 <translation id="8864055848767439877">Đang chia sẻ <ph name="TAB_NAME" /> với <ph name="APP_NAME" /></translation>
 <translation id="8864458770072227512">Đã xóa <ph name="EMAIL" /> khỏi thiết bị này</translation>
+<translation id="8867228703146808825">Sao chép thông tin chi tiết về bản dựng vào khay nhớ tạm</translation>
 <translation id="8868626022555786497">Được dùng</translation>
 <translation id="8870318296973696995">Trang chủ</translation>
 <translation id="8870413625673593573">Các tab đã Đóng gần đây</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 2e7db76..a79c715 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -5018,7 +5018,6 @@
 <translation id="8101987792947961127">必须在下次重启时执行 Powerwash</translation>
 <translation id="8102159139658438129">转到<ph name="LINK_BEGIN" />设置<ph name="LINK_END" />即可查看与所连手机相关的选项</translation>
 <translation id="8104696615244072556">对您的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 设备执行 Powerwash 操作,使其还原到之前的版本。</translation>
-<translation id="8106661353233173262">出了点问题。文件扫描操作已超时。</translation>
 <translation id="8107015733319732394">正在在您的 <ph name="DEVICE_TYPE" /> 上安装 Google Play 商店。这可能需要几分钟的时间。</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{无第三方 Cookie}=1{已屏蔽 1 个第三方 Cookie}other{已屏蔽 # 个第三方 Cookie}}</translation>
 <translation id="810875025413331850">未找到附近的设备。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index c42a4d17..20be2af 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -651,7 +651,7 @@
 <translation id="1879000426787380528">登入身分</translation>
 <translation id="1880905663253319515">要刪除憑證「<ph name="CERTIFICATE_NAME" />」嗎?</translation>
 <translation id="1884013283844450420">第 <ph name="NETWORK_INDEX" /> 個網絡,一共有 <ph name="NETWORK_COUNT" /> 個網絡,<ph name="NETWORK_NAME" />,連接</translation>
-<translation id="1884930769492918228">追蹤攝錄機位置並對應您的房間</translation>
+<translation id="1884930769492918228">追蹤攝錄機位置並對應您的房間佈局</translation>
 <translation id="1886996562706621347">允許網站要求成為通訊協定的預設處理常式 (建議)</translation>
 <translation id="1887442540531652736">登入錯誤</translation>
 <translation id="1887597546629269384">再說一次「Hey Google」</translation>
@@ -2398,7 +2398,7 @@
 <translation id="4353114845960720315">當您處於 VR 模式時,此網站可以識別:</translation>
 <translation id="4354344420232759511">您瀏覽過的網站會在這裡顯示</translation>
 <translation id="435527878592612277">選取相片</translation>
-<translation id="4357784477082216550"><ph name="URL" /> 想追蹤攝錄機位置並對應您的房間</translation>
+<translation id="4357784477082216550"><ph name="URL" /> 想追蹤攝錄機位置並對應您的房間佈局</translation>
 <translation id="4358313196493694334">穩定點擊位置</translation>
 <translation id="4359408040881008151">您已安裝有依賴關係的擴充功能,因此必須安裝此擴充功能。</translation>
 <translation id="4359717112757026264">城市景觀</translation>
@@ -4251,7 +4251,7 @@
 <translation id="7053983685419859001">封鎖</translation>
 <translation id="7055152154916055070">已禁止重新導向:</translation>
 <translation id="7056526158851679338">檢查裝置(&amp;I)</translation>
-<translation id="7057767408836081338">無法取得應用程式資料,正在嘗試繼續執行應用程式...</translation>
+<translation id="7057767408836081338">無法取得應用程式資料,正在嘗試繼續執行應用程式…</translation>
 <translation id="7059858479264779982">設為自動啟動</translation>
 <translation id="7059893117020417984">如要私密瀏覽,請按一下三點圖示選單,然後開啟無痕式視窗</translation>
 <translation id="7062222374113411376">允許最近關閉的網站完成傳送和接收資料動作 (建議)</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">必須在下次重新啟動時執行 Powerwash</translation>
 <translation id="8102159139658438129">前往「<ph name="LINK_BEGIN" />設定<ph name="LINK_END" />」查看已連接手機的選項</translation>
 <translation id="8104696615244072556">為您的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 裝置執行 Powerwash 並重設為上個版本。</translation>
-<translation id="8106661353233173262">發生錯誤,檔案掃瞄操作已逾時。</translation>
 <translation id="8107015733319732394">正在為 <ph name="DEVICE_TYPE" /> 安裝「Google Play 商店」。這可能需時幾分鐘。</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{沒有第三方 Cookie}=1{已封鎖 1 個第三方 Cookie}other{已封鎖 # 個第三方 Cookie}}</translation>
 <translation id="810875025413331850">找不到附近的裝置。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 242a684..2417d610a 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -4469,7 +4469,7 @@
 <translation id="7352651011704765696">發生錯誤</translation>
 <translation id="735361434055555355">正在安裝 Linux...</translation>
 <translation id="7353887511974462734">新增到現有群組</translation>
-<translation id="7354341762311560488">指紋感應器位於鍵盤左下方,請以任何一隻手指輕觸這個按鍵。</translation>
+<translation id="7354341762311560488">指紋感應器位於鍵盤左下方,請單指輕觸這個按鍵。</translation>
 <translation id="735745346212279324">已中斷 VPN 連線</translation>
 <translation id="7359588939039777303">已封鎖廣告。</translation>
 <translation id="7360183604634508679">書籤選單</translation>
@@ -5021,7 +5021,6 @@
 <translation id="8101987792947961127">必須在下次重新啟動時執行 Powerwash</translation>
 <translation id="8102159139658438129">如要查看已連結手機的相關選項,請前往「<ph name="LINK_BEGIN" />設定<ph name="LINK_END" />」</translation>
 <translation id="8104696615244072556">為你的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 裝置執行 Powerwash 並還原至上一個版本。</translation>
-<translation id="8106661353233173262">發生錯誤,檔案掃描作業已逾時。</translation>
 <translation id="8107015733319732394">正在為 <ph name="DEVICE_TYPE" /> 安裝 Google Play 商店。這可能需要幾分鐘時間。</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{沒有第三方 Cookie}=1{已封鎖 1 組第三方 Cookie}other{已封鎖 # 組第三方 Cookie}}</translation>
 <translation id="810875025413331850">找不到附近的裝置。</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 808172e..9a5d0c0 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -5022,7 +5022,6 @@
 <translation id="8101987792947961127">Kudingeka i-Powerwash ekuqaliseni kabusha okulandelayo</translation>
 <translation id="8102159139658438129">Hamba <ph name="LINK_BEGIN" />kuzilungiselelo<ph name="LINK_END" /> ukuze ubone izinketho zefoni yakho exhunyiwe</translation>
 <translation id="8104696615244072556">Yenza i-Powerwash kudivayisi yakho ye-<ph name="IDS_SHORT_PRODUCT_NAME" /> futhi ubuyele kunguqulo yangaphambilini.</translation>
-<translation id="8106661353233173262">Kukhona okungahambanga kahle. Ifayela eliskeniwe liphelelwe isikhathi.</translation>
 <translation id="8107015733319732394">Ukufaka i-Google Play Isitolo ku-<ph name="DEVICE_TYPE" /> yakho. Lokhu kungathatha amaminithi ambalwa.</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Awekho amakhukhi enkampani yangaphandle}=1{1 ikhukhi lenkampani yangaphandle livinjelwe}one{# amakhukhi enkampani yangaphandle avinjelwe}other{# amakhukhi enkampani yangaphandle avinjelwe}}</translation>
 <translation id="810875025413331850">Awekho amadivayisi aseduze atholiwe.</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 526744b0..f6d0089f 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1971,6 +1971,7 @@
     "//chrome/browser/touch_to_fill",
     "//chrome/browser/ui",
     "//chrome/browser/ui/webui/bluetooth_internals",
+    "//chrome/browser/updates/announcement_notification",
     "//chrome/common:channel_info",
     "//chrome/common/net",
     "//chrome/installer/util:with_no_strings",
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
index fbb9c9d9..f48256c8 100644
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -12,7 +12,7 @@
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/stl_util.h"
-#include "chrome/android/chrome_jni_headers/ChromeFeatureList_jni.h"
+#include "chrome/browser/flags/jni_headers/ChromeFeatureList_jni.h"
 #include "chrome/browser/share/features.h"
 #include "chrome/browser/sharing/shared_clipboard/feature_flags.h"
 #include "chrome/common/chrome_features.h"
diff --git a/chrome/browser/android/feed/feed_logging_bridge.cc b/chrome/browser/android/feed/feed_logging_bridge.cc
index b7c8db6..a29ff7f 100644
--- a/chrome/browser/android/feed/feed_logging_bridge.cc
+++ b/chrome/browser/android/feed/feed_logging_bridge.cc
@@ -276,10 +276,4 @@
   feed_logging_metrics_->ReportScrolledAfterOpen();
 }
 
-void FeedLoggingBridge::OnManageInterestsClicked(JNIEnv* j_env,
-                                                 const JavaRef<jobject>& j_this,
-                                                 const jint j_position) {
-  feed_logging_metrics_->OnManageInterestsClicked(j_position);
-}
-
 }  // namespace feed
diff --git a/chrome/browser/android/feed/feed_logging_bridge.h b/chrome/browser/android/feed/feed_logging_bridge.h
index 7ba1df84..6c2bebc6 100644
--- a/chrome/browser/android/feed/feed_logging_bridge.h
+++ b/chrome/browser/android/feed/feed_logging_bridge.h
@@ -160,10 +160,6 @@
   void ReportScrolledAfterOpen(JNIEnv* j_env,
                                const base::android::JavaRef<jobject>& j_this);
 
-  void OnManageInterestsClicked(JNIEnv* j_env,
-                                const base::android::JavaRef<jobject>& j_this,
-                                const jint j_position);
-
  private:
   FeedLoggingMetrics* feed_logging_metrics_;
 
diff --git a/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc b/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
index dd20681f..b3ba3581 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
+++ b/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
@@ -110,7 +110,12 @@
 
 const char kTestAppId[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
 const char kTestProfileDir[] = "Profile 1";
-const GURL kTestUrl("https://example.com");
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("https://example.com");
+}
 
 class AppShimHostTest : public testing::Test,
                         public AppShimHostBootstrap::Client,
@@ -130,7 +135,7 @@
     auto app_shim_info = chrome::mojom::AppShimInfo::New();
     app_shim_info->profile_path = base::FilePath(kTestProfileDir);
     app_shim_info->app_id = kTestAppId;
-    app_shim_info->app_url = kTestUrl;
+    app_shim_info->app_url = TestUrl();
     app_shim_info->launch_type = launch_type;
     // Ownership of TestingAppShimHostBootstrap will be transferred to its host.
     (new TestingAppShimHostBootstrap(shim_->GetHostBootstrapReceiver()))
diff --git a/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm b/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
index 34954e42..b5c599a 100644
--- a/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
+++ b/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
@@ -40,7 +40,12 @@
     chrome::mojom::AppShimHostBootstrap::OnShimConnectedCallback;
 
 const char kTestAppMode[] = "test_app";
-const GURL kTestAppUrl("https://example.com");
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestAppUrl() {
+  return GURL("https://example.com");
+}
 
 // A test version of the AppShimController mojo client in chrome_main_app_mode.
 class TestShimClient : public chrome::mojom::AppShim {
@@ -183,7 +188,7 @@
   auto app_shim_info = chrome::mojom::AppShimInfo::New();
   app_shim_info->profile_path = browser()->profile()->GetPath();
   app_shim_info->app_id = kTestAppMode;
-  app_shim_info->app_url = kTestAppUrl;
+  app_shim_info->app_url = TestAppUrl();
   app_shim_info->launch_type = chrome::mojom::AppShimLaunchType::kNormal;
   test_client_->host_bootstrap()->OnShimConnected(
       test_client_->GetHostReceiver(), std::move(app_shim_info),
@@ -199,7 +204,7 @@
   auto app_shim_info = chrome::mojom::AppShimInfo::New();
   app_shim_info->profile_path = browser()->profile()->GetPath();
   app_shim_info->app_id = kTestAppMode;
-  app_shim_info->app_url = kTestAppUrl;
+  app_shim_info->app_url = TestAppUrl();
   app_shim_info->launch_type = chrome::mojom::AppShimLaunchType::kRegisterOnly;
   test_client_->host_bootstrap()->OnShimConnected(
       test_client_->GetHostReceiver(), std::move(app_shim_info),
diff --git a/chrome/browser/availability/availability_prober_unittest.cc b/chrome/browser/availability/availability_prober_unittest.cc
index 7c311cf..3a28d92 100644
--- a/chrome/browser/availability/availability_prober_unittest.cc
+++ b/chrome/browser/availability/availability_prober_unittest.cc
@@ -26,8 +26,15 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
-const GURL kTestUrl("https://test.com");
+
 const base::TimeDelta kCacheRevalidateAfter(base::TimeDelta::FromDays(1));
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("https://test.com");
+}
+
 }  // namespace
 
 class TestDelegate : public AvailabilityProber::Delegate {
@@ -126,7 +133,7 @@
     std::unique_ptr<TestAvailabilityProber> prober =
         std::make_unique<TestAvailabilityProber>(
             delegate, test_shared_loader_factory_, &test_prefs_,
-            AvailabilityProber::ClientName::kLitepages, kTestUrl,
+            AvailabilityProber::ClientName::kLitepages, TestUrl(),
             AvailabilityProber::HttpMethod::kGet, headers, retry_policy,
             timeout_policy, TRAFFIC_ANNOTATION_FOR_TESTS, 1,
             kCacheRevalidateAfter, task_environment_.GetMockTickClock(),
@@ -147,8 +154,8 @@
     network::TestURLLoaderFactory::PendingRequest* request =
         test_url_loader_factory_.GetPendingRequest(0);
 
-    ASSERT_EQ(request->request.url.host(), kTestUrl.host());
-    ASSERT_EQ(request->request.url.scheme(), kTestUrl.scheme());
+    ASSERT_EQ(request->request.url.host(), TestUrl().host());
+    ASSERT_EQ(request->request.url.scheme(), TestUrl().scheme());
 
     auto head = network::CreateURLResponseHead(http_status);
     network::URLLoaderCompletionStatus status(net_error);
@@ -180,7 +187,7 @@
     EXPECT_EQ(request->request.credentials_mode,
               network::mojom::CredentialsMode::kOmit);
     if (expect_random_guid) {
-      EXPECT_NE(request->request.url, kTestUrl);
+      EXPECT_NE(request->request.url, TestUrl());
       EXPECT_TRUE(request->request.url.query().find("guid=") !=
                   std::string::npos);
       EXPECT_EQ(request->request.url.query().length(),
@@ -188,7 +195,7 @@
       // We don't check for the randomness of successive GUIDs on the assumption
       // base::GenerateGUID() is always correct.
     } else {
-      EXPECT_EQ(request->request.url, kTestUrl);
+      EXPECT_EQ(request->request.url, TestUrl());
     }
   }
 
diff --git a/chrome/browser/background_fetch/background_fetch_delegate_impl_unittest.cc b/chrome/browser/background_fetch/background_fetch_delegate_impl_unittest.cc
index ab165be..8a77cc8 100644
--- a/chrome/browser/background_fetch/background_fetch_delegate_impl_unittest.cc
+++ b/chrome/browser/background_fetch/background_fetch_delegate_impl_unittest.cc
@@ -19,10 +19,14 @@
 
 namespace {
 
-const GURL kOriginUrl = GURL("https://example.com/");
-const GURL kPageUrl = GURL("https://example.com/page1");
 const char kUserInitiatedAbort[] = "UserInitiatedAbort";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL OriginUrl() {
+  return GURL("https://example.com/");
+}
+
 }  // namespace
 
 class BackgroundFetchDelegateImplTest : public testing::Test {
@@ -32,13 +36,13 @@
     delegate_ = static_cast<BackgroundFetchDelegateImpl*>(
         profile_.GetBackgroundFetchDelegate());
 
-    // Add |kOriginUrl| to |profile_|'s history so the UKM background
+    // Add |OriginUrl()| to |profile_|'s history so the UKM background
     // recording conditions are met.
     ASSERT_TRUE(profile_.CreateHistoryService(/* delete_file= */ true,
                                               /* no_db= */ false));
     auto* history_service = HistoryServiceFactory::GetForProfile(
         &profile_, ServiceAccessType::EXPLICIT_ACCESS);
-    history_service->AddPage(kOriginUrl, base::Time::Now(),
+    history_service->AddPage(OriginUrl(), base::Time::Now(),
                              history::SOURCE_BROWSED);
   }
 
@@ -59,7 +63,7 @@
 };
 
 TEST_F(BackgroundFetchDelegateImplTest, RecordUkmEvent) {
-  url::Origin origin = url::Origin::Create(kOriginUrl);
+  url::Origin origin = url::Origin::Create(OriginUrl());
 
   {
     std::vector<const ukm::mojom::UkmEntry*> entries =
diff --git a/chrome/browser/browsing_data/browsing_data_database_helper_browsertest.cc b/chrome/browser/browsing_data/browsing_data_database_helper_browsertest.cc
index 8e0e97c..f0341b5 100644
--- a/chrome/browser/browsing_data/browsing_data_database_helper_browsertest.cc
+++ b/chrome/browser/browsing_data/browsing_data_database_helper_browsertest.cc
@@ -27,12 +27,16 @@
     BrowsingDataHelperCallback<content::StorageUsageInfo>;
 
 const char kTestIdentifier1[] = "http_www.example.com_0";
-const url::Origin kTestOrigin =
-    url::Origin::Create(GURL("http://www.example.com"));
 
 const char kTestIdentifierExtension[] =
   "chrome-extension_behllobkkfkfnphdnhnkndlbkcpglgmj_0";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin TestOrigin() {
+  return url::Origin::Create(GURL("http://www.example.com"));
+}
+
 class BrowsingDataDatabaseHelperTest : public InProcessBrowserTest {
  public:
   virtual void CreateDatabases() {
@@ -81,7 +85,7 @@
       }));
   run_loop.Run();
   ASSERT_EQ(1UL, database_info_list.size());
-  EXPECT_EQ(kTestOrigin, database_info_list.begin()->origin);
+  EXPECT_EQ(TestOrigin(), database_info_list.begin()->origin);
 }
 
 IN_PROC_BROWSER_TEST_F(BrowsingDataDatabaseHelperTest, CannedAddDatabase) {
diff --git a/chrome/browser/browsing_data/browsing_data_file_system_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_file_system_helper_unittest.cc
index 207b671..a306653 100644
--- a/chrome/browser/browsing_data/browsing_data_file_system_helper_unittest.cc
+++ b/chrome/browser/browsing_data/browsing_data_file_system_helper_unittest.cc
@@ -32,23 +32,6 @@
 const storage::FileSystemType kTemporary = storage::kFileSystemTypeTemporary;
 const storage::FileSystemType kPersistent = storage::kFileSystemTypePersistent;
 
-// We'll use these three distinct origins for testing, both as strings and as
-// Origins in appropriate contexts.
-const char kTestOrigin1[] = "http://host1:1";
-const char kTestOrigin2[] = "http://host2:2";
-const char kTestOrigin3[] = "http://host3:3";
-
-// Extensions and Devtools should be ignored.
-const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz";
-const char kTestOriginDevTools[] = "devtools://abcdefghijklmnopqrstuvw";
-
-const url::Origin kOrigin1 = url::Origin::Create(GURL(kTestOrigin1));
-const url::Origin kOrigin2 = url::Origin::Create(GURL(kTestOrigin2));
-const url::Origin kOrigin3 = url::Origin::Create(GURL(kTestOrigin3));
-const url::Origin kOriginExt = url::Origin::Create(GURL(kTestOriginExt));
-const url::Origin kOriginDevTools =
-    url::Origin::Create(GURL(kTestOriginDevTools));
-
 // TODO(mkwst): Update this size once the discussion in http://crbug.com/86114
 // is concluded.
 const int kEmptyFileSystemSize = 0;
@@ -56,6 +39,29 @@
 using FileSystemInfoList =
     std::list<BrowsingDataFileSystemHelper::FileSystemInfo>;
 
+// We'll use these three distinct origins for testing, both as strings and as
+// Origins in appropriate contexts.
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin Origin1() {
+  return url::Origin::Create(GURL("http://host1:1"));
+}
+url::Origin Origin2() {
+  return url::Origin::Create(GURL("http://host2:2"));
+}
+url::Origin Origin3() {
+  return url::Origin::Create(GURL("http://host3:3"));
+}
+
+// Extensions and Devtools should be ignored.
+url::Origin OriginExt() {
+  return url::Origin::Create(
+      GURL("chrome-extension://abcdefghijklmnopqrstuvwxyz"));
+}
+url::Origin OriginDevTools() {
+  return url::Origin::Create(GURL("devtools://abcdefghijklmnopqrstuvw"));
+}
+
 // The FileSystem APIs are all asynchronous; this testing class wraps up the
 // boilerplate code necessary to deal with waiting for responses. In a nutshell,
 // any async call whose response we want to test ought to create a base::RunLoop
@@ -157,20 +163,20 @@
     BlockUntilQuit(&run_loop);
   }
 
-  // Sets up kOrigin1 with a temporary file system, kOrigin2 with a persistent
-  // file system, and kOrigin3 with both.
+  // Sets up Origin1() with a temporary file system, Origin2() with a persistent
+  // file system, and Origin3() with both.
   virtual void PopulateTestFileSystemData() {
-    CreateDirectoryForOriginAndType(kOrigin1, kTemporary);
-    CreateDirectoryForOriginAndType(kOrigin2, kPersistent);
-    CreateDirectoryForOriginAndType(kOrigin3, kTemporary);
-    CreateDirectoryForOriginAndType(kOrigin3, kPersistent);
+    CreateDirectoryForOriginAndType(Origin1(), kTemporary);
+    CreateDirectoryForOriginAndType(Origin2(), kPersistent);
+    CreateDirectoryForOriginAndType(Origin3(), kTemporary);
+    CreateDirectoryForOriginAndType(Origin3(), kPersistent);
 
-    EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin1, kPersistent));
-    EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin1, kTemporary));
-    EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin2, kPersistent));
-    EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin2, kTemporary));
-    EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3, kPersistent));
-    EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3, kTemporary));
+    EXPECT_FALSE(FileSystemContainsOriginAndType(Origin1(), kPersistent));
+    EXPECT_TRUE(FileSystemContainsOriginAndType(Origin1(), kTemporary));
+    EXPECT_TRUE(FileSystemContainsOriginAndType(Origin2(), kPersistent));
+    EXPECT_FALSE(FileSystemContainsOriginAndType(Origin2(), kTemporary));
+    EXPECT_TRUE(FileSystemContainsOriginAndType(Origin3(), kPersistent));
+    EXPECT_TRUE(FileSystemContainsOriginAndType(Origin3(), kTemporary));
   }
 
   // Calls OpenFileSystem with OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT
@@ -215,20 +221,20 @@
   // Order is arbitrary, verify all three origins.
   bool test_hosts_found[3] = {false, false, false};
   for (const auto& info : *file_system_info_list_) {
-    if (info.origin == kOrigin1) {
+    if (info.origin == Origin1()) {
       EXPECT_FALSE(test_hosts_found[0]);
       test_hosts_found[0] = true;
       EXPECT_FALSE(base::Contains(info.usage_map, kPersistent));
       EXPECT_TRUE(base::Contains(info.usage_map, kTemporary));
       EXPECT_EQ(kEmptyFileSystemSize,
                 info.usage_map.at(storage::kFileSystemTypeTemporary));
-    } else if (info.origin == kOrigin2) {
+    } else if (info.origin == Origin2()) {
       EXPECT_FALSE(test_hosts_found[1]);
       test_hosts_found[1] = true;
       EXPECT_TRUE(base::Contains(info.usage_map, kPersistent));
       EXPECT_FALSE(base::Contains(info.usage_map, kTemporary));
       EXPECT_EQ(kEmptyFileSystemSize, info.usage_map.at(kPersistent));
-    } else if (info.origin == kOrigin3) {
+    } else if (info.origin == Origin3()) {
       EXPECT_FALSE(test_hosts_found[2]);
       test_hosts_found[2] = true;
       EXPECT_TRUE(base::Contains(info.usage_map, kPersistent));
@@ -249,15 +255,15 @@
 TEST_F(BrowsingDataFileSystemHelperTest, DeleteData) {
   PopulateTestFileSystemData();
 
-  helper_->DeleteFileSystemOrigin(kOrigin1);
-  helper_->DeleteFileSystemOrigin(kOrigin2);
+  helper_->DeleteFileSystemOrigin(Origin1());
+  helper_->DeleteFileSystemOrigin(Origin2());
 
   FetchFileSystems();
 
   EXPECT_EQ(1UL, file_system_info_list_->size());
   BrowsingDataFileSystemHelper::FileSystemInfo info =
       *(file_system_info_list_->begin());
-  EXPECT_EQ(kOrigin3, info.origin);
+  EXPECT_EQ(Origin3(), info.origin);
   EXPECT_TRUE(base::Contains(info.usage_map, kPersistent));
   EXPECT_TRUE(base::Contains(info.usage_map, kTemporary));
   EXPECT_EQ(kEmptyFileSystemSize, info.usage_map[kPersistent]);
@@ -268,7 +274,7 @@
 // whether or not it currently contains file systems.
 TEST_F(BrowsingDataFileSystemHelperTest, Empty) {
   ASSERT_TRUE(canned_helper_->empty());
-  canned_helper_->Add(kOrigin1);
+  canned_helper_->Add(Origin1());
   ASSERT_FALSE(canned_helper_->empty());
   canned_helper_->Reset();
   ASSERT_TRUE(canned_helper_->empty());
@@ -277,19 +283,19 @@
 // Verifies that AddFileSystem correctly adds file systems. The canned helper
 // does not record usage size.
 TEST_F(BrowsingDataFileSystemHelperTest, CannedAddFileSystem) {
-  canned_helper_->Add(kOrigin1);
-  canned_helper_->Add(kOrigin2);
+  canned_helper_->Add(Origin1());
+  canned_helper_->Add(Origin2());
 
   FetchCannedFileSystems();
 
   EXPECT_EQ(2U, file_system_info_list_->size());
   auto info = file_system_info_list_->begin();
-  EXPECT_EQ(kOrigin1, info->origin);
+  EXPECT_EQ(Origin1(), info->origin);
   EXPECT_FALSE(base::Contains(info->usage_map, kPersistent));
   EXPECT_FALSE(base::Contains(info->usage_map, kTemporary));
 
   info++;
-  EXPECT_EQ(kOrigin2, info->origin);
+  EXPECT_EQ(Origin2(), info->origin);
   EXPECT_FALSE(base::Contains(info->usage_map, kPersistent));
   EXPECT_FALSE(base::Contains(info->usage_map, kTemporary));
 }
@@ -298,9 +304,9 @@
 // extension and devtools schemes.
 TEST_F(BrowsingDataFileSystemHelperTest, IgnoreExtensionsAndDevTools) {
   ASSERT_TRUE(canned_helper_->empty());
-  canned_helper_->Add(kOriginExt);
+  canned_helper_->Add(OriginExt());
   ASSERT_TRUE(canned_helper_->empty());
-  canned_helper_->Add(kOriginDevTools);
+  canned_helper_->Add(OriginDevTools());
   ASSERT_TRUE(canned_helper_->empty());
 }
 
diff --git a/chrome/browser/browsing_data/browsing_data_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_helper_unittest.cc
index 6003a82..fafa12a 100644
--- a/chrome/browser/browsing_data/browsing_data_helper_unittest.cc
+++ b/chrome/browser/browsing_data/browsing_data_helper_unittest.cc
@@ -14,18 +14,6 @@
 
 namespace {
 
-const char kTestOrigin1[] = "http://host1:1/";
-const char kTestOrigin2[] = "http://host2:1/";
-const char kTestOrigin3[] = "http://host3:1/";
-const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
-const char kTestOriginDevTools[] = "devtools://abcdefghijklmnopqrstuvw/";
-
-const GURL kOrigin1(kTestOrigin1);
-const GURL kOrigin2(kTestOrigin2);
-const GURL kOrigin3(kTestOrigin3);
-const GURL kOriginExt(kTestOriginExt);
-const GURL kOriginDevTools(kTestOriginDevTools);
-
 class BrowsingDataHelperTest : public testing::Test {
  public:
   BrowsingDataHelperTest() {}
diff --git a/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc
index 99c9060..c0624959 100644
--- a/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc
+++ b/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc
@@ -35,19 +35,23 @@
 
 namespace {
 
-// We'll use these three distinct origins for testing, both as strings and as
-// GURLs in appropriate contexts.
-const char kTestOrigin1[] = "http://host1:1/";
-const char kTestOrigin2[] = "http://host2:2/";
-const char kTestOrigin3[] = "http://host3:1/";
-
-const GURL kOrigin1(kTestOrigin1);
-const GURL kOrigin2(kTestOrigin2);
-const GURL kOrigin3(kTestOrigin3);
-
 const char kWidevineCdmPluginId[] = "application_x-ppapi-widevine-cdm";
 const char kClearKeyCdmPluginId[] = "application_x-ppapi-clearkey-cdm";
 
+// We'll use these three distinct origins for testing, both as strings and as
+// GURLs in appropriate contexts.
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Origin1() {
+  return GURL("http://host1:1");
+}
+GURL Origin2() {
+  return GURL("http://host2:2");
+}
+GURL Origin3() {
+  return GURL("http://host3:1");
+}
+
 class AwaitCompletionHelper {
  public:
   AwaitCompletionHelper() : start_(false), already_quit_(false) {}
@@ -133,9 +137,9 @@
   }
 
   // Add some files to the PluginPrivateFileSystem. They are created as follows:
-  //   kOrigin1 - ClearKey - 1 file - timestamp 10 days ago
-  //   kOrigin2 - Widevine - 2 files - timestamps now and 60 days ago
-  //   kOrigin3 - Widevine - 2 files - timestamps 20 and 30 days ago
+  //   Origin1() - ClearKey - 1 file - timestamp 10 days ago
+  //   Origin2() - Widevine - 2 files - timestamps now and 60 days ago
+  //   Origin3() - Widevine - 2 files - timestamps 20 and 30 days ago
   virtual void PopulateTestMediaLicenseData() {
     const base::Time ten_days_ago = now_ - base::TimeDelta::FromDays(10);
     const base::Time twenty_days_ago = now_ - base::TimeDelta::FromDays(20);
@@ -143,26 +147,26 @@
     const base::Time sixty_days_ago = now_ - base::TimeDelta::FromDays(60);
 
     std::string clearkey_fsid =
-        CreateFileSystem(kClearKeyCdmPluginId, kOrigin1);
+        CreateFileSystem(kClearKeyCdmPluginId, Origin1());
     storage::FileSystemURL clearkey_file =
-        CreateFile(kOrigin1, clearkey_fsid, "foo");
+        CreateFile(Origin1(), clearkey_fsid, "foo");
     SetFileTimestamp(clearkey_file, ten_days_ago);
 
     std::string widevine_fsid =
-        CreateFileSystem(kWidevineCdmPluginId, kOrigin2);
+        CreateFileSystem(kWidevineCdmPluginId, Origin2());
     storage::FileSystemURL widevine_file1 =
-        CreateFile(kOrigin2, widevine_fsid, "bar1");
+        CreateFile(Origin2(), widevine_fsid, "bar1");
     storage::FileSystemURL widevine_file2 =
-        CreateFile(kOrigin2, widevine_fsid, "bar2");
+        CreateFile(Origin2(), widevine_fsid, "bar2");
     SetFileTimestamp(widevine_file1, now_);
     SetFileTimestamp(widevine_file2, sixty_days_ago);
 
     std::string widevine_fsid2 =
-        CreateFileSystem(kWidevineCdmPluginId, kOrigin3);
+        CreateFileSystem(kWidevineCdmPluginId, Origin3());
     storage::FileSystemURL widevine_file3 =
-        CreateFile(kOrigin3, widevine_fsid2, "test1");
+        CreateFile(Origin3(), widevine_fsid2, "test1");
     storage::FileSystemURL widevine_file4 =
-        CreateFile(kOrigin3, widevine_fsid2, "test2");
+        CreateFile(Origin3(), widevine_fsid2, "test2");
     SetFileTimestamp(widevine_file3, twenty_days_ago);
     SetFileTimestamp(widevine_file4, thirty_days_ago);
   }
@@ -297,19 +301,19 @@
   // Order is arbitrary, verify both origins.
   bool test_hosts_found[] = {false, false, false};
   for (const auto& info : *ReturnedMediaLicenseInfo()) {
-    if (info.origin == kOrigin1) {
+    if (info.origin == Origin1()) {
       EXPECT_FALSE(test_hosts_found[0]);
       test_hosts_found[0] = true;
       EXPECT_EQ(0u, info.size);
       // Single file for origin1 should be 10 days ago.
       EXPECT_EQ(10, (Now() - info.last_modified_time).InDays());
-    } else if (info.origin == kOrigin2) {
+    } else if (info.origin == Origin2()) {
       EXPECT_FALSE(test_hosts_found[1]);
       test_hosts_found[1] = true;
       EXPECT_EQ(0u, info.size);
       // Files for origin2 are now and 60 days ago, so it should report now.
       EXPECT_EQ(0, (Now() - info.last_modified_time).InDays());
-    } else if (info.origin == kOrigin3) {
+    } else if (info.origin == Origin3()) {
       EXPECT_FALSE(test_hosts_found[2]);
       test_hosts_found[2] = true;
       EXPECT_EQ(0u, info.size);
@@ -329,15 +333,15 @@
 TEST_F(BrowsingDataMediaLicenseHelperTest, DeleteData) {
   PopulateTestMediaLicenseData();
 
-  DeleteMediaLicenseOrigin(kOrigin1);
-  DeleteMediaLicenseOrigin(kOrigin2);
+  DeleteMediaLicenseOrigin(Origin1());
+  DeleteMediaLicenseOrigin(Origin2());
 
   FetchMediaLicenses();
   EXPECT_EQ(1u, ReturnedMediaLicenseInfo()->size());
 
   BrowsingDataMediaLicenseHelper::MediaLicenseInfo info =
       *(ReturnedMediaLicenseInfo()->begin());
-  EXPECT_EQ(kOrigin3, info.origin);
+  EXPECT_EQ(Origin3(), info.origin);
   EXPECT_EQ(0u, info.size);
   EXPECT_EQ(20, (Now() - info.last_modified_time).InDays());
 }
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index 7904073..e37b9ff 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -170,14 +170,8 @@
 
 namespace {
 
-const char kTestOrigin1[] = "http://host1.com:1/";
 const char kTestRegisterableDomain1[] = "host1.com";
-const char kTestOrigin2[] = "http://host2.com:1/";
-const char kTestOrigin3[] = "http://host3.com:1/";
 const char kTestRegisterableDomain3[] = "host3.com";
-const char kTestOrigin4[] = "https://host3.com:1/";
-const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
-const char kTestOriginDevTools[] = "devtools://abcdefghijklmnopqrstuvw/";
 
 // For HTTP auth.
 const char kTestRealm[] = "TestRealm";
@@ -185,19 +179,6 @@
 // For Autofill.
 const char kWebOrigin[] = "https://www.example.com/";
 
-// Default search engine URL.
-const char kDSETestUrl[] = "https://search.com";
-
-const GURL kOrigin1(kTestOrigin1);
-const GURL kOrigin2(kTestOrigin2);
-const GURL kOrigin3(kTestOrigin3);
-const GURL kOrigin4(kTestOrigin4);
-
-const GURL kOriginExt(kTestOriginExt);
-const GURL kOriginDevTools(kTestOriginDevTools);
-
-const GURL kDSEOrigin(kDSETestUrl);
-
 // Shorthands for origin types.
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 const int kExtension = ChromeBrowsingDataRemoverDelegate::ORIGIN_TYPE_EXTENSION;
@@ -206,6 +187,32 @@
 const int kUnprotected =
     content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Origin1() {
+  return GURL("http://host1.com:1");
+}
+GURL Origin2() {
+  return GURL("http://host2.com:1");
+}
+GURL Origin3() {
+  return GURL("http://host3.com:1");
+}
+GURL Origin4() {
+  return GURL("https://host3.com:1");
+}
+
+GURL OriginExt() {
+  return GURL("chrome-extension://abcdefghijklmnopqrstuvwxyz");
+}
+GURL OriginDevTools() {
+  return GURL("devtools://abcdefghijklmnopqrstuvw");
+}
+
+GURL DSEOrigin() {
+  return GURL("https://search.com");
+}
+
 // Testers --------------------------------------------------------------------
 
 #if defined(OS_ANDROID)
@@ -231,7 +238,7 @@
   base::string16 GetDSEName() override { return base::string16(); }
 
   url::Origin GetDSEOrigin() override {
-    return url::Origin::Create(kDSEOrigin);
+    return url::Origin::Create(DSEOrigin());
   }
 
   void SetDSEChangedCallback(const base::Closure& callback) override {
@@ -275,7 +282,7 @@
     bool result = false;
     base::RunLoop run_loop;
     cookie_manager_->GetCookieList(
-        kOrigin1, net::CookieOptions(),
+        Origin1(), net::CookieOptions(),
         base::BindLambdaForTesting(
             [&](const net::CookieStatusList& cookie_list,
                 const net::CookieStatusList& excluded_cookies) {
@@ -296,7 +303,7 @@
   void AddCookie() {
     base::RunLoop run_loop;
     auto cookie = net::CanonicalCookie::Create(
-        kOrigin1, "A=1", base::Time::Now(), base::nullopt /* server_time */);
+        Origin1(), "A=1", base::Time::Now(), base::nullopt /* server_time */);
     cookie_manager_->SetCanonicalCookie(
         *cookie, "http", net::CookieOptions(),
         base::BindLambdaForTesting(
@@ -709,8 +716,8 @@
     if (filter.is_null() != to_match_.is_null())
       return false;
 
-    const GURL urls_to_test_[] =
-        {kOrigin1, kOrigin2, kOrigin3, GURL("invalid spec")};
+    const GURL urls_to_test_[] = {Origin1(), Origin2(), Origin3(),
+                                  GURL("invalid spec")};
     for (GURL url : urls_to_test_) {
       if (filter.Run(url) != to_match_.Run(url)) {
         if (listener)
@@ -1293,8 +1300,8 @@
   RemoveHistoryTester tester;
   ASSERT_TRUE(tester.Init(GetProfile()));
 
-  tester.AddHistory(kOrigin1, base::Time::Now());
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  tester.AddHistory(Origin1(), base::Time::Now());
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
@@ -1304,7 +1311,7 @@
             GetRemovalMask());
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
-  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
+  EXPECT_FALSE(tester.HistoryContainsURL(Origin1()));
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveHistoryForLastHour) {
@@ -1313,10 +1320,10 @@
 
   base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
 
-  tester.AddHistory(kOrigin1, base::Time::Now());
-  tester.AddHistory(kOrigin2, two_hours_ago);
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  tester.AddHistory(Origin1(), base::Time::Now());
+  tester.AddHistory(Origin2(), two_hours_ago);
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
 
   BlockUntilBrowsingDataRemoved(
       AnHourAgo(), base::Time::Max(),
@@ -1326,8 +1333,8 @@
             GetRemovalMask());
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
-  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
-  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  EXPECT_FALSE(tester.HistoryContainsURL(Origin1()));
+  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveHistoryForOlderThan30Days) {
@@ -1341,13 +1348,13 @@
   base::Time older_than_31days =
       base::Time::Now() - base::TimeDelta::FromDays(31);
 
-  tester.AddHistory(kOrigin1, base::Time::Now());
-  tester.AddHistory(kOrigin2, older_than_29days);
-  tester.AddHistory(kOrigin3, older_than_31days);
+  tester.AddHistory(Origin1(), base::Time::Now());
+  tester.AddHistory(Origin2(), older_than_29days);
+  tester.AddHistory(Origin3(), older_than_31days);
 
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin3));
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin3()));
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), older_than_30days,
@@ -1358,9 +1365,9 @@
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 
-  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1));
-  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
-  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin3));
+  EXPECT_TRUE(tester.HistoryContainsURL(Origin1()));
+  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
+  EXPECT_FALSE(tester.HistoryContainsURL(Origin3()));
 }
 
 // This should crash (DCHECK) in Debug, but death tests don't work properly
@@ -1376,10 +1383,10 @@
 
   base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
 
-  tester.AddHistory(kOrigin1, base::Time::Now());
-  tester.AddHistory(kOrigin2, two_hours_ago);
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  tester.AddHistory(Origin1(), base::Time::Now());
+  tester.AddHistory(Origin2(), two_hours_ago);
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
 
   BlockUntilBrowsingDataRemoved(
       AnHourAgo(), base::Time::Max(),
@@ -1390,8 +1397,8 @@
             GetOriginTypeMask());
 
   // Nothing should have been deleted.
-  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1));
-  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  EXPECT_TRUE(tester.HistoryContainsURL(Origin1()));
+  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
@@ -1402,8 +1409,8 @@
   // Add some history.
   RemoveHistoryTester history_tester;
   ASSERT_TRUE(history_tester.Init(GetProfile()));
-  history_tester.AddHistory(kOrigin1, base::Time::Now());
-  ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
+  history_tester.AddHistory(Origin1(), base::Time::Now());
+  ASSERT_TRUE(history_tester.HistoryContainsURL(Origin1()));
 
   // Expect that passwords will be deleted, as they do not depend
   // on |prefs::kAllowDeletingBrowserHistory|.
@@ -1420,7 +1427,7 @@
             GetOriginTypeMask());
 
   // Verify that history was not deleted.
-  EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
+  EXPECT_TRUE(history_tester.HistoryContainsURL(Origin1()));
 }
 #endif
 
@@ -1567,10 +1574,10 @@
 
   base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
 
-  tester.AddHistory(kOrigin1, base::Time::Now());
-  tester.AddHistory(kOrigin2, two_hours_ago);
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
-  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  tester.AddHistory(Origin1(), base::Time::Now());
+  tester.AddHistory(Origin2(), two_hours_ago);
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
+  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
 
   std::unique_ptr<BrowsingDataFilterBuilder> builder(
       BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::BLACKLIST));
@@ -1582,8 +1589,8 @@
             GetRemovalMask());
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
-  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
-  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  EXPECT_FALSE(tester.HistoryContainsURL(Origin1()));
+  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
 }
 
 // Verify that clearing autofill form data works.
@@ -2017,16 +2024,16 @@
   HostContentSettingsMap* host_content_settings_map =
       HostContentSettingsMapFactory::GetForProfile(GetProfile());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin1, GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
+      Origin1(), GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
       std::make_unique<base::DictionaryValue>());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin2, GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
+      Origin2(), GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
       std::make_unique<base::DictionaryValue>());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin3, GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
+      Origin3(), GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
       std::make_unique<base::DictionaryValue>());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin4, GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
+      Origin4(), GURL(), ContentSettingsType::SITE_ENGAGEMENT, std::string(),
       std::make_unique<base::DictionaryValue>());
 
   // Clear all except for origin1 and origin3.
@@ -2049,29 +2056,29 @@
   host_content_settings_map->GetSettingsForOneType(
       ContentSettingsType::SITE_ENGAGEMENT, std::string(), &host_settings);
   EXPECT_EQ(3u, host_settings.size());
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin1()),
             host_settings[0].primary_pattern)
       << host_settings[0].primary_pattern.ToString();
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin4),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin4()),
             host_settings[1].primary_pattern)
       << host_settings[1].primary_pattern.ToString();
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin3()),
             host_settings[2].primary_pattern)
       << host_settings[2].primary_pattern.ToString();
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) {
   auto* map = HostContentSettingsMapFactory::GetForProfile(GetProfile());
-  map->SetContentSettingDefaultScope(kOrigin1, kOrigin1,
+  map->SetContentSettingDefaultScope(Origin1(), Origin1(),
                                      ContentSettingsType::GEOLOCATION,
                                      std::string(), CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(kDSEOrigin, kDSEOrigin,
+  map->SetContentSettingDefaultScope(DSEOrigin(), DSEOrigin(),
                                      ContentSettingsType::GEOLOCATION,
                                      std::string(), CONTENT_SETTING_BLOCK);
-  map->SetContentSettingDefaultScope(kOrigin2, kOrigin2,
+  map->SetContentSettingDefaultScope(Origin2(), Origin2(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      std::string(), CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(kOrigin3, GURL(),
+  map->SetContentSettingDefaultScope(Origin3(), GURL(),
                                      ContentSettingsType::COOKIES,
                                      std::string(), CONTENT_SETTING_BLOCK);
   ContentSettingsPattern pattern =
@@ -2099,10 +2106,10 @@
 
   if (expect_geolocation_dse_origin) {
     ASSERT_EQ(2u, host_settings.size());
-    EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kDSEOrigin),
+    EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(DSEOrigin()),
               host_settings[0].primary_pattern)
         << host_settings[0].primary_pattern.ToString();
-    EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kDSEOrigin),
+    EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(DSEOrigin()),
               host_settings[0].secondary_pattern)
         << host_settings[0].secondary_pattern.ToString();
     EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting());
@@ -2124,7 +2131,7 @@
 
   if (expect_notifications_dse_origin) {
     ASSERT_EQ(2u, host_settings.size());
-    EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kDSEOrigin),
+    EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(DSEOrigin()),
               host_settings[0].primary_pattern)
         << host_settings[0].primary_pattern.ToString();
     EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting());
@@ -2156,9 +2163,9 @@
   base::Time one_hour_ago = base::Time::Now() - base::TimeDelta::FromHours(1);
   base::Time yesterday = base::Time::Now() - base::TimeDelta::FromDays(1);
   registry->OnAcceptRegisterProtocolHandler(
-      ProtocolHandler::CreateProtocolHandler("news", kOrigin1));
+      ProtocolHandler::CreateProtocolHandler("news", Origin1()));
   registry->OnAcceptRegisterProtocolHandler(
-      ProtocolHandler("mailto", kOrigin1, yesterday));
+      ProtocolHandler("mailto", Origin1(), yesterday));
   EXPECT_TRUE(registry->IsHandledProtocol("news"));
   EXPECT_TRUE(registry->IsHandledProtocol("mailto"));
   EXPECT_EQ(
@@ -2203,14 +2210,14 @@
   expiration_times_dictionary->SetDouble("expiration_time", expiration_time);
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin1, GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
+      Origin1(), GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
       expiration_times_dictionary->CreateDeepCopy());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin2, GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
+      Origin2(), GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
       expiration_times_dictionary->CreateDeepCopy());
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin3, GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
+      Origin3(), GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
       expiration_times_dictionary->CreateDeepCopy());
 
   // Clear all except for origin1 and origin3.
@@ -2228,11 +2235,11 @@
 
   ASSERT_EQ(2u, host_settings.size());
 
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin1()),
             host_settings[0].primary_pattern)
       << host_settings[0].primary_pattern.ToString();
 
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin3()),
             host_settings[1].primary_pattern)
       << host_settings[1].primary_pattern.ToString();
 
@@ -2262,14 +2269,14 @@
   expiration_times_dictionary->SetDouble("expiration_time", expiration_time);
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin1, GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
+      Origin1(), GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
       expiration_times_dictionary->CreateDeepCopy());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin2, GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
+      Origin2(), GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
       expiration_times_dictionary->CreateDeepCopy());
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      kOrigin3, GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
+      Origin3(), GURL(), ContentSettingsType::CLIENT_HINTS, std::string(),
       expiration_times_dictionary->CreateDeepCopy());
 
   // Clear all.
@@ -2365,9 +2372,9 @@
       HostContentSettingsMapFactory::GetForProfile(GetProfile());
 
   DurableStoragePermissionContext durable_permission(GetProfile());
-  durable_permission.UpdateContentSetting(kOrigin1, GURL(),
+  durable_permission.UpdateContentSetting(Origin1(), GURL(),
                                           CONTENT_SETTING_ALLOW);
-  durable_permission.UpdateContentSetting(kOrigin2, GURL(),
+  durable_permission.UpdateContentSetting(Origin2(), GURL(),
                                           CONTENT_SETTING_ALLOW);
 
   // Clear all except for origin1 and origin3.
@@ -2392,7 +2399,7 @@
 
   ASSERT_EQ(2u, host_settings.size());
   // Only the first should should have a setting.
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin1()),
             host_settings[0].primary_pattern)
       << host_settings[0].primary_pattern.ToString();
   EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting());
@@ -2409,7 +2416,7 @@
   HostContentSettingsMap* host_content_settings_map =
       HostContentSettingsMapFactory::GetForProfile(GetProfile());
   DurableStoragePermissionContext durable_permission(GetProfile());
-  durable_permission.UpdateContentSetting(kOrigin1, GURL(),
+  durable_permission.UpdateContentSetting(Origin1(), GURL(),
                                           CONTENT_SETTING_ALLOW);
   ContentSettingsForOneType host_settings;
   host_content_settings_map->GetSettingsForOneType(
@@ -2439,13 +2446,13 @@
   DCHECK(http_session);
 
   net::HttpAuthCache* http_auth_cache = http_session->http_auth_cache();
-  http_auth_cache->Add(kOrigin1, net::HttpAuth::AUTH_SERVER, kTestRealm,
+  http_auth_cache->Add(Origin1(), net::HttpAuth::AUTH_SERVER, kTestRealm,
                        net::HttpAuth::AUTH_SCHEME_BASIC,
                        net::NetworkIsolationKey(), "test challenge",
                        net::AuthCredentials(base::ASCIIToUTF16("foo"),
                                             base::ASCIIToUTF16("bar")),
                        "/");
-  CHECK(http_auth_cache->Lookup(kOrigin1, net::HttpAuth::AUTH_SERVER,
+  CHECK(http_auth_cache->Lookup(Origin1(), net::HttpAuth::AUTH_SERVER,
                                 kTestRealm, net::HttpAuth::AUTH_SCHEME_BASIC,
                                 net::NetworkIsolationKey()));
 
@@ -2455,7 +2462,7 @@
 
   EXPECT_EQ(nullptr,
             http_auth_cache->Lookup(
-                kOrigin1, net::HttpAuth::AUTH_SERVER, kTestRealm,
+                Origin1(), net::HttpAuth::AUTH_SERVER, kTestRealm,
                 net::HttpAuth::AUTH_SCHEME_BASIC, net::NetworkIsolationKey()));
 }
 
@@ -2475,24 +2482,24 @@
   {
     // Test REMOVE_HISTORY.
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin1, ContentSettingsType::GEOLOCATION));
+        Origin1(), ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin1, ContentSettingsType::GEOLOCATION));
+        Origin1(), ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin1, ContentSettingsType::NOTIFICATIONS));
+        Origin1(), ContentSettingsType::NOTIFICATIONS));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        kOrigin1, ContentSettingsType::MIDI_SYSEX));
+        Origin1(), ContentSettingsType::MIDI_SYSEX));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin2, ContentSettingsType::DURABLE_STORAGE));
-    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
+        Origin2(), ContentSettingsType::DURABLE_STORAGE));
+    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_ASK);
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        kOrigin2, ContentSettingsType::NOTIFICATIONS));
+        Origin2(), ContentSettingsType::NOTIFICATIONS));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        kOrigin2, ContentSettingsType::NOTIFICATIONS));
+        Origin2(), ContentSettingsType::NOTIFICATIONS));
     EXPECT_TRUE(tester.RecordDismissAndEmbargo(
-        kOrigin2, ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
+        Origin2(), ContentSettingsType::NOTIFICATIONS));
+    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_BLOCK);
 
     BlockUntilOriginDataRemoved(
@@ -2500,18 +2507,18 @@
         ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_USAGE_DATA,
         std::move(filter_builder_1));
 
-    // kOrigin1 should be gone, but kOrigin2 remains.
+    // Origin1() should be gone, but Origin2() remains.
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
+        0, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
+    EXPECT_EQ(0, tester.GetIgnoreCount(Origin1(),
+                                       ContentSettingsType::NOTIFICATIONS));
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
-    EXPECT_EQ(
-        0, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(1, tester.GetIgnoreCount(kOrigin2,
+        0, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(1, tester.GetIgnoreCount(Origin2(),
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(3, tester.GetDismissCount(kOrigin2,
+    EXPECT_EQ(3, tester.GetDismissCount(Origin2(),
                                         ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
+    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_BLOCK);
 
     BlockUntilBrowsingDataRemoved(
@@ -2520,59 +2527,59 @@
 
     // Everything should be gone.
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
+        0, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
+    EXPECT_EQ(0, tester.GetIgnoreCount(Origin1(),
+                                       ContentSettingsType::NOTIFICATIONS));
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
-    EXPECT_EQ(
-        0, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(0, tester.GetIgnoreCount(kOrigin2,
+        0, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(0, tester.GetIgnoreCount(Origin2(),
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(0, tester.GetDismissCount(kOrigin2,
+    EXPECT_EQ(0, tester.GetDismissCount(Origin2(),
                                         ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
+    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_ASK);
   }
   {
     // Test REMOVE_SITE_DATA.
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin1, ContentSettingsType::GEOLOCATION));
+        Origin1(), ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin1, ContentSettingsType::GEOLOCATION));
+        Origin1(), ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin1, ContentSettingsType::NOTIFICATIONS));
+        Origin1(), ContentSettingsType::NOTIFICATIONS));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        kOrigin1, ContentSettingsType::MIDI_SYSEX));
-    tester.CheckEmbargo(kOrigin1, ContentSettingsType::MIDI_SYSEX,
+        Origin1(), ContentSettingsType::MIDI_SYSEX));
+    tester.CheckEmbargo(Origin1(), ContentSettingsType::MIDI_SYSEX,
                         CONTENT_SETTING_ASK);
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        kOrigin2, ContentSettingsType::DURABLE_STORAGE));
+        Origin2(), ContentSettingsType::DURABLE_STORAGE));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        kOrigin2, ContentSettingsType::NOTIFICATIONS));
+        Origin2(), ContentSettingsType::NOTIFICATIONS));
 
     BlockUntilOriginDataRemoved(
         AnHourAgo(), base::Time::Max(),
         ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_USAGE_DATA,
         std::move(filter_builder_2));
 
-    // kOrigin2 should be gone, but kOrigin1 remains.
+    // Origin2() should be gone, but Origin1() remains.
     EXPECT_EQ(
-        2, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
+        2, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
+    EXPECT_EQ(1, tester.GetIgnoreCount(Origin1(),
+                                       ContentSettingsType::NOTIFICATIONS));
     EXPECT_EQ(
-        1, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
-    EXPECT_EQ(
-        1, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(0, tester.GetIgnoreCount(kOrigin2,
+        1, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(0, tester.GetIgnoreCount(Origin2(),
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(0, tester.GetDismissCount(kOrigin2,
+    EXPECT_EQ(0, tester.GetDismissCount(Origin2(),
                                         ContentSettingsType::NOTIFICATIONS));
 
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        kOrigin1, ContentSettingsType::MIDI_SYSEX));
+        Origin1(), ContentSettingsType::MIDI_SYSEX));
     EXPECT_TRUE(tester.RecordDismissAndEmbargo(
-        kOrigin1, ContentSettingsType::MIDI_SYSEX));
+        Origin1(), ContentSettingsType::MIDI_SYSEX));
     EXPECT_EQ(
-        3, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
-    tester.CheckEmbargo(kOrigin1, ContentSettingsType::MIDI_SYSEX,
+        3, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
+    tester.CheckEmbargo(Origin1(), ContentSettingsType::MIDI_SYSEX,
                         CONTENT_SETTING_BLOCK);
 
     BlockUntilBrowsingDataRemoved(
@@ -2581,16 +2588,16 @@
 
     // Everything should be gone.
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
+        0, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
+    EXPECT_EQ(0, tester.GetIgnoreCount(Origin1(),
+                                       ContentSettingsType::NOTIFICATIONS));
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
-    EXPECT_EQ(
-        0, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(0, tester.GetIgnoreCount(kOrigin2,
+        0, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(0, tester.GetIgnoreCount(Origin2(),
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(0, tester.GetDismissCount(kOrigin2,
+    EXPECT_EQ(0, tester.GetDismissCount(Origin2(),
                                         ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(kOrigin1, ContentSettingsType::MIDI_SYSEX,
+    tester.CheckEmbargo(Origin1(), ContentSettingsType::MIDI_SYSEX,
                         CONTENT_SETTING_ASK);
   }
 }
@@ -2610,21 +2617,21 @@
         ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY}) {
     FlashContentSettingsChangeWaiter waiter(GetProfile());
     host_content_settings_map->SetContentSettingDefaultScope(
-        kOrigin1, kOrigin1, ContentSettingsType::PLUGINS, std::string(),
+        Origin1(), Origin1(), ContentSettingsType::PLUGINS, std::string(),
         CONTENT_SETTING_ALLOW);
     host_content_settings_map->SetContentSettingDefaultScope(
-        kOrigin2, kOrigin2, ContentSettingsType::PLUGINS, std::string(),
+        Origin2(), Origin2(), ContentSettingsType::PLUGINS, std::string(),
         CONTENT_SETTING_BLOCK);
     waiter.Wait();
 
     // Check that as a result, the PLUGINS_DATA prefs were populated.
     EXPECT_NE(nullptr,
               host_content_settings_map->GetWebsiteSetting(
-                  kOrigin1, kOrigin1, ContentSettingsType::PLUGINS_DATA,
+                  Origin1(), Origin1(), ContentSettingsType::PLUGINS_DATA,
                   std::string(), nullptr));
     EXPECT_NE(nullptr,
               host_content_settings_map->GetWebsiteSetting(
-                  kOrigin2, kOrigin2, ContentSettingsType::PLUGINS_DATA,
+                  Origin2(), Origin2(), ContentSettingsType::PLUGINS_DATA,
                   std::string(), nullptr));
 
     std::unique_ptr<BrowsingDataFilterBuilder> filter(
@@ -2634,11 +2641,11 @@
                                 std::move(filter));
     EXPECT_EQ(nullptr,
               host_content_settings_map->GetWebsiteSetting(
-                  kOrigin1, kOrigin1, ContentSettingsType::PLUGINS_DATA,
+                  Origin1(), Origin1(), ContentSettingsType::PLUGINS_DATA,
                   std::string(), nullptr));
     EXPECT_EQ(nullptr,
               host_content_settings_map->GetWebsiteSetting(
-                  kOrigin2, kOrigin2, ContentSettingsType::PLUGINS_DATA,
+                  Origin2(), Origin2(), ContentSettingsType::PLUGINS_DATA,
                   std::string(), nullptr));
   }
 }
@@ -2646,15 +2653,15 @@
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemovePluginData) {
   RemovePluginDataTester tester(GetProfile());
 
-  tester.AddDomain(kOrigin1.host());
-  tester.AddDomain(kOrigin2.host());
-  tester.AddDomain(kOrigin3.host());
+  tester.AddDomain(Origin1().host());
+  tester.AddDomain(Origin2().host());
+  tester.AddDomain(Origin3().host());
 
-  std::vector<std::string> expected = {
-      kOrigin1.host(), kOrigin2.host(), kOrigin3.host() };
+  std::vector<std::string> expected = {Origin1().host(), Origin2().host(),
+                                       Origin3().host()};
   EXPECT_EQ(expected, tester.GetDomains());
 
-  // Delete data with a filter for the registrable domain of |kOrigin3|.
+  // Delete data with a filter for the registrable domain of |Origin3()|.
   std::unique_ptr<BrowsingDataFilterBuilder> filter_builder(
       BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST));
   filter_builder->AddRegisterableDomain(kTestRegisterableDomain3);
@@ -2663,7 +2670,7 @@
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA,
       std::move(filter_builder));
 
-  // Plugin data for |kOrigin3.host()| should have been removed.
+  // Plugin data for |Origin3().host()| should have been removed.
   expected.pop_back();
   EXPECT_EQ(expected, tester.GetDomains());
 
@@ -2710,67 +2717,68 @@
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, OriginTypeMasks) {
   scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
       new MockExtensionSpecialStoragePolicy;
-  // Protect kOrigin1.
-  mock_policy->AddProtected(kOrigin1.GetOrigin());
+  // Protect Origin1().
+  mock_policy->AddProtected(Origin1().GetOrigin());
 
-  EXPECT_FALSE(Match(kOrigin1, kUnprotected, mock_policy.get()));
-  EXPECT_TRUE(Match(kOrigin2, kUnprotected, mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginExt, kUnprotected, mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginDevTools, kUnprotected, mock_policy.get()));
+  EXPECT_FALSE(Match(Origin1(), kUnprotected, mock_policy.get()));
+  EXPECT_TRUE(Match(Origin2(), kUnprotected, mock_policy.get()));
+  EXPECT_FALSE(Match(OriginExt(), kUnprotected, mock_policy.get()));
+  EXPECT_FALSE(Match(OriginDevTools(), kUnprotected, mock_policy.get()));
 
-  EXPECT_TRUE(Match(kOrigin1, kProtected, mock_policy.get()));
-  EXPECT_FALSE(Match(kOrigin2, kProtected, mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginExt, kProtected, mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginDevTools, kProtected, mock_policy.get()));
+  EXPECT_TRUE(Match(Origin1(), kProtected, mock_policy.get()));
+  EXPECT_FALSE(Match(Origin2(), kProtected, mock_policy.get()));
+  EXPECT_FALSE(Match(OriginExt(), kProtected, mock_policy.get()));
+  EXPECT_FALSE(Match(OriginDevTools(), kProtected, mock_policy.get()));
 
-  EXPECT_FALSE(Match(kOrigin1, kExtension, mock_policy.get()));
-  EXPECT_FALSE(Match(kOrigin2, kExtension, mock_policy.get()));
-  EXPECT_TRUE(Match(kOriginExt, kExtension, mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginDevTools, kExtension, mock_policy.get()));
+  EXPECT_FALSE(Match(Origin1(), kExtension, mock_policy.get()));
+  EXPECT_FALSE(Match(Origin2(), kExtension, mock_policy.get()));
+  EXPECT_TRUE(Match(OriginExt(), kExtension, mock_policy.get()));
+  EXPECT_FALSE(Match(OriginDevTools(), kExtension, mock_policy.get()));
 
-  EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected, mock_policy.get()));
-  EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected, mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginExt, kUnprotected | kProtected, mock_policy.get()));
+  EXPECT_TRUE(Match(Origin1(), kUnprotected | kProtected, mock_policy.get()));
+  EXPECT_TRUE(Match(Origin2(), kUnprotected | kProtected, mock_policy.get()));
   EXPECT_FALSE(
-      Match(kOriginDevTools, kUnprotected | kProtected, mock_policy.get()));
-
-  EXPECT_FALSE(Match(kOrigin1, kUnprotected | kExtension, mock_policy.get()));
-  EXPECT_TRUE(Match(kOrigin2, kUnprotected | kExtension, mock_policy.get()));
-  EXPECT_TRUE(Match(kOriginExt, kUnprotected | kExtension, mock_policy.get()));
+      Match(OriginExt(), kUnprotected | kProtected, mock_policy.get()));
   EXPECT_FALSE(
-      Match(kOriginDevTools, kUnprotected | kExtension, mock_policy.get()));
+      Match(OriginDevTools(), kUnprotected | kProtected, mock_policy.get()));
 
-  EXPECT_TRUE(Match(kOrigin1, kProtected | kExtension, mock_policy.get()));
-  EXPECT_FALSE(Match(kOrigin2, kProtected | kExtension, mock_policy.get()));
-  EXPECT_TRUE(Match(kOriginExt, kProtected | kExtension, mock_policy.get()));
+  EXPECT_FALSE(Match(Origin1(), kUnprotected | kExtension, mock_policy.get()));
+  EXPECT_TRUE(Match(Origin2(), kUnprotected | kExtension, mock_policy.get()));
+  EXPECT_TRUE(Match(OriginExt(), kUnprotected | kExtension, mock_policy.get()));
   EXPECT_FALSE(
-      Match(kOriginDevTools, kProtected | kExtension, mock_policy.get()));
+      Match(OriginDevTools(), kUnprotected | kExtension, mock_policy.get()));
 
-  EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected | kExtension,
+  EXPECT_TRUE(Match(Origin1(), kProtected | kExtension, mock_policy.get()));
+  EXPECT_FALSE(Match(Origin2(), kProtected | kExtension, mock_policy.get()));
+  EXPECT_TRUE(Match(OriginExt(), kProtected | kExtension, mock_policy.get()));
+  EXPECT_FALSE(
+      Match(OriginDevTools(), kProtected | kExtension, mock_policy.get()));
+
+  EXPECT_TRUE(Match(Origin1(), kUnprotected | kProtected | kExtension,
                     mock_policy.get()));
-  EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected | kExtension,
+  EXPECT_TRUE(Match(Origin2(), kUnprotected | kProtected | kExtension,
                     mock_policy.get()));
-  EXPECT_TRUE(Match(kOriginExt, kUnprotected | kProtected | kExtension,
+  EXPECT_TRUE(Match(OriginExt(), kUnprotected | kProtected | kExtension,
                     mock_policy.get()));
-  EXPECT_FALSE(Match(kOriginDevTools, kUnprotected | kProtected | kExtension,
+  EXPECT_FALSE(Match(OriginDevTools(), kUnprotected | kProtected | kExtension,
                      mock_policy.get()));
 }
 #endif
 
 // If extensions are disabled, there is no policy.
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, OriginTypeMasksNoPolicy) {
-  EXPECT_TRUE(Match(kOrigin1, kUnprotected, nullptr));
-  EXPECT_FALSE(Match(kOriginExt, kUnprotected, nullptr));
-  EXPECT_FALSE(Match(kOriginDevTools, kUnprotected, nullptr));
+  EXPECT_TRUE(Match(Origin1(), kUnprotected, nullptr));
+  EXPECT_FALSE(Match(OriginExt(), kUnprotected, nullptr));
+  EXPECT_FALSE(Match(OriginDevTools(), kUnprotected, nullptr));
 
-  EXPECT_FALSE(Match(kOrigin1, kProtected, nullptr));
-  EXPECT_FALSE(Match(kOriginExt, kProtected, nullptr));
-  EXPECT_FALSE(Match(kOriginDevTools, kProtected, nullptr));
+  EXPECT_FALSE(Match(Origin1(), kProtected, nullptr));
+  EXPECT_FALSE(Match(OriginExt(), kProtected, nullptr));
+  EXPECT_FALSE(Match(OriginDevTools(), kProtected, nullptr));
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-  EXPECT_FALSE(Match(kOrigin1, kExtension, nullptr));
-  EXPECT_TRUE(Match(kOriginExt, kExtension, nullptr));
-  EXPECT_FALSE(Match(kOriginDevTools, kExtension, nullptr));
+  EXPECT_FALSE(Match(Origin1(), kExtension, nullptr));
+  EXPECT_TRUE(Match(OriginExt(), kExtension, nullptr));
+  EXPECT_FALSE(Match(OriginDevTools(), kExtension, nullptr));
 #endif
 }
 
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc
index 6852c192..e09cbeb 100644
--- a/chrome/browser/captive_portal/captive_portal_browsertest.cc
+++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc
@@ -28,17 +28,21 @@
 #include "base/test/bind_test_util.h"
 #include "base/values.h"
 #include "build/build_config.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/captive_portal/captive_portal_tab_helper.h"
 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h"
 #include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/net/dns_util.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ssl/ssl_error_handler.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/browser_navigator_params.h"
+#include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/navigation_correction_tab_observer.h"
 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
@@ -84,6 +88,10 @@
 #include "net/url_request/url_request_status.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+#if defined(OS_WIN)
+#include "base/win/win_util.h"
+#endif
+
 using captive_portal::CaptivePortalResult;
 using content::BrowserThread;
 using content::WebContents;
@@ -162,6 +170,11 @@
   return kServerRedirectBase + dest_url;
 }
 
+// Returns the total number of tabs across all Browsers, for all Profiles.
+int NumTabs() {
+  return std::distance(AllTabContentses().begin(), AllTabContentses().end());
+}
+
 // Returns the total number of loading tabs across all Browsers, for all
 // Profiles.
 int NumLoadingTabs() {
@@ -633,15 +646,18 @@
   // captive portal test is complete.
   //
   // If |expect_open_login_tab| is true, a login tab is then expected to be
-  // opened. It waits until both the login tab has finished loading, and two
-  // captive portal tests complete.  The second test is triggered by the load of
-  // the captive portal tab completing.
+  // opened. If |expect_new_login_browser| is true, this tab is expected to be
+  // opened in a new captive portal popup window.  It waits until both the
+  // login tab has finished loading, and two captive portal tests complete.
+  // The second test is triggered by the load of the captive portal tab
+  // completing.
   //
   // This function must not be called when the active tab is currently loading.
   // Waits for the hanging request to be issued, so other functions can rely
   // on WaitForJobs having been called.
   void SlowLoadBehindCaptivePortal(Browser* browser,
-                                   bool expect_open_login_tab);
+                                   bool expect_open_login_tab,
+                                   bool expect_new_login_browser);
 
   // Same as above, but takes extra parameters.
   //
@@ -652,6 +668,7 @@
   // ignored when |expect_open_login_tab| is false.
   void SlowLoadBehindCaptivePortal(Browser* browser,
                                    bool expect_open_login_tab,
+                                   bool expect_new_login_browser,
                                    const GURL& hanging_url,
                                    int expected_portal_checks,
                                    int expected_login_tab_navigations);
@@ -686,9 +703,12 @@
   // Simulates a login by updating the URLRequestMockCaptivePortalJob's
   // behind captive portal state, and navigating the login tab.  Waits for
   // all broken but not loading tabs to be reloaded.
+  // |captive-portal_browser| is the browser containing the login page.
   // |num_loading_tabs| and |num_timed_out_tabs| are used as extra checks
   // that nothing has gone wrong prior to the function call.
-  void Login(Browser* browser, int num_loading_tabs, int num_timed_out_tabs);
+  void Login(Browser* captive_portal_browser,
+             int num_loading_tabs,
+             int num_timed_out_tabs);
 
   // Simulates a login when the broken tab shows an SSL or captive portal
   // interstitial. Can't use Login() in those cases because the interstitial
@@ -876,6 +896,7 @@
   std::vector<content::URLLoaderInterceptor::RequestParams>
       ongoing_mock_requests_;
   std::atomic<bool> behind_captive_portal_;
+  const BrowserList* browser_list_;
   bool intercept_bad_cert_ = true;
 
  private:
@@ -883,7 +904,7 @@
 };
 
 CaptivePortalBrowserTest::CaptivePortalBrowserTest()
-    : behind_captive_portal_(true) {
+    : behind_captive_portal_(true), browser_list_(BrowserList::GetInstance()) {
   NavigationCorrectionTabObserver::SetAllowEnableCorrectionsForTesting(true);
 }
 
@@ -892,6 +913,12 @@
 }
 
 void CaptivePortalBrowserTest::SetUpOnMainThread() {
+  // Mark as not enterprise managed to prevent the secure DNS mode from
+  // being downgraded to off.
+#if defined(OS_WIN)
+  base::win::ScopedDomainStateForTesting scoped_domain(false);
+#endif
+
   url_loader_interceptor_ =
       std::make_unique<content::URLLoaderInterceptor>(base::Bind(
           &CaptivePortalBrowserTest::OnIntercept, base::Unretained(this)));
@@ -1236,17 +1263,17 @@
 
 void CaptivePortalBrowserTest::SlowLoadBehindCaptivePortal(
     Browser* browser,
-    bool expect_open_login_tab) {
-  SlowLoadBehindCaptivePortal(browser,
-                              expect_open_login_tab,
-                              GURL(kMockHttpsUrl),
-                              1,
+    bool expect_open_login_tab,
+    bool expect_new_login_browser = false) {
+  SlowLoadBehindCaptivePortal(browser, expect_open_login_tab,
+                              expect_new_login_browser, GURL(kMockHttpsUrl), 1,
                               1);
 }
 
 void CaptivePortalBrowserTest::SlowLoadBehindCaptivePortal(
     Browser* browser,
     bool expect_open_login_tab,
+    bool expect_new_login_browser,
     const GURL& hanging_url,
     int expected_portal_checks,
     int expected_login_tab_navigations) {
@@ -1268,6 +1295,7 @@
   int initial_active_index = tab_strip_model->active_index();
   int initial_loading_tabs = NumLoadingTabs();
   int expected_broken_tabs = NumBrokenTabs();
+  size_t initial_browser_count = browser_list_->size();
   if (CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL !=
           GetStateOfTabReloader(tab_strip_model->GetActiveWebContents())) {
     ++expected_broken_tabs;
@@ -1282,19 +1310,39 @@
 
   if (expect_open_login_tab) {
     ASSERT_GE(expected_login_tab_navigations, 1);
-
     navigation_observer.WaitForNavigations(expected_login_tab_navigations);
+    WebContents* login_tab;
 
-    ASSERT_EQ(initial_tab_count + 1, tab_strip_model->count());
-    EXPECT_EQ(initial_tab_count, tab_strip_model->active_index());
+    if (expect_new_login_browser) {
+      ASSERT_EQ(initial_browser_count + 1, browser_list_->size());
+
+      // Check the original browser
+      ASSERT_EQ(initial_tab_count, tab_strip_model->count());
+      EXPECT_EQ(initial_tab_count - 1, tab_strip_model->active_index());
+      EXPECT_NE(browser_list_->get(initial_browser_count - 1),
+                browser_list_->GetLastActive());
+
+      // Check the new popup browser
+      Browser* popup_browser = browser_list_->get(initial_browser_count);
+      EXPECT_EQ(popup_browser, browser_list_->GetLastActive());
+      EXPECT_EQ(Browser::TYPE_POPUP, popup_browser->type());
+      login_tab = popup_browser->tab_strip_model()->GetWebContentsAt(0);
+      EXPECT_TRUE(CaptivePortalTabHelper::FromWebContents(login_tab)
+                      ->is_captive_portal_window());
+    } else {
+      ASSERT_EQ(initial_browser_count, browser_list_->size());
+      ASSERT_EQ(initial_tab_count + 1, tab_strip_model->count());
+      EXPECT_EQ(initial_tab_count, tab_strip_model->active_index());
+      login_tab = tab_strip_model->GetWebContentsAt(initial_tab_count);
+    }
 
     EXPECT_EQ(expected_login_tab_navigations,
-              navigation_observer.NumNavigationsForTab(
-                  tab_strip_model->GetWebContentsAt(initial_tab_count)));
+              navigation_observer.NumNavigationsForTab(login_tab));
     EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE,
-              GetStateOfTabReloaderAt(browser, 1));
-    EXPECT_TRUE(IsLoginTab(tab_strip_model->GetWebContentsAt(1)));
+              GetStateOfTabReloader(login_tab));
+    EXPECT_TRUE(IsLoginTab(login_tab));
   } else {
+    ASSERT_EQ(initial_browser_count, browser_list_->size());
     EXPECT_EQ(0, navigation_observer.num_navigations());
     EXPECT_EQ(initial_active_index, tab_strip_model->active_index());
     ASSERT_EQ(initial_tab_count, tab_strip_model->count());
@@ -1459,24 +1507,25 @@
                    tab_strip_model->GetWebContentsAt(login_tab_index)));
 }
 
-void CaptivePortalBrowserTest::Login(Browser* browser,
+void CaptivePortalBrowserTest::Login(Browser* captive_portal_browser,
                                      int num_loading_tabs,
                                      int num_timed_out_tabs) {
   // Simulate logging in.
   SetBehindCaptivePortal(false);
 
   MultiNavigationObserver navigation_observer;
-  CaptivePortalObserver portal_observer(browser->profile());
+  CaptivePortalObserver portal_observer(captive_portal_browser->profile());
 
-  TabStripModel* tab_strip_model = browser->tab_strip_model();
-  int initial_tab_count = tab_strip_model->count();
+  TabStripModel* tab_strip_model = captive_portal_browser->tab_strip_model();
+  size_t initial_browser_count = browser_list_->size();
+  int initial_tab_count = NumTabs();
   ASSERT_EQ(num_loading_tabs, NumLoadingTabs());
   EXPECT_EQ(num_timed_out_tabs, NumBrokenTabs() - NumLoadingTabs());
 
   // Verify that the login page is on top.
   int login_tab_index = tab_strip_model->active_index();
   EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE,
-            GetStateOfTabReloaderAt(browser, login_tab_index));
+            GetStateOfTabReloaderAt(captive_portal_browser, login_tab_index));
   ASSERT_TRUE(IsLoginTab(tab_strip_model->GetWebContentsAt(login_tab_index)));
 
   // Trigger a navigation.
@@ -1496,9 +1545,10 @@
 
   // Make sure that the broken tabs have reloaded, and there's no more
   // captive portal tab.
-  EXPECT_EQ(initial_tab_count, tab_strip_model->count());
+  EXPECT_EQ(initial_browser_count, browser_list_->size());
+  EXPECT_EQ(initial_tab_count, NumTabs());
   EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE,
-            GetStateOfTabReloaderAt(browser, login_tab_index));
+            GetStateOfTabReloaderAt(captive_portal_browser, login_tab_index));
   EXPECT_FALSE(IsLoginTab(tab_strip_model->GetWebContentsAt(login_tab_index)));
 
   // Make sure there were no unexpected navigations of the login tab.
@@ -1588,8 +1638,9 @@
   ASSERT_EQ(0, NumNeedReloadTabs());
   EXPECT_EQ(num_loading_tabs, NumBrokenTabs());
 
-  TabStripModel* tab_strip_model = browser->tab_strip_model();
-  int initial_num_tabs = tab_strip_model->count();
+  Browser* captive_portal_browser = browser_list_->GetLastActive();
+  TabStripModel* tab_strip_model = captive_portal_browser->tab_strip_model();
+  int initial_num_tabs = NumTabs();
   int login_tab = tab_strip_model->active_index();
   EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE,
             GetStateOfTabReloader(tab_strip_model->GetActiveWebContents()));
@@ -1607,7 +1658,7 @@
   // should be no new tabs.
   EXPECT_EQ(0, portal_observer.num_results_received());
   EXPECT_FALSE(CheckPending(browser));
-  EXPECT_EQ(initial_num_tabs, tab_strip_model->count());
+  EXPECT_EQ(initial_num_tabs, NumTabs());
 
   EXPECT_EQ(0, NumNeedReloadTabs());
   EXPECT_EQ(0, NumLoadingTabs());
@@ -1633,7 +1684,9 @@
   SetBehindCaptivePortal(true);
 
   // Go to the first hanging url.
-  SlowLoadBehindCaptivePortal(browser, true, hanging_url, 1, 1);
+  SlowLoadBehindCaptivePortal(browser, true /* expect_open_login_tab */,
+                              false /* is-expect_new_login_browser */,
+                              hanging_url, 1, 1);
 
   // Abandon the request.
   WaitForJobs(1);
@@ -2649,8 +2702,9 @@
 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, HttpToHttpsRedirectLogin) {
   ASSERT_TRUE(embedded_test_server()->Start());
   SlowLoadBehindCaptivePortal(
-      browser(), true, embedded_test_server()->GetURL(kRedirectToMockHttpsPath),
-      1, 1);
+      browser(), true /* expect_open_login_tab */,
+      false /* expect_new_login_browser */,
+      embedded_test_server()->GetURL(kRedirectToMockHttpsPath), 1, 1);
   Login(browser(), 1, 0);
   FailLoadsAfterLogin(browser(), 1);
 }
@@ -2677,7 +2731,9 @@
 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, Status511) {
   SetUpCaptivePortalService(browser()->profile(),
                             GURL(kMockCaptivePortal511Url));
-  SlowLoadBehindCaptivePortal(browser(), true, GURL(kMockHttpsUrl), 2, 2);
+  SlowLoadBehindCaptivePortal(browser(), true /* expect_open_login_tab */,
+                              false /* expect_new_login_browser */,
+                              GURL(kMockHttpsUrl), 2, 2);
   Login(browser(), 1, 0);
   FailLoadsAfterLogin(browser(), 1);
 }
@@ -2704,7 +2760,9 @@
   TabStripModel* tab_strip_model = browser()->tab_strip_model();
   int broken_tab_index = tab_strip_model->active_index();
   WebContents* broken_tab_contents = tab_strip_model->GetActiveWebContents();
-  SlowLoadBehindCaptivePortal(browser(), true, cert_error_url, 1, 1);
+  SlowLoadBehindCaptivePortal(browser(), true /* expect_open_login_tab */,
+                              false /* expect_new_login_browser */,
+                              cert_error_url, 1, 1);
 
   // No longer behind a captive portal. Committing the SSL page should trigger
   // an SSL interstitial which triggers a new captive portal check. Since there
@@ -2731,3 +2789,34 @@
   EXPECT_EQ(SSLBlockingPage::kTypeForTesting,
             GetInterstitialType(broken_tab_contents));
 }
+
+IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, SecureDnsCaptivePortal) {
+  PrefService* local_state = g_browser_process->local_state();
+  local_state->SetString(prefs::kDnsOverHttpsMode,
+                         chrome_browser_net::kDnsOverHttpsModeSecure);
+  local_state->SetString(prefs::kDnsOverHttpsTemplates,
+                         "https://bar.test/dns-query{?dns}");
+
+  SlowLoadBehindCaptivePortal(browser(), true /* expect_open_login_tab */,
+                              true /* expect_new_login_browser */);
+  FailLoadsWithoutLogin(browser(), 1);
+
+  // A second navigation on the same tab should not cause a new captive portal
+  // window to open.
+  SlowLoadBehindCaptivePortal(browser(), false /* expect_open_login_tab */,
+                              false /* expect_new_login_browser */);
+
+  // A navigation in a new tab should not cause a new captive portal window to
+  // open.
+  Browser* second_user_browser = CreateBrowser(browser()->profile());
+  // Check that new window is visible.
+  EXPECT_TRUE(second_user_browser->window()->IsVisible());
+  SlowLoadBehindCaptivePortal(second_user_browser,
+                              false /* expect_open_login_tab */,
+                              false /* expect_new_login_browser */);
+  // Check that the existing captive portal popup is visible.
+  EXPECT_TRUE(browser_list_->get(1)->window()->IsVisible());
+
+  // Login to the captive portal.
+  Login(browser_list_->get(1), 2, 0);
+}
diff --git a/chrome/browser/captive_portal/captive_portal_tab_helper.cc b/chrome/browser/captive_portal/captive_portal_tab_helper.cc
index e50faf31..66dace9 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_helper.cc
+++ b/chrome/browser/captive_portal/captive_portal_tab_helper.cc
@@ -6,14 +6,18 @@
 
 #include "base/bind.h"
 #include "base/debug/dump_without_crashing.h"
+#include "chrome/browser/browser_process.h"
 #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/net/system_network_context_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_tabstrip.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
@@ -26,6 +30,7 @@
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/web_contents.h"
 #include "net/base/net_errors.h"
+#include "net/dns/dns_config.h"
 #include "net/ssl/ssl_info.h"
 
 using captive_portal::CaptivePortalResult;
@@ -161,6 +166,48 @@
   if (!browser)
     return;
 
+  bool insecure_stub_resolver_enabled;
+  net::DnsConfig::SecureDnsMode secure_dns_mode;
+  base::Optional<std::vector<network::mojom::DnsOverHttpsServerPtr>>
+      dns_over_https_servers;
+  SystemNetworkContextManager::GetStubResolverConfig(
+      g_browser_process->local_state(), &insecure_stub_resolver_enabled,
+      &secure_dns_mode, &dns_over_https_servers);
+
+  // If the DNS mode is SECURE, captive portal login tabs should be opened in
+  // new popup windows where secure DNS will be disabled.
+  if (secure_dns_mode == net::DnsConfig::SecureDnsMode::SECURE) {
+    // If there is already a captive portal popup window, do not create another.
+    for (auto* contents : AllTabContentses()) {
+      CaptivePortalTabHelper* captive_portal_tab_helper =
+          CaptivePortalTabHelper::FromWebContents(contents);
+      if (captive_portal_tab_helper->IsLoginTab()) {
+        Browser* browser_with_login_tab =
+            chrome::FindBrowserWithWebContents(contents);
+        browser_with_login_tab->window()->Show();
+        browser_with_login_tab->tab_strip_model()->ActivateTabAt(
+            browser_with_login_tab->tab_strip_model()->GetIndexOfWebContents(
+                contents));
+        return;
+      }
+    }
+
+    // Otherwise, create a captive portal popup window.
+    NavigateParams params(
+        browser,
+        CaptivePortalServiceFactory::GetForProfile(browser->profile())
+            ->test_url(),
+        ui::PAGE_TRANSITION_TYPED);
+    params.disposition = WindowOpenDisposition::NEW_POPUP;
+    Navigate(&params);
+    content::WebContents* new_contents = params.navigated_or_inserted_contents;
+    CaptivePortalTabHelper* captive_portal_tab_helper =
+        CaptivePortalTabHelper::FromWebContents(new_contents);
+    captive_portal_tab_helper->set_is_captive_portal_window();
+    captive_portal_tab_helper->SetIsLoginTab();
+    return;
+  }
+
   // Check if the Profile's topmost browser window already has a login tab.
   // If so, do nothing.
   // TODO(mmenke):  Consider focusing that tab, at least if this is the tab
diff --git a/chrome/browser/chromeos/events/event_rewriter_unittest.cc b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
index d1466ec..02856f2 100644
--- a/chrome/browser/chromeos/events/event_rewriter_unittest.cc
+++ b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
@@ -2025,13 +2025,10 @@
     CheckKeyTestCase(rewriter_, test);
 }
 
-TEST_F(EventRewriterTest, TestRewriteFunctionKeysLayout3) {
+TEST_F(EventRewriterTest, TestRewriteFunctionKeysWilcoLayouts) {
   chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
-  rewriter_->KeyboardDeviceAddedForTesting(
-      kKeyboardDeviceId, "PC Keyboard",
-      ui::EventRewriterChromeOS::kKbdTopRowLayoutWilco);
 
-  KeyTestCase tests[] = {
+  KeyTestCase wilcoStandardTests[] = {
       // F1 -> F1, Search + F1 -> Back
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_F1, ui::DomCode::F1, ui::EF_NONE, ui::DomKey::F1},
@@ -2184,21 +2181,6 @@
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_F11, ui::DomCode::F11, ui::EF_ALT_DOWN, ui::DomKey::F11},
        {ui::VKEY_F11, ui::DomCode::F11, ui::EF_ALT_DOWN, ui::DomKey::F11}},
-      // F12 -> F12, Search + F12 -> Ctrl + Launch App 2 (Display toggle)
-      {ui::ET_KEY_PRESSED,
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12},
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}},
-      {ui::ET_KEY_PRESSED,
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_COMMAND_DOWN, ui::DomKey::F12},
-       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::F12, ui::EF_CONTROL_DOWN,
-        ui::DomKey::F12}},
-      {ui::ET_KEY_PRESSED,
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_CONTROL_DOWN, ui::DomKey::F12},
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_CONTROL_DOWN, ui::DomKey::F12}},
-      {ui::ET_KEY_PRESSED,
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_ALT_DOWN, ui::DomKey::F12},
-       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_ALT_DOWN, ui::DomKey::F12}},
-
       // The number row should not be rewritten without Search key.
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_1, ui::DomCode::DIGIT1, ui::EF_NONE,
@@ -2312,17 +2294,65 @@
         ui::DomKey::Constant<'='>::Character},
        {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}}};
 
-  for (const auto& test : tests)
-    CheckKeyTestCase(rewriter_, test);
-}
+  KeyTestCase wilco1Tests[] = {
+      // F12 -> F12, Search + F12 -> Ctrl + Launch App 2 (Display toggle)
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_COMMAND_DOWN, ui::DomKey::F12},
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::F12, ui::EF_CONTROL_DOWN,
+        ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_CONTROL_DOWN, ui::DomKey::F12},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_CONTROL_DOWN, ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_ALT_DOWN, ui::DomKey::F12},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_ALT_DOWN, ui::DomKey::F12}}};
 
-TEST_F(EventRewriterTest, TestRewriteActionKeysLayout3) {
-  chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
+  KeyTestCase drallionTests[] = {
+      // F12 -> F12, Search + F12 -> Privacy Screen Toggle
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_COMMAND_DOWN, ui::DomKey::F12},
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_NONE, ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_CONTROL_DOWN, ui::DomKey::F12},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_CONTROL_DOWN, ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_ALT_DOWN, ui::DomKey::F12},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_ALT_DOWN, ui::DomKey::F12}}};
+
+  // Run key test cases for Wilco 1.0 keyboard layout
   rewriter_->KeyboardDeviceAddedForTesting(
       kKeyboardDeviceId, "PC Keyboard",
       ui::EventRewriterChromeOS::kKbdTopRowLayoutWilco);
+  // Standard key tests using Wilco 1.0 keyboard
+  for (const auto& test : wilcoStandardTests)
+    CheckKeyTestCase(rewriter_, test);
+  // Wilco 1.0 specific key tests
+  for (const auto& test : wilco1Tests)
+    CheckKeyTestCase(rewriter_, test);
 
-  KeyTestCase tests[] = {
+  // Run key test cases for Drallion (Wilco 1.5) keyboard layout
+  rewriter_->KeyboardDeviceAddedForTesting(
+      kKeyboardDeviceId, "PC Keyboard",
+      ui::EventRewriterChromeOS::kKbdTopRowLayoutDrallion);
+  // Standard key tests using Drallion keyboard layout
+  for (const auto& test : wilcoStandardTests)
+    CheckKeyTestCase(rewriter_, test);
+  // Drallion specific key tests
+  for (const auto& test : drallionTests)
+    CheckKeyTestCase(rewriter_, test);
+}
+
+TEST_F(EventRewriterTest, TestRewriteActionKeysWilcoLayouts) {
+  chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
+
+  KeyTestCase wilcoStandardTests[] = {
       // Back -> Back, Search + Back -> F1
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_BROWSER_BACK, ui::DomCode::BROWSER_BACK, ui::EF_NONE,
@@ -2426,7 +2456,9 @@
        {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11}},
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11},
-       {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11}},
+       {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11}}};
+
+  KeyTestCase wilco1Tests[] = {
       // Ctrl + Launch App 1 (Display toggle) -> Unchanged
       // Search + Ctrl + Launch App 1 (Display toggle) -> F12
       {ui::ET_KEY_PRESSED,
@@ -2439,15 +2471,56 @@
         ui::EF_COMMAND_DOWN + ui::EF_CONTROL_DOWN, ui::DomKey::F12},
        {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}}};
 
-  for (const auto& test : tests)
-    CheckKeyTestCase(rewriter_, test);
-}
+  KeyTestCase drallionTests[] = {
+      // Privacy Screen Toggle -> Privacy Screen Toggle,
+      // Search + Privacy Screen Toggle -> F12
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_NONE, ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_NONE, ui::DomKey::UNIDENTIFIED}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_COMMAND_DOWN, ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}},
+      // Ctrl + Launch App 1 (Display toggle) -> Unchanged
+      // Search + Ctrl + Launch App 1 (Display toggle) -> Unchanged
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE, ui::EF_CONTROL_DOWN,
+        ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE, ui::EF_CONTROL_DOWN,
+        ui::DomKey::UNIDENTIFIED}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE,
+        ui::EF_COMMAND_DOWN + ui::EF_CONTROL_DOWN, ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE, ui::EF_CONTROL_DOWN,
+        ui::DomKey::UNIDENTIFIED}}};
 
-TEST_F(EventRewriterTest, TestTopRowAsFnKeysForKeyboardLayout3) {
-  chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
+  // Run key test cases for Wilco 1.0 keyboard layout
   rewriter_->KeyboardDeviceAddedForTesting(
       kKeyboardDeviceId, "PC Keyboard",
       ui::EventRewriterChromeOS::kKbdTopRowLayoutWilco);
+  // Standard key tests using Wilco 1.0 keyboard
+  for (const auto& test : wilcoStandardTests)
+    CheckKeyTestCase(rewriter_, test);
+  // Wilco 1.0 specific key tests
+  for (const auto& test : wilco1Tests)
+    CheckKeyTestCase(rewriter_, test);
+
+  // Run key test cases for Drallion (Wilco 1.5) keyboard layout
+  rewriter_->KeyboardDeviceAddedForTesting(
+      kKeyboardDeviceId, "PC Keyboard",
+      ui::EventRewriterChromeOS::kKbdTopRowLayoutDrallion);
+  // Standard key tests using Drallion keyboard layout
+  for (const auto& test : wilcoStandardTests)
+    CheckKeyTestCase(rewriter_, test);
+  // Drallion specific key tests
+  for (const auto& test : drallionTests)
+    CheckKeyTestCase(rewriter_, test);
+}
+
+TEST_F(EventRewriterTest, TestTopRowAsFnKeysForKeyboardWilcoLayouts) {
+  chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
 
   // Enable preference treat-top-row-as-function-keys.
   // That causes action keys to be mapped back to Fn keys, unless the search
@@ -2456,7 +2529,7 @@
   top_row_as_fn_key.Init(prefs::kLanguageSendFunctionKeys, prefs());
   top_row_as_fn_key.SetValue(true);
 
-  KeyTestCase tests[] = {
+  KeyTestCase wilcoStandardTests[] = {
       // Back -> F1, Search + Back -> Back
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_BROWSER_BACK, ui::DomCode::BROWSER_BACK, ui::EF_NONE,
@@ -2560,7 +2633,9 @@
        {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11}},
       {ui::ET_KEY_PRESSED,
        {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11},
-       {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11}},
+       {ui::VKEY_F11, ui::DomCode::F11, ui::EF_NONE, ui::DomKey::F11}}};
+
+  KeyTestCase wilco1Tests[] = {
       // Ctrl + Launch App 1 (Display toggle) -> F12
       // Search + Ctrl + Launch App 1 (Display toggle) -> Unchanged
       {ui::ET_KEY_PRESSED,
@@ -2573,7 +2648,51 @@
        {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::F12, ui::EF_CONTROL_DOWN,
         ui::DomKey::F12}}};
 
-  for (const auto& test : tests)
+  KeyTestCase drallionTests[] = {
+      // Privacy Screen Toggle -> F12,
+      // Search + Privacy Screen Toggle -> Unchanged
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_NONE, ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_F12, ui::DomCode::F12, ui::EF_NONE, ui::DomKey::F12}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_COMMAND_DOWN, ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_PRIVACY_SCREEN_TOGGLE, ui::DomCode::PRIVACY_SCREEN_TOGGLE,
+        ui::EF_NONE, ui::DomKey::UNIDENTIFIED}},
+      // Ctrl + Launch App 1 (Display toggle) -> Unchanged
+      // Search + Ctrl + Launch App 1 (Display toggle) -> Unchanged
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE, ui::EF_CONTROL_DOWN,
+        ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE, ui::EF_CONTROL_DOWN,
+        ui::DomKey::UNIDENTIFIED}},
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE,
+        ui::EF_COMMAND_DOWN + ui::EF_CONTROL_DOWN, ui::DomKey::UNIDENTIFIED},
+       {ui::VKEY_MEDIA_LAUNCH_APP2, ui::DomCode::NONE, ui::EF_CONTROL_DOWN,
+        ui::DomKey::UNIDENTIFIED}}};
+
+  // Run key test cases for Wilco 1.0 keyboard layout
+  rewriter_->KeyboardDeviceAddedForTesting(
+      kKeyboardDeviceId, "PC Keyboard",
+      ui::EventRewriterChromeOS::kKbdTopRowLayoutWilco);
+  // Standard key tests using Wilco 1.0 keyboard
+  for (const auto& test : wilcoStandardTests)
+    CheckKeyTestCase(rewriter_, test);
+  // Wilco 1.0 specific key tests
+  for (const auto& test : wilco1Tests)
+    CheckKeyTestCase(rewriter_, test);
+
+  // Run key test cases for Drallion (Wilco 1.5) keyboard layout
+  rewriter_->KeyboardDeviceAddedForTesting(
+      kKeyboardDeviceId, "PC Keyboard",
+      ui::EventRewriterChromeOS::kKbdTopRowLayoutDrallion);
+  // Standard key tests using Drallion keyboard layout
+  for (const auto& test : wilcoStandardTests)
+    CheckKeyTestCase(rewriter_, test);
+  // Drallion specific key tests
+  for (const auto& test : drallionTests)
     CheckKeyTestCase(rewriter_, test);
 }
 
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
index 2a887c7..0d547fc 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
@@ -18,6 +18,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_resources.h"
+#include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
 #include "chrome/browser/chromeos/login/startup_utils.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
@@ -462,7 +463,8 @@
   const std::string country =
       g_browser_process->local_state()->GetString(prefs::kDemoModeCountry);
   const base::flat_set<std::string> kCountriesWithCustomization(
-      {"de", "dk", "fi", "fr", "jp", "nl", "no", "se"});
+      {"be", "ca", "de", "dk", "es", "fi", "fr", "gb", "ie", "it", "jp", "lu",
+       "nl", "no", "se"});
   if (kCountriesWithCustomization.contains(country))
     return "admin-" + country + "@" + policy::kDemoModeDomain;
   return std::string();
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
index bb63e94..f428360 100644
--- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
+++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
@@ -770,10 +770,10 @@
       }
     }
     const auto& vpd_info = probe_result->vpd_info;
-    if (!vpd_info.is_null()) {
+    if (!vpd_info.is_null() && vpd_info->sku_number.has_value()) {
       em::SystemStatus* const system_status_out =
           response_params_.device_status->mutable_system_status();
-      system_status_out->set_vpd_sku_number(vpd_info->sku_number);
+      system_status_out->set_vpd_sku_number(vpd_info->sku_number.value());
     }
     const auto& battery_info = probe_result->battery_info;
     if (!battery_info.is_null()) {
diff --git a/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc b/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc
index 5d4c8a88..4a6da927 100644
--- a/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc
+++ b/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc
@@ -36,21 +36,9 @@
   }
 ])json";
 
-// Corresponding vector with PrintServers.
-const std::vector<PrintServer> kPrintServersPolicyData1 = {
-    {"id1", GURL("http://192.168.1.5:631"), "MyPrintServer"},
-    {"id2", GURL("https://print-server.intra.example.com:444/ipp/cl2k4"),
-     "Server API"},
-    {"id3", GURL("http://192.168.1.8/bleble/print"), "YaLP"}};
-
 // An example whitelist.
 const std::vector<std::string> kPrintServersPolicyWhitelist1 = {"id3", "idX",
                                                                 "id1"};
-
-// Corresponding vector filtered with the whitelist defined above.
-const std::vector<PrintServer> kPrintServersPolicyData1Whitelist1 = {
-    kPrintServersPolicyData1[0], kPrintServersPolicyData1[2]};
-
 // A different configuration file with print servers.
 constexpr char kPrintServersPolicyJson2[] = R"json(
 [
@@ -61,10 +49,6 @@
   }
 ])json";
 
-// Corresponding vector with PrintServers.
-const std::vector<PrintServer> kPrintServersPolicyData2 = {
-    {"id1", GURL("http://192.168.1.15:631"), "CUPS"}};
-
 // Another configuration file with print servers, this time with invalid URLs.
 constexpr char kPrintServersPolicyJson3[] = R"json(
 [
@@ -102,6 +86,36 @@
   }
 ])json";
 
+PrintServer Server1() {
+  return PrintServer("id1", GURL("http://192.168.1.5:631"), "MyPrintServer");
+}
+
+PrintServer Server2() {
+  return PrintServer(
+      "id2", GURL("https://print-server.intra.example.com:444/ipp/cl2k4"),
+      "Server API");
+}
+
+PrintServer Server3() {
+  return PrintServer("id3", GURL("http://192.168.1.8/bleble/print"), "YaLP");
+}
+
+// Corresponding vector with PrintServers.
+std::vector<PrintServer> PrintServersPolicyData1() {
+  return std::vector<PrintServer>({Server1(), Server2(), Server3()});
+}
+
+// Corresponding vector filtered with the whitelist defined above.
+std::vector<PrintServer> PrintServersPolicyData1Whitelist1() {
+  return std::vector<PrintServer>({Server1(), Server3()});
+}
+
+// Corresponding vector with PrintServers.
+std::vector<PrintServer> PrintServersPolicyData2() {
+  return std::vector<PrintServer>(
+      {{"id1", GURL("http://192.168.1.15:631"), "CUPS"}});
+}
+
 // Corresponding vector with PrintServers. Only two records are included,
 // because other ones are invalid:
 // server_1 - OK
@@ -112,9 +126,11 @@
 // server_6 - invalid URL - forbidden character
 // server_7 - duplicate id
 // server_8 - missing id
-const std::vector<PrintServer> kPrintServersPolicyData3 = {
-    {"1", GURL("http://aaa.bbb.ccc:666/xx"), "server_1"},
-    {"5", GURL("https://aaa.bbb.ccc:666/yy"), "server_5"}};
+std::vector<PrintServer> PrintServersPolicyData3() {
+  return std::vector<PrintServer>(
+      {{"1", GURL("http://aaa.bbb.ccc:666/xx"), "server_1"},
+       {"5", GURL("https://aaa.bbb.ccc:666/yy"), "server_5"}});
+}
 
 // Observer that stores all its calls.
 class TestObserver : public PrintServersProvider::Observer {
@@ -213,7 +229,7 @@
   // now the call from SetData(...) is there also
   ASSERT_EQ(obs.GetCalls().size(), 2u);
   EXPECT_EQ(obs.GetCalls().back().complete, true);
-  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData1);
+  EXPECT_EQ(obs.GetCalls().back().servers, PrintServersPolicyData1());
   external_servers_->RemoveObserver(&obs);
 }
 
@@ -234,9 +250,9 @@
   // both calls from SetData(...) should be reported
   ASSERT_EQ(obs.GetCalls().size(), 3u);
   EXPECT_EQ(obs.GetCalls()[1].complete, false);
-  EXPECT_EQ(obs.GetCalls()[1].servers, kPrintServersPolicyData1);
+  EXPECT_EQ(obs.GetCalls()[1].servers, PrintServersPolicyData1());
   EXPECT_EQ(obs.GetCalls()[2].complete, true);
-  EXPECT_EQ(obs.GetCalls()[2].servers, kPrintServersPolicyData2);
+  EXPECT_EQ(obs.GetCalls()[2].servers, PrintServersPolicyData2());
   external_servers_->RemoveObserver(&obs);
 }
 
@@ -283,7 +299,7 @@
   // next call with results from processed SetData(...)
   ASSERT_EQ(obs.GetCalls().size(), 3u);
   EXPECT_EQ(obs.GetCalls().back().complete, true);
-  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData1);
+  EXPECT_EQ(obs.GetCalls().back().servers, PrintServersPolicyData1());
   external_servers_->RemoveObserver(&obs);
 }
 
@@ -297,7 +313,7 @@
   task_environment_.RunUntilIdle();
   ASSERT_EQ(obs.GetCalls().size(), 2u);
   EXPECT_EQ(obs.GetCalls().back().complete, true);
-  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData3);
+  EXPECT_EQ(obs.GetCalls().back().servers, PrintServersPolicyData3());
   external_servers_->RemoveObserver(&obs);
 }
 
@@ -328,7 +344,7 @@
   // Check the resultant list.
   task_environment_.RunUntilIdle();
   EXPECT_TRUE(obs.GetCalls().back().complete);
-  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData1Whitelist1);
+  EXPECT_EQ(obs.GetCalls().back().servers, PrintServersPolicyData1Whitelist1());
   // The end.
   external_servers_->RemoveObserver(&obs);
 }
diff --git a/chrome/browser/chromeos/printing/printers_sync_bridge.cc b/chrome/browser/chromeos/printing/printers_sync_bridge.cc
index 2db11e9..8ee5622 100644
--- a/chrome/browser/chromeos/printing/printers_sync_bridge.cc
+++ b/chrome/browser/chromeos/printing/printers_sync_bridge.cc
@@ -67,6 +67,24 @@
   return true;
 }
 
+// If |specifics|'s PPD reference has both autoconf and another option selected,
+// we strip the autoconf flag and return true, false otherwise.
+bool ResolveInvalidPpdReference(sync_pb::PrinterSpecifics* specifics) {
+  auto* ppd_ref = specifics->mutable_ppd_reference();
+
+  if (!ppd_ref->autoconf()) {
+    return false;
+  }
+
+  if (!ppd_ref->has_user_supplied_ppd_url() &&
+      !ppd_ref->has_effective_make_and_model()) {
+    return false;
+  }
+
+  ppd_ref->clear_autoconf();
+  return true;
+}
+
 }  // namespace
 
 // Delegate class which helps to manage the ModelTypeStore.
@@ -218,7 +236,13 @@
       // TODO(crbug.com/737809): Remove when all data is expected to have been
       // migrated.
       bool migrated = MigrateMakeAndModel(entry.second.get());
-      if (!base::Contains(sync_entity_ids, local_entity_id) || migrated) {
+
+      // TODO(crbug.com/987869): Remove when all data is expected to have been
+      // resolved.
+      bool resolved = ResolveInvalidPpdReference(entry.second.get());
+
+      if (migrated || resolved ||
+          !base::Contains(sync_entity_ids, local_entity_id)) {
         // Only local objects which were not updated are uploaded.  Objects for
         // which there was a remote copy are overwritten.
         change_processor()->Put(local_entity_id,
diff --git a/chrome/browser/chromeos/proxy_config_service_impl_unittest.cc b/chrome/browser/chromeos/proxy_config_service_impl_unittest.cc
index 59d3a904..4fc0f287 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl_unittest.cc
+++ b/chrome/browser/chromeos/proxy_config_service_impl_unittest.cc
@@ -75,7 +75,7 @@
 
   // Expected outputs from fields of net::ProxyConfig (via IO).
   bool auto_detect;
-  GURL pac_url;
+  std::string pac_url;
   net::ProxyRulesExpectation proxy_rules;
 } tests[] = {
     {
@@ -89,7 +89,7 @@
 
         // Expected result.
         false,                                // auto_detect
-        GURL(),                               // pac_url
+        "",                                   // pac_url
         net::ProxyRulesExpectation::Empty(),  // proxy_rules
     },
 
@@ -104,7 +104,7 @@
 
         // Expected result.
         true,                                 // auto_detect
-        GURL(),                               // pac_url
+        "",                                   // pac_url
         net::ProxyRulesExpectation::Empty(),  // proxy_rules
     },
 
@@ -120,7 +120,7 @@
 
         // Expected result.
         false,                                // auto_detect
-        GURL("http://wpad/wpad.dat"),         // pac_url
+        "http://wpad/wpad.dat",               // pac_url
         net::ProxyRulesExpectation::Empty(),  // proxy_rules
     },
 
@@ -136,7 +136,7 @@
 
         // Expected result.
         false,                                // auto_detect
-        GURL(),                               // pac_url
+        "",                                   // pac_url
         net::ProxyRulesExpectation::Empty(),  // proxy_rules
     },
 
@@ -153,7 +153,7 @@
 
         // Expected result.
         false,                               // auto_detect
-        GURL(),                              // pac_url
+        "",                                  // pac_url
         net::ProxyRulesExpectation::Single(  // proxy_rules
             "www.google.com:80",             // single proxy
             "<local>"),                      // bypass rules
@@ -172,7 +172,7 @@
 
         // Expected result.
         false,                               // auto_detect
-        GURL(),                              // pac_url
+        "",                                  // pac_url
         net::ProxyRulesExpectation::Single(  // proxy_rules
             "www.google.com:99",             // single
             "<local>"),                      // bypass rules
@@ -191,7 +191,7 @@
 
         // Expected result.
         false,                               // auto_detect
-        GURL(),                              // pac_url
+        "",                                  // pac_url
         net::ProxyRulesExpectation::Single(  // proxy_rules
             "www.google.com:99",             // single proxy
             "<local>"),                      // bypass rules
@@ -211,7 +211,7 @@
 
         // Expected result.
         false,                                           // auto_detect
-        GURL(),                                          // pac_url
+        "",                                              // pac_url
         net::ProxyRulesExpectation::PerSchemeWithSocks(  // proxy_rules
             "www.google.com:80",                         // http
             "https://www.foo.com:110",                   // https
@@ -235,7 +235,7 @@
 
         // Expected result.
         false,                               // auto_detect
-        GURL(),                              // pac_url
+        "",                                  // pac_url
         net::ProxyRulesExpectation::Single(  // proxy_rules
             "www.google.com:80",             // single proxy
                                              // bypass_rules
@@ -411,7 +411,7 @@
     SyncGetLatestProxyConfig(&config);
 
     EXPECT_EQ(tests[i].auto_detect, config.value().auto_detect());
-    EXPECT_EQ(tests[i].pac_url, config.value().pac_url());
+    EXPECT_EQ(GURL(tests[i].pac_url), config.value().pac_url());
     EXPECT_TRUE(tests[i].proxy_rules.Matches(config.value().proxy_rules()));
   }
 }
@@ -470,7 +470,7 @@
     net::ProxyConfigWithAnnotation actual_config;
     SyncGetLatestProxyConfig(&actual_config);
     EXPECT_EQ(managed_params.auto_detect, actual_config.value().auto_detect());
-    EXPECT_EQ(managed_params.pac_url, actual_config.value().pac_url());
+    EXPECT_EQ(GURL(managed_params.pac_url), actual_config.value().pac_url());
     EXPECT_TRUE(managed_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
 
@@ -480,7 +480,8 @@
     SyncGetLatestProxyConfig(&actual_config);
     EXPECT_EQ(recommended_params.auto_detect,
               actual_config.value().auto_detect());
-    EXPECT_EQ(recommended_params.pac_url, actual_config.value().pac_url());
+    EXPECT_EQ(GURL(recommended_params.pac_url),
+              actual_config.value().pac_url());
     EXPECT_TRUE(recommended_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
 
@@ -488,7 +489,7 @@
     SetUserConfigInShill(&network_config);
     SyncGetLatestProxyConfig(&actual_config);
     EXPECT_EQ(network_params.auto_detect, actual_config.value().auto_detect());
-    EXPECT_EQ(network_params.pac_url, actual_config.value().pac_url());
+    EXPECT_EQ(GURL(network_params.pac_url), actual_config.value().pac_url());
     EXPECT_TRUE(network_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
 
@@ -497,7 +498,7 @@
                                  managed_config.CreateDeepCopy());
     SyncGetLatestProxyConfig(&actual_config);
     EXPECT_EQ(managed_params.auto_detect, actual_config.value().auto_detect());
-    EXPECT_EQ(managed_params.pac_url, actual_config.value().pac_url());
+    EXPECT_EQ(GURL(managed_params.pac_url), actual_config.value().pac_url());
     EXPECT_TRUE(managed_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
 
@@ -506,7 +507,7 @@
     pref_service_.RemoveManagedPref(::proxy_config::prefs::kProxy);
     SyncGetLatestProxyConfig(&actual_config);
     EXPECT_EQ(network_params.auto_detect, actual_config.value().auto_detect());
-    EXPECT_EQ(network_params.pac_url, actual_config.value().pac_url());
+    EXPECT_EQ(GURL(network_params.pac_url), actual_config.value().pac_url());
     EXPECT_TRUE(network_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
 
@@ -514,7 +515,7 @@
     pref_service_.RemoveRecommendedPref(::proxy_config::prefs::kProxy);
     SyncGetLatestProxyConfig(&actual_config);
     EXPECT_EQ(network_params.auto_detect, actual_config.value().auto_detect());
-    EXPECT_EQ(network_params.pac_url, actual_config.value().pac_url());
+    EXPECT_EQ(GURL(network_params.pac_url), actual_config.value().pac_url());
     EXPECT_TRUE(network_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
   }
diff --git a/chrome/browser/content_index/content_index_provider_unittest.cc b/chrome/browser/content_index/content_index_provider_unittest.cc
index 718d334..648eeb3 100644
--- a/chrome/browser/content_index/content_index_provider_unittest.cc
+++ b/chrome/browser/content_index/content_index_provider_unittest.cc
@@ -42,8 +42,14 @@
 
 constexpr int64_t kServiceWorkerRegistrationId = 42;
 constexpr double kEngagementScore = 42.0;
-const GURL kLaunchURL = GURL("https://example.com/foo");
-const url::Origin kOrigin = url::Origin::Create(kLaunchURL.GetOrigin());
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL LaunchURL() {
+  return GURL("https://example.com/foo");
+}
+url::Origin Origin() {
+  return url::Origin::Create(LaunchURL().GetOrigin());
+}
 
 // Hosts the test profile. Global to be accessible from
 // |BuildTestHistoryService|.
@@ -62,7 +68,7 @@
   Profile* profile = static_cast<Profile*>(context);
   std::unique_ptr<SiteEngagementService> service(
       std::make_unique<SiteEngagementService>(profile));
-  service->ResetBaseScoreForURL(kOrigin.GetURL(), kEngagementScore);
+  service->ResetBaseScoreForURL(Origin().GetURL(), kEngagementScore);
   return std::move(service);
 }
 
@@ -105,7 +111,7 @@
         id, "title", "description", blink::mojom::ContentCategory::ARTICLE,
         std::vector<blink::mojom::ContentIconDefinitionPtr>(), "launch_url");
     return content::ContentIndexEntry(kServiceWorkerRegistrationId,
-                                      std::move(description), kLaunchURL,
+                                      std::move(description), LaunchURL(),
                                       base::Time::Now());
   }
 
@@ -132,7 +138,7 @@
   EXPECT_FALSE(item.is_transient);
   EXPECT_TRUE(item.is_suggested);
   EXPECT_TRUE(item.is_openable);
-  EXPECT_EQ(item.page_url, kLaunchURL);
+  EXPECT_EQ(item.page_url, LaunchURL());
   EXPECT_EQ(item.content_quality_score, kEngagementScore / 100.0);
 }
 
@@ -151,6 +157,6 @@
 
   {
     EXPECT_CALL(*this, OnItemRemoved(_));
-    provider_->OnContentDeleted(kServiceWorkerRegistrationId, kOrigin, "id");
+    provider_->OnContentDeleted(kServiceWorkerRegistrationId, Origin(), "id");
   }
 }
diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn
index 7d7f5ba1..d93be932 100644
--- a/chrome/browser/devtools/BUILD.gn
+++ b/chrome/browser/devtools/BUILD.gn
@@ -194,6 +194,7 @@
   if (!is_android) {
     deps += [
       ":protocol_generated_sources",
+      "//components/subresource_filter/content/browser:browser",
       "//third_party/inspector_protocol:crdtp",
     ]
     sources += [
diff --git a/chrome/browser/devtools/protocol/cast_handler_unittest.cc b/chrome/browser/devtools/protocol/cast_handler_unittest.cc
index ac45bde..4b8930f7 100644
--- a/chrome/browser/devtools/protocol/cast_handler_unittest.cc
+++ b/chrome/browser/devtools/protocol/cast_handler_unittest.cc
@@ -34,13 +34,11 @@
 const media_router::MediaSink sink2(kSinkId2,
                                     kSinkName2,
                                     media_router::SinkIconType::CAST);
-const media_router::MediaRoute route1(
-    kRouteId1,
-    media_router::MediaSource("https://example.com/"),
-    kSinkId1,
-    "",
-    true,
-    true);
+media_router::MediaRoute Route1() {
+  return media_router::MediaRoute(
+      kRouteId1, media_router::MediaSource("https://example.com/"), kSinkId1,
+      "", true, true);
+}
 
 class MockStartTabMirroringCallback
     : public CastHandler::StartTabMirroringCallback {
@@ -134,7 +132,7 @@
             std::move(callback).Run(
                 media_router::mojom::RoutePresentationConnectionPtr(),
                 media_router::RouteRequestResult(
-                    std::make_unique<media_router::MediaRoute>(route1), "id",
+                    std::make_unique<media_router::MediaRoute>(Route1()), "id",
                     "", media_router::RouteRequestResult::OK));
           }));
   EXPECT_CALL(*callback_ptr, sendSuccess());
@@ -154,14 +152,14 @@
 
 TEST_F(CastHandlerTest, StopCasting) {
   sinks_observer_->OnSinksUpdated({sink1, sink2}, {});
-  routes_observer_->OnRoutesUpdated({route1}, {});
+  routes_observer_->OnRoutesUpdated({Route1()}, {});
   EXPECT_CALL(*router_, TerminateRoute(kRouteId1));
   EXPECT_TRUE(handler_->StopCasting(kSinkName1).isSuccess());
 }
 
 TEST_F(CastHandlerTest, StopCastingWithInvalidName) {
   sinks_observer_->OnSinksUpdated({sink1, sink2}, {});
-  routes_observer_->OnRoutesUpdated({route1}, {});
+  routes_observer_->OnRoutesUpdated({Route1()}, {});
   // Attempting to stop casting to a sink without a route should fail.
   EXPECT_EQ(protocol::Response::kError,
             handler_->StopCasting(kSinkName2).status());
diff --git a/chrome/browser/download/chrome_download_manager_delegate_unittest.cc b/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
index 2b58258..82149de 100644
--- a/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
@@ -89,11 +89,16 @@
 using ::testing::SetArgPointee;
 using ::testing::WithArg;
 using url::Origin;
-
 namespace {
 
-const Origin kSecureOrigin = Origin::Create(GURL("https://example.org/"));
-const Origin kInsecureOrigin = Origin::Create(GURL("http://example.org/"));
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+Origin SecureOrigin() {
+  return Origin::Create(GURL("https://example.org"));
+}
+Origin InsecureOrigin() {
+  return Origin::Create(GURL("http://example.org"));
+}
 
 class MockWebContentsDelegate : public content::WebContentsDelegate {
  public:
@@ -493,6 +498,8 @@
   }
 }
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
 GURL ForceGoogleSafeSearch(const GURL& url) {
   GURL new_url;
   safe_search_util::ForceGoogleSafeSearch(url, &new_url);
@@ -766,7 +773,8 @@
   const GURL kExeUrl("http://example.com/foo.exe");
 
   std::unique_ptr<download::MockDownloadItem> exe_download_item =
-      PrepareDownloadItemForMixedContent(kExeUrl, kSecureOrigin, base::nullopt);
+      PrepareDownloadItemForMixedContent(kExeUrl, SecureOrigin(),
+                                         base::nullopt);
   DetermineDownloadTargetResult result;
   base::HistogramTester histograms;
   base::test::ScopedFeatureList feature_list;
@@ -795,7 +803,7 @@
   content::PluginService::GetInstance()->Init();
 #endif
   std::unique_ptr<download::MockDownloadItem> download_item =
-      PrepareDownloadItemForMixedContent(kExeUrl, kSecureOrigin, kRedirectUrl);
+      PrepareDownloadItemForMixedContent(kExeUrl, SecureOrigin(), kRedirectUrl);
   DetermineDownloadTargetResult result;
   base::test::ScopedFeatureList feature_list;
   base::HistogramTester histograms;
@@ -824,7 +832,7 @@
   {
     base::HistogramTester histograms;
     std::unique_ptr<download::MockDownloadItem> download_item =
-        PrepareDownloadItemForMixedContent(kHttpsUrl, kInsecureOrigin,
+        PrepareDownloadItemForMixedContent(kHttpsUrl, InsecureOrigin(),
                                            base::nullopt);
     DetermineDownloadTarget(download_item.get(), &result);
 
@@ -842,7 +850,7 @@
   {
     base::HistogramTester histograms;
     std::unique_ptr<download::MockDownloadItem> download_item =
-        PrepareDownloadItemForMixedContent(kHttpUrl, kInsecureOrigin,
+        PrepareDownloadItemForMixedContent(kHttpUrl, InsecureOrigin(),
                                            base::nullopt);
     DetermineDownloadTarget(download_item.get(), &result);
 
@@ -870,7 +878,7 @@
   std::unique_ptr<download::MockDownloadItem> exe_download_item =
       PrepareDownloadItemForMixedContent(kExeUrl, base::nullopt, base::nullopt);
   ON_CALL(*exe_download_item, GetTabUrl())
-      .WillByDefault(ReturnRefOfCopy(kSecureOrigin.GetURL()));
+      .WillByDefault(ReturnRefOfCopy(SecureOrigin().GetURL()));
   ON_CALL(*exe_download_item, GetDownloadSource())
       .WillByDefault(Return(download::DownloadSource::CONTEXT_MENU));
   DetermineDownloadTargetResult result;
@@ -915,7 +923,7 @@
   content::PluginService::GetInstance()->Init();
 #endif
   std::unique_ptr<download::MockDownloadItem> download_item =
-      PrepareDownloadItemForMixedContent(kExeUrl, kSecureOrigin, kRedirectUrl);
+      PrepareDownloadItemForMixedContent(kExeUrl, SecureOrigin(), kRedirectUrl);
   DetermineDownloadTargetResult result;
   base::test::ScopedFeatureList feature_list;
   base::HistogramTester histograms;
@@ -944,9 +952,11 @@
 #endif
 
   std::unique_ptr<download::MockDownloadItem> exe_download_item =
-      PrepareDownloadItemForMixedContent(kExeUrl, kSecureOrigin, base::nullopt);
+      PrepareDownloadItemForMixedContent(kExeUrl, SecureOrigin(),
+                                         base::nullopt);
   std::unique_ptr<download::MockDownloadItem> foo_download_item =
-      PrepareDownloadItemForMixedContent(kFooUrl, kSecureOrigin, base::nullopt);
+      PrepareDownloadItemForMixedContent(kFooUrl, SecureOrigin(),
+                                         base::nullopt);
   DetermineDownloadTargetResult result;
 
   {
diff --git a/chrome/browser/download/offline_item_utils_unittest.cc b/chrome/browser/download/offline_item_utils_unittest.cc
index a9ae526..59397eb 100644
--- a/chrome/browser/download/offline_item_utils_unittest.cc
+++ b/chrome/browser/download/offline_item_utils_unittest.cc
@@ -22,10 +22,18 @@
 using ::testing::ReturnRefOfCopy;
 
 namespace {
-const GURL kTestUrl("http://www.example.com");
-const GURL kTestOriginalUrl("http://www.exampleoriginalurl.com");
+
 const char kNameSpace[] = "LEGACY_DOWNLOAD";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("http://www.example.com");
+}
+GURL TestOriginalUrl() {
+  return GURL("http://www.exampleoriginalurl.com");
+}
+
 }  // namespace
 
 class OfflineItemUtilsTest : public testing::Test {
@@ -75,10 +83,10 @@
     download::DownloadInterruptReason interrupt_reason) {
   std::unique_ptr<download::MockDownloadItem> item(
       new ::testing::NiceMock<download::MockDownloadItem>());
-  ON_CALL(*item, GetURL()).WillByDefault(ReturnRefOfCopy(kTestUrl));
-  ON_CALL(*item, GetTabUrl()).WillByDefault(ReturnRefOfCopy(kTestUrl));
+  ON_CALL(*item, GetURL()).WillByDefault(ReturnRefOfCopy(TestUrl()));
+  ON_CALL(*item, GetTabUrl()).WillByDefault(ReturnRefOfCopy(TestUrl()));
   ON_CALL(*item, GetOriginalUrl())
-      .WillByDefault(ReturnRefOfCopy(kTestOriginalUrl));
+      .WillByDefault(ReturnRefOfCopy(TestOriginalUrl()));
   ON_CALL(*item, GetDangerType())
       .WillByDefault(Return(download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS));
   ON_CALL(*item, GetId()).WillByDefault(Return(0));
@@ -181,8 +189,8 @@
   EXPECT_EQ(file_path, offline_item.file_path);
   EXPECT_EQ(mime_type, offline_item.mime_type);
 
-  EXPECT_EQ(kTestUrl, offline_item.page_url);
-  EXPECT_EQ(kTestOriginalUrl, offline_item.original_url);
+  EXPECT_EQ(TestUrl(), offline_item.page_url);
+  EXPECT_EQ(TestOriginalUrl(), offline_item.original_url);
   EXPECT_FALSE(offline_item.is_off_the_record);
   EXPECT_EQ("", offline_item.attribution);
 
diff --git a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
index e1c00c4..5e0db50 100644
--- a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
+++ b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
@@ -57,6 +57,13 @@
 
 const char kCorsErrorWhenFetching[] = "error: TypeError: Failed to fetch";
 
+// The manifest.json used below has a "key" entry that will result in the hash
+// of extension id that is captured in kExpectedHashedExtensionId.  Knowing
+// the hash constant helps with simulating distributing the hash via field trial
+// param.
+const char kExpectedHashedExtensionId[] =
+    "14B587526D9AC6ADCACAA8A4AAE3DB281CA2AB53";
+
 }  // namespace
 
 using CORBAction = network::CrossOriginReadBlocking::Action;
@@ -93,6 +100,7 @@
     const char kManifestTemplate[] = R"(
         {
           "name": "CrossOriginReadBlockingTest - Extension",
+          "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjzv7dI7Ygyh67VHE1DdidudpYf8PFfv8iucWvzO+3xpF/Dm5xNo7aQhPNiEaNfHwJQ7lsp4gc+C+4bbaVewBFspTruoSJhZc5uEfqxwovJwN+v1/SUFXTXQmQBv6gs0qZB4gBbl4caNQBlqrFwAMNisnu1V6UROna8rOJQ90D7Nv7TCwoVPKBfVshpFjdDOTeBg4iLctO3S/06QYqaTDrwVceSyHkVkvzBY6tc6mnYX0RZu78J9iL8bdqwfllOhs69cqoHHgrLdI6JdOyiuh6pBP6vxMlzSKWJ3YTNjaQTPwfOYaLMuzdl0v+YdzafIzV9zwe4Xiskk+5JNGt8b2rQIDAQAB",
           "version": "1.0",
           "manifest_version": 2,
           "permissions": [
@@ -364,22 +372,33 @@
 
   CrossOriginReadBlockingExtensionAllowlistingTest() {
     std::vector<base::Feature> disabled_features;
-    std::vector<base::Feature> enabled_features;
+    std::vector<base::test::ScopedFeatureList::FeatureAndParams>
+        enabled_features;
 
-    if (IsOutOfBlinkCorsEnabled())
-      enabled_features.push_back(network::features::kOutOfBlinkCors);
-    else
+    if (IsOutOfBlinkCorsEnabled()) {
+      enabled_features.emplace_back(network::features::kOutOfBlinkCors,
+                                    base::FieldTrialParams());
+    } else {
       disabled_features.push_back(network::features::kOutOfBlinkCors);
+    }
 
     if (ShouldAllowlistAlsoApplyToOorCors()) {
-      enabled_features.push_back(
-          extensions_features::kCorbAllowlistAlsoAppliesToOorCors);
+      base::FieldTrialParams field_trial_params;
+      if (IsExtensionAllowlisted()) {
+        field_trial_params.emplace(
+            extensions_features::kCorbAllowlistAlsoAppliesToOorCorsParamName,
+            kExpectedHashedExtensionId);
+      }
+      enabled_features.emplace_back(
+          extensions_features::kCorbAllowlistAlsoAppliesToOorCors,
+          field_trial_params);
     } else {
       disabled_features.push_back(
           extensions_features::kCorbAllowlistAlsoAppliesToOorCors);
     }
 
-    scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features);
+    scoped_feature_list_.InitWithFeaturesAndParameters(enabled_features,
+                                                       disabled_features);
   }
 
   bool IsExtensionAllowlisted() {
@@ -399,13 +418,25 @@
     const Extension* extension = Base::InstallExtension(
         resource_to_fetch_from_declarative_content_script);
 
-    if (IsExtensionAllowlisted()) {
-      URLLoaderFactoryManager::AddExtensionToAllowlistForTesting(*extension);
-    } else {
-      URLLoaderFactoryManager::RemoveExtensionFromAllowlistForTesting(
-          *extension);
+    // The allowlist is populated via
+    // 1. Field trial param (only if ShouldAllowlistAlsoApplyToOorCors)
+    // 2. Hardcoded list (all cases).
+    // If path #1 is unavailable (i.e. if base::FieldTrialParams was not
+    // populated in the constructor of the test suite), then the test needs to
+    // modify the hardcoded list via Add/RemoveExtensionFromAllowlistForTesting.
+    if (!ShouldAllowlistAlsoApplyToOorCors()) {
+      if (IsExtensionAllowlisted()) {
+        URLLoaderFactoryManager::AddExtensionToAllowlistForTesting(*extension);
+      } else {
+        URLLoaderFactoryManager::RemoveExtensionFromAllowlistForTesting(
+            *extension);
+      }
     }
 
+    // Sanity check that the field trial param (which has to be registered via
+    // ScopedFeatureList early) uses the right extension id hash.
+    EXPECT_EQ(kExpectedHashedExtensionId, extension->hashed_id().value());
+
     return extension;
   }
 
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index b152b2c9..fe9977c1 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -2114,7 +2114,7 @@
   {
     "name": "enable-webgl2-compute-context",
     "owners": [ "webgl-team@google.com" ],
-    "expiry_milestone": 81
+    "expiry_milestone": 85
   },
   {
     "name": "enable-webnfc",
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
index 238e8fb9..24fe61b8 100644
--- a/chrome/browser/flags/BUILD.gn
+++ b/chrome/browser/flags/BUILD.gn
@@ -4,4 +4,19 @@
 
 import("//build/config/android/rules.gni")
 
-java_group("java") {}
+android_library("java") {
+  sources = [
+    "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java",
+  ]
+  deps = [
+    "//base:base_java",
+    "//base:jni_java",
+  ]
+  annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
+}
+
+generate_jni("jni_headers") {
+  sources = [
+    "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java",
+  ]
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
similarity index 100%
rename from chrome/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
rename to chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
diff --git a/chrome/browser/google/google_search_domain_mixing_metrics_emitter_unittest.cc b/chrome/browser/google/google_search_domain_mixing_metrics_emitter_unittest.cc
index f475b2e..b12070a 100644
--- a/chrome/browser/google/google_search_domain_mixing_metrics_emitter_unittest.cc
+++ b/chrome/browser/google/google_search_domain_mixing_metrics_emitter_unittest.cc
@@ -162,7 +162,8 @@
   VerifyHistograms(tester);
 }
 
-TEST_F(GoogleSearchDomainMixingMetricsEmitterTest, EmitsMetricsWhenTimerFires) {
+TEST_F(GoogleSearchDomainMixingMetricsEmitterTest,
+       DISABLED_EmitsMetricsWhenTimerFires) {
   // Metrics were computed up to 4am on Jan 1st.
   base::Time last_metrics_time;
   ASSERT_TRUE(
diff --git a/chrome/browser/metrics/ukm_background_recorder_browsertest.cc b/chrome/browser/metrics/ukm_background_recorder_browsertest.cc
index 270a38e2..2e0adea 100644
--- a/chrome/browser/metrics/ukm_background_recorder_browsertest.cc
+++ b/chrome/browser/metrics/ukm_background_recorder_browsertest.cc
@@ -17,8 +17,11 @@
 
 namespace {
 
-const url::Origin kVisitedOrigin =
-    url::Origin::Create(GURL("https://foobar.com"));
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin VisitedOrigin() {
+  return url::Origin::Create(GURL("https://foobar.com"));
+}
 
 void DidGetRecordResult(base::OnceClosure quit_closure,
                         base::Optional<ukm::SourceId>* out_result,
@@ -42,7 +45,7 @@
     // Adds the URL to the history so that UKM events for this origin are
     // recorded.
     background_recorder_service_->history_service_->AddPage(
-        GURL(kVisitedOrigin.GetURL().spec() + "baz"), base::Time::Now(),
+        GURL(VisitedOrigin().GetURL().spec() + "baz"), base::Time::Now(),
         history::SOURCE_BROWSED);
   }
 
@@ -69,7 +72,7 @@
                        SourceIdReturnedWhenOriginInHistory) {
   // Check visited origin.
   {
-    auto source_id = GetSourceId(kVisitedOrigin);
+    auto source_id = GetSourceId(VisitedOrigin());
     ASSERT_TRUE(source_id);
     EXPECT_NE(*source_id, ukm::kInvalidSourceId);
     EXPECT_EQ(ukm::GetSourceIdType(*source_id), ukm::SourceIdType::HISTORY_ID);
diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc b/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc
index 054328a..61ad625 100644
--- a/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc
+++ b/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc
@@ -32,8 +32,15 @@
 const base::Feature kPreconnectToSearchTest{"PreconnectToSearch",
                                             base::FEATURE_DISABLED_BY_DEFAULT};
 
-GURL fake_search("https://www.fakesearch.com/");
-GURL google_search("https://www.google.com/");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL FakeSearch() {
+  return GURL("https://www.fakesearch.com/");
+}
+
+GURL GoogleSearch() {
+  return GURL("https://www.google.com/");
+}
 
 class SearchEnginePreconnectorBrowserTest
     : public subresource_filter::SubresourceFilterBrowserTest,
@@ -52,8 +59,8 @@
     ASSERT_TRUE(https_server_->Start());
 
     preresolve_counts_[GetTestURL("/").GetOrigin()] = 0;
-    preresolve_counts_[google_search] = 0;
-    preresolve_counts_[fake_search] = 0;
+    preresolve_counts_[GoogleSearch()] = 0;
+    preresolve_counts_[FakeSearch()] = 0;
 
     subresource_filter::SubresourceFilterBrowserTest::SetUp();
   }
@@ -148,8 +155,8 @@
   ASSERT_TRUE(model->loaded());
 
   // Check default URL is being preconnected and test URL is not.
-  WaitForPreresolveCountForURL(google_search, 1);
-  EXPECT_EQ(1, preresolve_counts_[google_search.GetOrigin()]);
+  WaitForPreresolveCountForURL(GoogleSearch(), 1);
+  EXPECT_EQ(1, preresolve_counts_[GoogleSearch().GetOrigin()]);
   EXPECT_EQ(0, preresolve_counts_[GetTestURL("/").GetOrigin()]);
 
   TemplateURLData data;
@@ -205,7 +212,7 @@
   TemplateURLData data_fake_search;
   data_fake_search.SetShortName(base::ASCIIToUTF16(kShortName));
   data_fake_search.SetKeyword(data.short_name());
-  data_fake_search.SetURL(fake_search.spec());
+  data_fake_search.SetURL(FakeSearch().spec());
 
   template_url = model->Add(std::make_unique<TemplateURL>(data_fake_search));
   ASSERT_TRUE(template_url);
@@ -217,10 +224,10 @@
       ->SearchEnginePreconnectorForTesting()
       ->OnAppStateChangedForTesting(true /* in_foreground */);
 
-  WaitForPreresolveCountForURL(fake_search, 2);
+  WaitForPreresolveCountForURL(FakeSearch(), 2);
 
   // Preconnect should occur for fake search (2 since there are 2 NIKs).
-  EXPECT_EQ(2, preresolve_counts_[fake_search]);
+  EXPECT_EQ(2, preresolve_counts_[FakeSearch()]);
 
   // No preconnects should have been issued for the test URL.
   EXPECT_EQ(0, preresolve_counts_[GetTestURL("/").GetOrigin()]);
diff --git a/chrome/browser/notifications/platform_notification_service_unittest.cc b/chrome/browser/notifications/platform_notification_service_unittest.cc
index 3c2adeb..8b54734 100644
--- a/chrome/browser/notifications/platform_notification_service_unittest.cc
+++ b/chrome/browser/notifications/platform_notification_service_unittest.cc
@@ -67,7 +67,11 @@
 const char kTimeUntilCloseMillis[] = "TimeUntilClose";
 const char kTimeUntilFirstClickMillis[] = "TimeUntilFirstClick";
 const char kTimeUntilLastClickMillis[] = "TimeUntilLastClick";
-const GURL kOrigin = GURL("https://example.com");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Origin() {
+  return GURL("https://example.com");
+}
 
 }  // namespace
 
@@ -250,11 +254,12 @@
                                             /* no_db= */ false));
   auto* history_service = HistoryServiceFactory::GetForProfile(
       &profile_, ServiceAccessType::EXPLICIT_ACCESS);
-  history_service->AddPage(kOrigin, base::Time::Now(), history::SOURCE_BROWSED);
+  history_service->AddPage(Origin(), base::Time::Now(),
+                           history::SOURCE_BROWSED);
 
   NotificationDatabaseData data;
   data.notification_id = "notification1";
-  data.origin = kOrigin;
+  data.origin = Origin();
   data.closed_reason = NotificationDatabaseData::ClosedReason::USER;
   data.replaced_existing_notification = true;
   data.notification_data.icon = GURL("https://icon.com");
diff --git a/chrome/browser/offline_pages/background_loader_offliner_unittest.cc b/chrome/browser/offline_pages/background_loader_offliner_unittest.cc
index 7caea87..9e88cfac 100644
--- a/chrome/browser/offline_pages/background_loader_offliner_unittest.cc
+++ b/chrome/browser/offline_pages/background_loader_offliner_unittest.cc
@@ -54,13 +54,22 @@
 using security_state::VisibleSecurityState;
 
 const int64_t kRequestId = 7;
-const GURL kHttpUrl("http://www.tunafish.com");
-const GURL kHttpsUrl("https://www.yellowtail.com");
-const GURL kFileUrl("file://salmon.png");
 const ClientId kClientId("async_loading", "88");
 const bool kUserRequested = true;
 const char kRequestOrigin[] = "abc.xyz";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL HttpUrl() {
+  return GURL("http://www.tunafish.com");
+}
+GURL HttpsUrl() {
+  return GURL("https://www.yellowtail.com");
+}
+GURL FileUrl() {
+  return GURL("file://salmon.png");
+}
+
 class TestLoadTerminationListener : public LoadTerminationListener {
  public:
   TestLoadTerminationListener() = default;
@@ -268,7 +277,7 @@
   std::unique_ptr<VisibleSecurityState> BaseVisibleSecurityState() {
     auto visible_security_state = std::make_unique<VisibleSecurityState>();
     visible_security_state->connection_info_initialized = true;
-    visible_security_state->url = kHttpsUrl;
+    visible_security_state->url = HttpsUrl();
     visible_security_state->certificate =
         net::ImportCertFromFile(net::GetTestCertsDirectory(), "sha1_2016.pem");
     visible_security_state->cert_status =
@@ -361,7 +370,7 @@
        LoadAndSaveBlockThirdPartyCookiesForCustomTabs) {
   base::Time creation_time = base::Time::Now();
   ClientId custom_tabs_client_id("custom_tabs", "88");
-  SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id,
+  SavePageRequest request(kRequestId, HttpUrl(), custom_tabs_client_id,
                           creation_time, kUserRequested);
 
   profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true);
@@ -373,7 +382,7 @@
        LoadAndSaveNetworkPredictionDisabledForCustomTabs) {
   base::Time creation_time = base::Time::Now();
   ClientId custom_tabs_client_id("custom_tabs", "88");
-  SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id,
+  SavePageRequest request(kRequestId, HttpUrl(), custom_tabs_client_id,
                           creation_time, kUserRequested);
 
   profile()->GetPrefs()->SetInteger(
@@ -385,7 +394,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, LoadAndSaveStartsLoading) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -397,7 +406,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, BytesReportedWillUpdateProgress) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -409,7 +418,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, CompleteLoadingInitiatesSave) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   request.set_request_origin(kRequestOrigin);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
@@ -425,7 +434,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, CancelWhenLoading) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -440,7 +449,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, CancelWhenLoadTerminated) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -453,7 +462,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, CancelWhenLoaded) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -474,7 +483,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, LoadedButSaveFails) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -492,7 +501,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, ProgressDoesNotUpdateDuringSave) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -505,7 +514,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, LoadAndSaveSuccess) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -524,7 +533,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, LoadAndSaveAlreadyExists) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -543,11 +552,11 @@
 TEST_F(BackgroundLoaderOfflinerTest, ResetsWhenDownloadStarts) {
   base::Time creation_time = base::Time::Now();
   ClientId browser_actions("browser_actions", "123");
-  SavePageRequest request(kRequestId, kHttpUrl, browser_actions, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), browser_actions, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
-  offliner()->stub()->CanDownload(kHttpUrl, "foo", can_download_callback());
+  offliner()->stub()->CanDownload(HttpUrl(), "foo", can_download_callback());
   PumpLoop();
   EXPECT_TRUE(can_download_callback_called());
   EXPECT_TRUE(can_download());
@@ -558,11 +567,11 @@
 TEST_F(BackgroundLoaderOfflinerTest, ResetsWhenDownloadEncountered) {
   base::Time creation_time = base::Time::Now();
   ClientId prefetching("suggested_articles", "123");
-  SavePageRequest request(kRequestId, kHttpUrl, prefetching, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), prefetching, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
-  offliner()->stub()->CanDownload(kHttpUrl, "foo", can_download_callback());
+  offliner()->stub()->CanDownload(HttpUrl(), "foo", can_download_callback());
   PumpLoop();
   EXPECT_TRUE(can_download_callback_called());
   EXPECT_FALSE(can_download());
@@ -579,7 +588,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnInvalidURL) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kFileUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, FileUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(),
                                        progress_callback()));
@@ -587,7 +596,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, ReturnsOnRenderCrash) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -600,7 +609,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, ReturnsOnRenderKilled) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -613,7 +622,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, ReturnsOnWebContentsDestroyed) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -625,14 +634,14 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnErrorPage) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
   // Create handle with net error code.
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   handle.set_is_error_page(true);
   handle.set_net_error_code(net::Error::ERR_NAME_NOT_RESOLVED);
@@ -652,7 +661,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnCertificateError) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -666,7 +675,7 @@
 
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   offliner()->DidFinishNavigation(&handle);
 
@@ -681,7 +690,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnRevocationCheckingFailure) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -697,7 +706,7 @@
 
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   offliner()->DidFinishNavigation(&handle);
 
@@ -712,7 +721,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, SucceedsOnHttp) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -721,14 +730,14 @@
   // be ignored).
   std::unique_ptr<VisibleSecurityState> visible_security_state =
       BaseVisibleSecurityState();
-  visible_security_state->url = kHttpUrl;
+  visible_security_state->url = HttpUrl();
   visible_security_state->cert_status |= net::CERT_STATUS_REVOKED;
   offliner()->set_custom_visible_security_state(
       std::move(visible_security_state));
 
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   offliner()->DidFinishNavigation(&handle);
 
@@ -741,7 +750,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnUnwantedContent) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -755,7 +764,7 @@
       std::move(visible_security_state));
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   offliner()->DidFinishNavigation(&handle);
 
@@ -769,7 +778,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnInterstitialPage) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -778,7 +787,7 @@
   offliner()->set_page_type(content::PageType::PAGE_TYPE_INTERSTITIAL);
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   offliner()->DidFinishNavigation(&handle);
 
@@ -793,7 +802,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, FailsOnInternetDisconnected) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -801,7 +810,7 @@
   // Create handle with net error code.
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   handle.set_is_error_page(true);
   handle.set_net_error_code(net::Error::ERR_INTERNET_DISCONNECTED);
@@ -817,28 +826,28 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, DoesNotCrashWithNullResponseHeaders) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
 
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   offliner()->DidFinishNavigation(&handle);
 }
 
 TEST_F(BackgroundLoaderOfflinerTest, OffliningPreviewsStatusOffHistogram) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
 
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   // Set up PreviewsUserData on the handle.
   PreviewsUITabHelper::CreateForWebContents(offliner()->web_contents());
@@ -860,14 +869,14 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, OffliningPreviewsStatusOnHistogram) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
 
   // Called after calling LoadAndSave so we have web_contents to work with.
   content::MockNavigationHandle handle(
-      kHttpUrl, offliner()->web_contents()->GetMainFrame());
+      HttpUrl(), offliner()->web_contents()->GetMainFrame());
   handle.set_has_committed(true);
   // Set up PreviewsUserData on the handle.
   PreviewsUITabHelper::CreateForWebContents(offliner()->web_contents());
@@ -889,7 +898,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, OnlySavesOnceOnMultipleLoads) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -909,7 +918,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, HandleTimeoutWithLowBarStartedTriesMet) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
@@ -926,7 +935,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, HandleTimeoutWithLowBarCompletedTriesMet) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
@@ -943,7 +952,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, HandleTimeoutWithNoLowBarStartedTriesMet) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -956,7 +965,7 @@
 TEST_F(BackgroundLoaderOfflinerTest,
        HandleTimeoutWithNoLowBarCompletedTriesMet) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -968,7 +977,7 @@
 
 TEST_F(BackgroundLoaderOfflinerTest, HandleTimeoutWithLowBarNoRetryLimit) {
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -984,7 +993,7 @@
   EXPECT_FALSE(offline_pages::IsOfflinePagesLoadSignalCollectingEnabled());
 
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -1006,7 +1015,7 @@
   EXPECT_TRUE(IsOfflinePagesLoadSignalCollectingEnabled());
 
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
@@ -1028,7 +1037,7 @@
   EXPECT_TRUE(IsOfflinePagesLoadSignalCollectingEnabled());
 
   base::Time creation_time = base::Time::Now();
-  SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
                           kUserRequested);
   EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
                                       progress_callback()));
diff --git a/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc b/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc
index 7b4b003..e79ade0f 100644
--- a/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc
+++ b/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc
@@ -66,8 +66,6 @@
 const char kPrivateOfflineFileDir[] = "offline_pages";
 const char kPublicOfflineFileDir[] = "public_offline_pages";
 
-const GURL kUrl("http://test.org/page");
-const GURL kUrl2("http://test.org/another");
 const base::FilePath kFilename1(FILE_PATH_LITERAL("hello.mhtml"));
 const base::FilePath kFilename2(FILE_PATH_LITERAL("welcome.mhtml"));
 const base::FilePath kNonexistentFilename(
@@ -100,6 +98,15 @@
 
 const int64_t kDownloadId = 42LL;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url() {
+  return GURL("http://test.org/page");
+}
+GURL Url2() {
+  return GURL("http://test.org/another");
+}
+
 struct ResponseInfo {
   explicit ResponseInfo(int request_status) : request_status(request_status) {
     DCHECK_NE(net::OK, request_status);
@@ -1098,18 +1105,18 @@
   EXPECT_FALSE(this->offline_page_tab_helper()->GetOfflinePageForTest());
 
   // Must be GET method.
-  this->InterceptRequest(kUrl, "POST", net::HttpRequestHeaders(),
+  this->InterceptRequest(Url(), "POST", net::HttpRequestHeaders(),
                          true /* is_main_frame */);
   EXPECT_EQ(0, this->bytes_read());
   EXPECT_FALSE(this->offline_page_tab_helper()->GetOfflinePageForTest());
 
-  this->InterceptRequest(kUrl, "HEAD", net::HttpRequestHeaders(),
+  this->InterceptRequest(Url(), "HEAD", net::HttpRequestHeaders(),
                          true /* is_main_frame */);
   EXPECT_EQ(0, this->bytes_read());
   EXPECT_FALSE(this->offline_page_tab_helper()->GetOfflinePageForTest());
 
   // Must be main resource.
-  this->InterceptRequest(kUrl, "POST", net::HttpRequestHeaders(),
+  this->InterceptRequest(Url(), "POST", net::HttpRequestHeaders(),
                          false /* is_main_frame */);
   EXPECT_EQ(0, this->bytes_read());
   EXPECT_FALSE(this->offline_page_tab_helper()->GetOfflinePageForTest());
@@ -1122,10 +1129,10 @@
 TEST_F(OfflinePageRequestHandlerTest, LoadOfflinePageOnDisconnectedNetwork) {
   this->SimulateHasNetworkConnectivity(false);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, kFileSize1,
@@ -1136,10 +1143,10 @@
 TEST_F(OfflinePageRequestHandlerTest, PageNotFoundOnDisconnectedNetwork) {
   this->SimulateHasNetworkConnectivity(false);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
-  this->LoadPage(kUrl2);
+  this->LoadPage(Url2());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1150,13 +1157,13 @@
        NetErrorPageSuggestionOnDisconnectedNetwork) {
   this->SimulateHasNetworkConnectivity(false);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeader(
       OfflinePageHeader::Reason::NET_ERROR_SUGGESTION, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectOfflinePageServed(
       offline_id, kFileSize1,
@@ -1169,10 +1176,10 @@
   this->SimulateHasNetworkConnectivity(true);
   this->set_allow_preview(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, kFileSize1,
@@ -1185,14 +1192,14 @@
   this->SimulateHasNetworkConnectivity(true);
   this->set_allow_preview(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   // Treat this as a reloaded page.
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::RELOAD, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   // The existentce of RELOAD header will force to treat the network as
   // connected regardless current network condition. So we will fall back to
@@ -1208,10 +1215,10 @@
   this->SimulateHasNetworkConnectivity(true);
   this->set_allow_preview(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
-  this->LoadPage(kUrl2);
+  this->LoadPage(Url2());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1221,7 +1228,7 @@
 TEST_F(OfflinePageRequestHandlerTest, LoadOfflinePageOnFlakyNetwork) {
   this->SimulateHasNetworkConnectivity(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   // When custom offline header exists and contains "reason=error", it means
@@ -1229,7 +1236,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::NET_ERROR, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectOfflinePageServed(
       offline_id, kFileSize1,
@@ -1240,7 +1247,7 @@
 TEST_F(OfflinePageRequestHandlerTest, PageNotFoundOnFlakyNetwork) {
   this->SimulateHasNetworkConnectivity(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   // When custom offline header exists and contains "reason=error", it means
@@ -1248,7 +1255,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::NET_ERROR, 0));
-  this->LoadPageWithHeaders(kUrl2, extra_headers);
+  this->LoadPageWithHeaders(Url2(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1258,7 +1265,7 @@
 TEST_F(OfflinePageRequestHandlerTest, ForceLoadOfflinePageOnConnectedNetwork) {
   this->SimulateHasNetworkConnectivity(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   // When custom offline header exists and contains value other than
@@ -1266,7 +1273,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::DOWNLOAD, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectOfflinePageServed(
       offline_id, kFileSize1,
@@ -1278,7 +1285,7 @@
   this->SimulateHasNetworkConnectivity(true);
 
   // Save an offline page.
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   // When custom offline header exists and contains value other than
@@ -1286,7 +1293,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::DOWNLOAD, 0));
-  this->LoadPageWithHeaders(kUrl2, extra_headers);
+  this->LoadPageWithHeaders(Url2(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1296,10 +1303,10 @@
 TEST_F(OfflinePageRequestHandlerTest, DoNotLoadOfflinePageOnConnectedNetwork) {
   this->SimulateHasNetworkConnectivity(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   // When the network is good, we will fall back to the default handling
   // immediately. So no request result should be reported. Passing
@@ -1315,14 +1322,14 @@
 
   // Save 2 offline pages associated with same online URL, but pointing to
   // different archive file.
-  int64_t offline_id1 = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id1 = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                                kFileSize1, std::string());
-  int64_t offline_id2 = this->SaveInternalPage(kUrl, GURL(), kFilename2,
+  int64_t offline_id2 = this->SaveInternalPage(Url(), GURL(), kFilename2,
                                                kFileSize2, std::string());
 
   // Load an URL that matches multiple offline pages. Expect that the most
   // recently created offline page is fetched.
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id2, kFileSize2,
@@ -1336,9 +1343,9 @@
 
   // Save 2 offline pages associated with same online URL, but pointing to
   // different archive file.
-  int64_t offline_id1 = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id1 = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                                kFileSize1, std::string());
-  int64_t offline_id2 = this->SaveInternalPage(kUrl, GURL(), kFilename2,
+  int64_t offline_id2 = this->SaveInternalPage(Url(), GURL(), kFilename2,
                                                kFileSize2, std::string());
 
   // Load an URL with a specific offline ID designated in the custom header.
@@ -1346,7 +1353,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeader(
       OfflinePageHeader::Reason::DOWNLOAD, offline_id1));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectOfflinePageServed(
       offline_id1, kFileSize1,
@@ -1358,7 +1365,7 @@
 TEST_F(OfflinePageRequestHandlerTest, FailToLoadByOfflineIDOnUrlMismatch) {
   this->SimulateHasNetworkConnectivity(true);
 
-  int64_t offline_id = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                               kFileSize1, std::string());
 
   // The offline page found with specific offline ID does not match the passed
@@ -1367,7 +1374,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeader(
       OfflinePageHeader::Reason::DOWNLOAD, offline_id));
-  this->LoadPageWithHeaders(kUrl2, extra_headers);
+  this->LoadPageWithHeaders(Url2(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1378,11 +1385,11 @@
   this->SimulateHasNetworkConnectivity(false);
 
   // Save an offline page associated with online URL without fragment.
-  int64_t offline_id1 = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id1 = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                                kFileSize1, std::string());
 
   // Save another offline page associated with online URL that has a fragment.
-  GURL url2_with_fragment(kUrl2.spec() + "#ref");
+  GURL url2_with_fragment(Url2().spec() + "#ref");
   int64_t offline_id2 = this->SaveInternalPage(
       url2_with_fragment, GURL(), kFilename2, kFileSize2, std::string());
 
@@ -1391,7 +1398,7 @@
 
   // Loads an url with fragment, that will match the offline URL without the
   // fragment.
-  GURL url_with_fragment(kUrl.spec() + "#ref");
+  GURL url_with_fragment(Url().spec() + "#ref");
   this->LoadPage(url_with_fragment);
 
   this->ExpectOfflinePageServed(
@@ -1402,7 +1409,7 @@
 
   // Loads an url without fragment, that will match the offline URL with the
   // fragment.
-  this->LoadPage(kUrl2);
+  this->LoadPage(Url2());
 
   EXPECT_EQ(kFileSize2, this->bytes_read());
   ASSERT_TRUE(this->offline_page_tab_helper()->GetOfflinePageForTest());
@@ -1420,7 +1427,7 @@
 
   // Loads an url with fragment, that will match the offline URL with different
   // fragment.
-  GURL url2_with_different_fragment(kUrl2.spec() + "#different_ref");
+  GURL url2_with_different_fragment(Url2().spec() + "#different_ref");
   this->LoadPage(url2_with_different_fragment);
 
   EXPECT_EQ(kFileSize2, this->bytes_read());
@@ -1442,11 +1449,11 @@
   this->SimulateHasNetworkConnectivity(false);
 
   // Save an offline page with same original URL and final URL.
-  int64_t offline_id = this->SaveInternalPage(kUrl, kUrl2, kFilename1,
+  int64_t offline_id = this->SaveInternalPage(Url(), Url2(), kFilename1,
                                               kFileSize1, std::string());
 
   // This should trigger redirect first.
-  this->LoadPage(kUrl2);
+  this->LoadPage(Url2());
 
   // Passing AGGREGATED_REQUEST_RESULT_MAX to skip checking request result in
   // the helper function. Different checks will be done after that.
@@ -1475,15 +1482,15 @@
   model->SetSkipClearingOriginalUrlForTesting();
 
   // Save an offline page with same original URL and final URL.
-  int64_t offline_id =
-      this->SaveInternalPage(kUrl, kUrl, kFilename1, kFileSize1, std::string());
+  int64_t offline_id = this->SaveInternalPage(Url(), Url(), kFilename1,
+                                              kFileSize1, std::string());
 
   // Check if the original URL is still present.
   OfflinePageItem page = this->GetPage(offline_id);
-  EXPECT_EQ(kUrl, page.original_url_if_different);
+  EXPECT_EQ(Url(), page.original_url_if_different);
 
   // No redirect should be triggered when original URL is same as final URL.
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, kFileSize1,
@@ -1497,9 +1504,9 @@
 
   // Save an offline page pointing to non-existent internal archive file.
   int64_t offline_id = this->SaveInternalPage(
-      kUrl, GURL(), kNonexistentFilename, kFileSize1, std::string());
+      Url(), GURL(), kNonexistentFilename, kFileSize1, std::string());
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id,
@@ -1511,10 +1518,10 @@
   this->SimulateHasNetworkConnectivity(false);
 
   // Save an offline page pointing to non-existent public archive file.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kNonexistentFilename,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kNonexistentFilename,
                                             kFileSize1, kDigest1);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id,
@@ -1525,10 +1532,10 @@
   this->SimulateHasNetworkConnectivity(false);
 
   // Save an offline page in public location with mismatched file size.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kMismatchedFileSize, kDigest1);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1541,10 +1548,10 @@
   this->set_allow_preview(true);
 
   // Save an offline page in public location with mismatched file size.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kMismatchedFileSize, kDigest1);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1555,7 +1562,7 @@
   this->SimulateHasNetworkConnectivity(true);
 
   // Save an offline page in public location with mismatched file size.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kMismatchedFileSize, kDigest1);
 
   // When custom offline header exists and contains value other than
@@ -1563,7 +1570,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::DOWNLOAD, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1574,7 +1581,7 @@
   this->SimulateHasNetworkConnectivity(true);
 
   // Save an offline page in public location with mismatched file size.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kMismatchedFileSize, kDigest1);
 
   // When custom offline header exists and contains "reason=error", it means
@@ -1582,7 +1589,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::NET_ERROR, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1593,10 +1600,10 @@
   this->SimulateHasNetworkConnectivity(false);
 
   // Save an offline page in public location with mismatched digest.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kFileSize1, kMismatchedDigest);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1609,10 +1616,10 @@
   this->set_allow_preview(true);
 
   // Save an offline page in public location with mismatched digest.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kFileSize1, kMismatchedDigest);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1623,7 +1630,7 @@
   this->SimulateHasNetworkConnectivity(true);
 
   // Save an offline page in public location with mismatched digest.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kFileSize1, kMismatchedDigest);
 
   // When custom offline header exists and contains value other than
@@ -1631,7 +1638,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::DOWNLOAD, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1642,7 +1649,7 @@
   this->SimulateHasNetworkConnectivity(true);
 
   // Save an offline page in public location with mismatched digest.
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
                                             kFileSize1, kMismatchedDigest);
 
   // When custom offline header exists and contains "reason=error", it means
@@ -1650,7 +1657,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(
       this->UseOfflinePageHeader(OfflinePageHeader::Reason::NET_ERROR, 0));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1661,10 +1668,10 @@
   this->SimulateHasNetworkConnectivity(false);
 
   // Save an offline page in public location with no digest.
-  int64_t offline_id =
-      this->SavePublicPage(kUrl, GURL(), kFilename1, kFileSize1, std::string());
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), kFilename1,
+                                            kFileSize1, std::string());
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectNoOfflinePageServed(
       offline_id, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1676,9 +1683,9 @@
 
   // Save 2 offline pages associated with same online URL, one in internal
   // location, while another in public location with mismatched digest.
-  int64_t offline_id1 = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id1 = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                                kFileSize1, std::string());
-  int64_t offline_id2 = this->SavePublicPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id2 = this->SavePublicPage(Url(), GURL(), kFilename1,
                                              kFileSize1, kMismatchedDigest);
 
   // The offline page found with specific offline ID does not pass the
@@ -1687,7 +1694,7 @@
   net::HttpRequestHeaders extra_headers;
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeader(
       OfflinePageHeader::Reason::DOWNLOAD, offline_id2));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectNoOfflinePageServed(
       offline_id1, OfflinePageRequestHandler::AggregatedRequestResult::
@@ -1700,17 +1707,17 @@
 
   // Save 2 offline pages associated with same online URL, one in internal
   // location, while another in public location with mismatched digest.
-  int64_t offline_id1 = this->SaveInternalPage(kUrl, GURL(), kFilename1,
+  int64_t offline_id1 = this->SaveInternalPage(Url(), GURL(), kFilename1,
                                                kFileSize1, std::string());
-  int64_t offline_id2 = this->SavePublicPage(kUrl, GURL(), kFilename2,
+  int64_t offline_id2 = this->SavePublicPage(Url(), GURL(), kFilename2,
                                              kFileSize2, kMismatchedDigest);
   this->ExpectOfflinePageAccessCount(offline_id1, 0);
   this->ExpectOfflinePageAccessCount(offline_id2, 0);
 
-  // There're 2 offline pages matching kUrl. The most recently created one
+  // There're 2 offline pages matching Url(). The most recently created one
   // should fail on mistmatched digest. The second most recently created offline
   // page should work.
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id1, kFileSize1,
@@ -1729,9 +1736,9 @@
   const std::string expected_digest = archive_validator.Finish();
 
   int64_t offline_id =
-      this->SavePublicPage(kUrl, GURL(), temp_file_path, 0, expected_digest);
+      this->SavePublicPage(Url(), GURL(), temp_file_path, 0, expected_digest);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, 0,
@@ -1750,10 +1757,10 @@
   std::string expected_digest = archive_validator.Finish();
   int expected_size = expected_data.length();
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), temp_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), temp_file_path,
                                             expected_size, expected_digest);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, expected_size,
@@ -1772,10 +1779,10 @@
   std::string expected_digest = archive_validator.Finish();
   int expected_size = expected_data.length();
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), temp_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), temp_file_path,
                                             expected_size, expected_digest);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, expected_size,
@@ -1794,10 +1801,10 @@
   std::string expected_digest = archive_validator.Finish();
   int expected_size = expected_data.length();
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), temp_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), temp_file_path,
                                             expected_size, expected_digest);
 
-  this->LoadPage(kUrl);
+  this->LoadPage(Url());
 
   this->ExpectOfflinePageServed(
       offline_id, expected_size,
@@ -1827,7 +1834,7 @@
   base::FilePath modified_file_path =
       this->CreateFileWithContent(modified_data);
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), modified_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), modified_file_path,
                                             expected_size, expected_digest);
 
   // Load an URL with custom header that contains "intent_url" pointing to
@@ -1836,7 +1843,7 @@
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeaderForIntent(
       OfflinePageHeader::Reason::FILE_URL_INTENT, offline_id,
       net::FilePathToFileURL(unmodified_file_path)));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   this->ExpectOfflinePageServed(
       offline_id, expected_size,
@@ -1864,7 +1871,7 @@
   base::FilePath nonexistent_file_path =
       unmodified_file_path.DirName().AppendASCII("nonexistent");
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), unmodified_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), unmodified_file_path,
                                             expected_size, expected_digest);
 
   // Load an URL with custom header that contains "intent_url" pointing to
@@ -1873,7 +1880,7 @@
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeaderForIntent(
       OfflinePageHeader::Reason::FILE_URL_INTENT, offline_id,
       net::FilePathToFileURL(nonexistent_file_path)));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   EXPECT_EQ(net::ERR_FAILED, this->request_status());
   EXPECT_NE("multipart/related", this->mime_type());
@@ -1899,7 +1906,7 @@
   base::FilePath modified_file_path =
       this->CreateFileWithContent(modified_data);
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), modified_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), modified_file_path,
                                             expected_size, expected_digest);
 
   // Load an URL with custom header that contains "intent_url" pointing to
@@ -1908,7 +1915,7 @@
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeaderForIntent(
       OfflinePageHeader::Reason::FILE_URL_INTENT, offline_id,
       net::FilePathToFileURL(modified_file_path)));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   EXPECT_EQ(net::ERR_FAILED, this->request_status());
   EXPECT_NE("multipart/related", this->mime_type());
@@ -1937,7 +1944,7 @@
   base::FilePath modified_file_path =
       this->CreateFileWithContent(modified_data);
 
-  int64_t offline_id = this->SavePublicPage(kUrl, GURL(), modified_file_path,
+  int64_t offline_id = this->SavePublicPage(Url(), GURL(), modified_file_path,
                                             expected_size, expected_digest);
 
   // Load an URL with custom header that contains "intent_url" pointing to
@@ -1946,7 +1953,7 @@
   extra_headers.AddHeaderFromString(this->UseOfflinePageHeaderForIntent(
       OfflinePageHeader::Reason::FILE_URL_INTENT, offline_id,
       net::FilePathToFileURL(modified_file_path)));
-  this->LoadPageWithHeaders(kUrl, extra_headers);
+  this->LoadPageWithHeaders(Url(), extra_headers);
 
   EXPECT_EQ(net::ERR_FAILED, this->request_status());
   EXPECT_NE("multipart/related", this->mime_type());
diff --git a/chrome/browser/offline_pages/offline_page_tab_helper_unittest.cc b/chrome/browser/offline_pages/offline_page_tab_helper_unittest.cc
index 077ce77c..62b87ba 100644
--- a/chrome/browser/offline_pages/offline_page_tab_helper_unittest.cc
+++ b/chrome/browser/offline_pages/offline_page_tab_helper_unittest.cc
@@ -28,18 +28,28 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
-const GURL kTestPageUrl("http://mystery.site/foo.html");
-const GURL kTestFileUrl("file://foo");
 const base::Time kTestMhtmlCreationTime =
     base::Time::FromJsTime(1522339419011L);
 const char kLoadResultUmaNameAsync[] =
     "OfflinePages.MhtmlLoadResult.async_loading";
 
+const char kTestHeader[] = "reason=download";
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestPageUrl() {
+  return GURL("http://mystery.site/foo.html");
+}
+GURL TestFileUrl() {
+  return GURL("file://foo");
+}
+
 #if defined(OS_ANDROID)
-const GURL kTestContentUrl("content://foo");
+GURL TestContentUrl() {
+  return GURL("content://foo");
+}
 #endif
 
-const char kTestHeader[] = "reason=download";
 }  // namespace
 
 namespace offline_pages {
@@ -150,7 +160,7 @@
   tab_helper()->SetCurrentTargetFrameForTest(web_contents()->GetMainFrame());
 
   // Simulate navigation
-  CreateNavigationSimulator(kTestFileUrl);
+  CreateNavigationSimulator(TestFileUrl());
   navigation_simulator()->Start();
 
   OfflinePageItem offlinePage(mhtml_url, 0, ClientId("async_loading", "1234"),
@@ -169,7 +179,7 @@
 
 // Checks the test setup.
 TEST_F(OfflinePageTabHelperTest, InitialSetup) {
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   EXPECT_NE(nullptr, tab_helper());
   EXPECT_NE(nullptr, prefetch_service());
   EXPECT_NE(nullptr, prefetch_service()->GetOfflineMetricsCollector());
@@ -181,7 +191,7 @@
 }
 
 TEST_F(OfflinePageTabHelperTest, MetricsStartNavigation) {
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   // This causes WCO::DidStartNavigation()
   navigation_simulator()->Start();
 
@@ -192,7 +202,7 @@
 }
 
 TEST_F(OfflinePageTabHelperTest, MetricsOnlineNavigation) {
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   navigation_simulator()->Start();
   navigation_simulator()->Commit();
 
@@ -204,11 +214,12 @@
 }
 
 TEST_F(OfflinePageTabHelperTest, MetricsOfflineNavigation) {
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   navigation_simulator()->Start();
 
   // Simulate offline interceptor loading an offline page instead.
-  OfflinePageItem offlinePage(kTestPageUrl, 0, ClientId(), base::FilePath(), 0);
+  OfflinePageItem offlinePage(TestPageUrl(), 0, ClientId(), base::FilePath(),
+                              0);
   OfflinePageHeader offlineHeader;
   tab_helper()->SetOfflinePage(
       offlinePage, offlineHeader,
@@ -225,10 +236,11 @@
 }
 
 TEST_F(OfflinePageTabHelperTest, TrustedInternalOfflinePage) {
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   navigation_simulator()->Start();
 
-  OfflinePageItem offlinePage(kTestPageUrl, 0, ClientId(), base::FilePath(), 0);
+  OfflinePageItem offlinePage(TestPageUrl(), 0, ClientId(), base::FilePath(),
+                              0);
   OfflinePageHeader offlineHeader(kTestHeader);
   tab_helper()->SetOfflinePage(
       offlinePage, offlineHeader,
@@ -237,7 +249,7 @@
   navigation_simulator()->Commit();
 
   ASSERT_NE(nullptr, tab_helper()->offline_page());
-  EXPECT_EQ(kTestPageUrl, tab_helper()->offline_page()->url);
+  EXPECT_EQ(TestPageUrl(), tab_helper()->offline_page()->url);
   EXPECT_EQ(OfflinePageTrustedState::TRUSTED_AS_IN_INTERNAL_DIR,
             tab_helper()->trusted_state());
   EXPECT_TRUE(tab_helper()->IsShowingTrustedOfflinePage());
@@ -246,10 +258,11 @@
 }
 
 TEST_F(OfflinePageTabHelperTest, TrustedPublicOfflinePage) {
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   navigation_simulator()->Start();
 
-  OfflinePageItem offlinePage(kTestPageUrl, 0, ClientId(), base::FilePath(), 0);
+  OfflinePageItem offlinePage(TestPageUrl(), 0, ClientId(), base::FilePath(),
+                              0);
   OfflinePageHeader offlineHeader(kTestHeader);
   tab_helper()->SetOfflinePage(
       offlinePage, offlineHeader,
@@ -258,7 +271,7 @@
   navigation_simulator()->Commit();
 
   ASSERT_NE(nullptr, tab_helper()->offline_page());
-  EXPECT_EQ(kTestPageUrl, tab_helper()->offline_page()->url);
+  EXPECT_EQ(TestPageUrl(), tab_helper()->offline_page()->url);
   EXPECT_EQ(OfflinePageTrustedState::TRUSTED_AS_UNMODIFIED_AND_IN_PUBLIC_DIR,
             tab_helper()->trusted_state());
   EXPECT_TRUE(tab_helper()->IsShowingTrustedOfflinePage());
@@ -267,7 +280,7 @@
 }
 
 TEST_F(OfflinePageTabHelperTest, UntrustedOfflinePageForFileUrl) {
-  CreateNavigationSimulator(kTestFileUrl);
+  CreateNavigationSimulator(TestFileUrl());
   navigation_simulator()->Start();
   navigation_simulator()->SetContentsMimeType("multipart/related");
   navigation_simulator()->Commit();
@@ -282,7 +295,7 @@
 #if defined(OS_ANDROID)
 TEST_F(OfflinePageTabHelperTest,
        UntrustedOfflinePageForContentUrlWithMultipartRelatedType) {
-  CreateNavigationSimulator(kTestContentUrl);
+  CreateNavigationSimulator(TestContentUrl());
   navigation_simulator()->Start();
   navigation_simulator()->SetContentsMimeType("multipart/related");
   navigation_simulator()->Commit();
@@ -296,7 +309,7 @@
 
 TEST_F(OfflinePageTabHelperTest,
        UntrustedOfflinePageForContentUrlWithMessageRfc822Type) {
-  CreateNavigationSimulator(kTestContentUrl);
+  CreateNavigationSimulator(TestContentUrl());
   navigation_simulator()->Start();
   navigation_simulator()->SetContentsMimeType("message/rfc822");
   navigation_simulator()->Commit();
@@ -395,7 +408,7 @@
   tab_helper()->SetCurrentTargetFrameForTest(web_contents()->GetMainFrame());
 
   // Simulate navigation
-  CreateNavigationSimulator(kTestFileUrl);
+  CreateNavigationSimulator(TestFileUrl());
   navigation_simulator()->Start();
 
   // We force use of the untrusted page histogram by using an empty namespace.
@@ -421,7 +434,7 @@
   SimulateOfflinePageLoad(mhtml_url, kTestMhtmlCreationTime,
                           MHTMLLoadResult::kUrlSchemeNotAllowed);
   auto navigation = content::NavigationSimulator::CreateBrowserInitiated(
-      kTestPageUrl, web_contents());
+      TestPageUrl(), web_contents());
   navigation->Start();
   navigation->AbortCommit();
   EXPECT_TRUE(tab_helper()->offline_page());
@@ -430,10 +443,10 @@
 TEST_F(OfflinePageTabHelperTest, OfflinePageIsNotStoredInBackForwardCache) {
   content::BackForwardCacheDisabledTester back_forward_cache_tester;
 
-  CreateNavigationSimulator(kTestPageUrl);
+  CreateNavigationSimulator(TestPageUrl());
   navigation_simulator()->Start();
 
-  SimulateOfflinePageLoad(kTestPageUrl, kTestMhtmlCreationTime,
+  SimulateOfflinePageLoad(TestPageUrl(), kTestMhtmlCreationTime,
                           MHTMLLoadResult::kSuccess);
 
   int process_id = web_contents()->GetMainFrame()->GetProcess()->GetID();
@@ -441,7 +454,7 @@
 
   // Navigate away.
   content::NavigationSimulator::NavigateAndCommitFromBrowser(web_contents(),
-                                                             kTestPageUrl);
+                                                             TestPageUrl());
   EXPECT_TRUE(back_forward_cache_tester.IsDisabledForFrameWithReason(
       process_id, main_frame_id, "OfflinePage"));
 }
diff --git a/chrome/browser/offline_pages/offline_page_utils_unittest.cc b/chrome/browser/offline_pages/offline_page_utils_unittest.cc
index d34b328..e4a442f3 100644
--- a/chrome/browser/offline_pages/offline_page_utils_unittest.cc
+++ b/chrome/browser/offline_pages/offline_page_utils_unittest.cc
@@ -57,16 +57,27 @@
 namespace offline_pages {
 namespace {
 
-const GURL kTestPage1Url("http://test.org/page1");
-const GURL kTestPage2Url("http://test.org/page2");
-const GURL kTestPage3Url("http://test.org/page3");
-const GURL kTestPage4Url("http://test.org/page4");
 const int64_t kTestFileSize = 876543LL;
 const char* kTestPage1ClientId = "1234";
 const char* kTestPage2ClientId = "5678";
 const char* kTestPage3ClientId = "7890";
 const char* kTestPage4ClientId = "42";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestPage1Url() {
+  return GURL("http://test.org/page1");
+}
+GURL TestPage2Url() {
+  return GURL("http://test.org/page2");
+}
+GURL TestPage3Url() {
+  return GURL("http://test.org/page3");
+}
+GURL TestPage4Url() {
+  return GURL("http://test.org/page4");
+}
+
 void RunTasksForDuration(base::TimeDelta delta) {
   base::RunLoop run_loop;
   base::PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), delta);
@@ -247,22 +258,22 @@
 void OfflinePageUtilsTest::CreateOfflinePages() {
   // Create page 1.
   std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(
-      kTestPage1Url, base::FilePath(FILE_PATH_LITERAL("page1.mhtml"))));
+      TestPage1Url(), base::FilePath(FILE_PATH_LITERAL("page1.mhtml"))));
   offline_pages::ClientId client_id;
   client_id.name_space = kDownloadNamespace;
   client_id.id = kTestPage1ClientId;
-  SavePage(kTestPage1Url, client_id, std::move(archiver));
+  SavePage(TestPage1Url(), client_id, std::move(archiver));
 
   // Create page 2.
-  archiver = BuildArchiver(kTestPage2Url,
+  archiver = BuildArchiver(TestPage2Url(),
                            base::FilePath(FILE_PATH_LITERAL("page2.mhtml")));
   client_id.id = kTestPage2ClientId;
-  SavePage(kTestPage2Url, client_id, std::move(archiver));
+  SavePage(TestPage2Url(), client_id, std::move(archiver));
 }
 
 void OfflinePageUtilsTest::CreateRequests() {
   RequestCoordinator::SavePageLaterParams params;
-  params.url = kTestPage3Url;
+  params.url = TestPage3Url();
   params.client_id =
       offline_pages::ClientId(kDownloadNamespace, kTestPage3ClientId);
   base::RunLoop run_loop;
@@ -283,27 +294,27 @@
   // Time 01:00:00.
   clock()->Advance(base::TimeDelta::FromHours(1));
   std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(
-      kTestPage1Url, base::FilePath(FILE_PATH_LITERAL("page1.mhtml"))));
+      TestPage1Url(), base::FilePath(FILE_PATH_LITERAL("page1.mhtml"))));
   client_id.id = kTestPage1ClientId;
-  SavePage(kTestPage1Url, client_id, std::move(archiver));
+  SavePage(TestPage1Url(), client_id, std::move(archiver));
   // time 02:00:00.
   clock()->Advance(base::TimeDelta::FromHours(1));
-  archiver = BuildArchiver(kTestPage2Url,
+  archiver = BuildArchiver(TestPage2Url(),
                            base::FilePath(FILE_PATH_LITERAL("page2.mhtml")));
   client_id.id = kTestPage2ClientId;
-  SavePage(kTestPage2Url, client_id, std::move(archiver));
+  SavePage(TestPage2Url(), client_id, std::move(archiver));
   // time 03:00:00.
   clock()->Advance(base::TimeDelta::FromHours(1));
-  archiver = BuildArchiver(kTestPage3Url,
+  archiver = BuildArchiver(TestPage3Url(),
                            base::FilePath(FILE_PATH_LITERAL("page3.mhtml")));
   client_id.id = kTestPage3ClientId;
-  SavePage(kTestPage3Url, client_id, std::move(archiver));
+  SavePage(TestPage3Url(), client_id, std::move(archiver));
   // Add a temporary page to test boundary at 10:00:00.
   clock()->Advance(base::TimeDelta::FromHours(7));
-  archiver = BuildArchiver(kTestPage4Url,
+  archiver = BuildArchiver(TestPage4Url(),
                            base::FilePath(FILE_PATH_LITERAL("page4.mhtml")));
   client_id.id = kTestPage4ClientId;
-  SavePage(kTestPage4Url, client_id, std::move(archiver));
+  SavePage(TestPage4Url(), client_id, std::move(archiver));
   // Reset clock->to 03:00:00.
   clock()->Advance(base::TimeDelta::FromHours(-7));
 }
@@ -337,52 +348,58 @@
 TEST_F(OfflinePageUtilsTest, CheckDuplicateDownloads) {
   // The duplicate page should be found for this.
   EXPECT_EQ(OfflinePageUtils::DuplicateCheckResult::DUPLICATE_PAGE_FOUND,
-            CheckDuplicateDownloads(kTestPage1Url));
+            CheckDuplicateDownloads(TestPage1Url()));
 
   // The duplicate request should be found for this.
   EXPECT_EQ(OfflinePageUtils::DuplicateCheckResult::DUPLICATE_REQUEST_FOUND,
-            CheckDuplicateDownloads(kTestPage3Url));
+            CheckDuplicateDownloads(TestPage3Url()));
 
   // No duplicate should be found for this.
   EXPECT_EQ(OfflinePageUtils::DuplicateCheckResult::NOT_FOUND,
-            CheckDuplicateDownloads(kTestPage4Url));
+            CheckDuplicateDownloads(TestPage4Url()));
 }
 
 TEST_F(OfflinePageUtilsTest, ScheduleDownload) {
   // Pre-check.
-  ASSERT_EQ(0, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage1Url));
-  ASSERT_EQ(1, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage3Url));
-  ASSERT_EQ(0, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage4Url));
+  ASSERT_EQ(0,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage1Url()));
+  ASSERT_EQ(1,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage3Url()));
+  ASSERT_EQ(0,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage4Url()));
 
   // TODO(harringtond): Remove request creation in Setup().
   size_t request_count_wait = 1;
   // Re-downloading a page with duplicate page found.
   OfflinePageUtils::ScheduleDownload(
-      web_contents(), kDownloadNamespace, kTestPage1Url,
+      web_contents(), kDownloadNamespace, TestPage1Url(),
       OfflinePageUtils::DownloadUIActionFlags::NONE);
   WaitForRequestMinCount(++request_count_wait);
-  EXPECT_EQ(1, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage1Url));
+  EXPECT_EQ(1,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage1Url()));
 
   // Re-downloading a page with duplicate request found.
   OfflinePageUtils::ScheduleDownload(
-      web_contents(), kDownloadNamespace, kTestPage3Url,
+      web_contents(), kDownloadNamespace, TestPage3Url(),
       OfflinePageUtils::DownloadUIActionFlags::NONE);
   WaitForRequestMinCount(++request_count_wait);
-  EXPECT_EQ(2, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage3Url));
+  EXPECT_EQ(2,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage3Url()));
 
   // Downloading a page with no duplicate found.
   OfflinePageUtils::ScheduleDownload(
-      web_contents(), kDownloadNamespace, kTestPage4Url,
+      web_contents(), kDownloadNamespace, TestPage4Url(),
       OfflinePageUtils::DownloadUIActionFlags::NONE);
   WaitForRequestMinCount(++request_count_wait);
-  EXPECT_EQ(1, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage4Url));
+  EXPECT_EQ(1,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage4Url()));
 }
 
 #if defined(OS_ANDROID)
 TEST_F(OfflinePageUtilsTest, ScheduleDownloadWithFailedFileAcecssRequest) {
   DownloadControllerBase::Get()->SetApproveFileAccessRequestForTesting(false);
   OfflinePageUtils::ScheduleDownload(
-      web_contents(), kDownloadNamespace, kTestPage4Url,
+      web_contents(), kDownloadNamespace, TestPage4Url(),
       OfflinePageUtils::DownloadUIActionFlags::NONE);
 
   // Here, we're waiting to make sure a request is not created. We can't use
@@ -390,7 +407,8 @@
   // Instead, just wait a bit and assume ScheduleDownload is complete.
   RunTasksForDuration(base::TimeDelta::FromSeconds(1));
 
-  EXPECT_EQ(0, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage4Url));
+  EXPECT_EQ(0,
+            FindRequestByNamespaceAndURL(kDownloadNamespace, TestPage4Url()));
 }
 #endif
 
diff --git a/chrome/browser/offline_pages/recent_tab_helper_unittest.cc b/chrome/browser/offline_pages/recent_tab_helper_unittest.cc
index 0c48b94..28464b4 100644
--- a/chrome/browser/offline_pages/recent_tab_helper_unittest.cc
+++ b/chrome/browser/offline_pages/recent_tab_helper_unittest.cc
@@ -33,9 +33,17 @@
 
 namespace {
 using IsSavingSamePageEnum = RecentTabHelper::IsSavingSamePageEnum;
-const GURL kTestPageUrl("http://mystery.site/foo.html");
-const GURL kTestPageUrlOther("http://crazy.site/foo_other.html");
 const int kTabId = 153;
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestPageUrl() {
+  return GURL("http://mystery.site/foo.html");
+}
+GURL TestPageUrlOther() {
+  return GURL("http://crazy.site/foo_other.html");
+}
+
 }  // namespace
 
 class TestDelegate: public RecentTabHelper::Delegate {
@@ -338,7 +346,7 @@
 // snapshot is created only when the latter happens.
 TEST_F(RecentTabHelperTest, LastNCaptureAfterLoad) {
   // Navigate and finish loading. Nothing should be saved.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
 
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   // Move the snapshot controller's time forward so it gets past timeouts.
@@ -351,7 +359,7 @@
   RunUntilIdle();
   EXPECT_EQ(1U, page_added_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   EXPECT_EQ(kLastNNamespace, GetAllPages()[0].client_id.name_space);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 1);
@@ -361,7 +369,7 @@
 // snapshot should not be created.
 TEST_F(RecentTabHelperTest, NoLastNCaptureIfTabHiddenTooEarlyInPageLoad) {
   // Commit the navigation and hide the tab. Nothing should be saved.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
   RunUntilIdle();
   EXPECT_EQ(0U, page_added_count());
@@ -384,7 +392,7 @@
   recent_tab_helper()->SetDelegate(
       std::make_unique<TestDelegate>(this, kTabId, false));
 
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -405,7 +413,7 @@
   default_test_delegate()->SetAsLowEndDevice();
 
   // Navigate and finish loading then hide the tab. Nothing should be saved.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
 
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
@@ -431,7 +439,7 @@
   default_test_delegate()->set_is_custom_tab(true);
 
   // Navigate and finish loading then hide the tab. Nothing should be saved.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -464,7 +472,7 @@
 // Triggers two last_n snapshot captures during a single page load. Should end
 // up with one snapshot, the 1st being replaced by the 2nd.
 TEST_F(RecentTabHelperTest, TwoCapturesSamePageLoad) {
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
 
   // Set page loading state to the 1st snapshot-able stage. No capture so far.
   recent_tab_helper()->DocumentAvailableInMainFrame();
@@ -477,7 +485,7 @@
   EXPECT_EQ(1U, page_added_count());
   EXPECT_EQ(0U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 1);
   int64_t first_offline_id = GetAllPages()[0].offline_id;
@@ -497,7 +505,7 @@
   EXPECT_EQ(2U, page_added_count());
   EXPECT_EQ(1U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   EXPECT_NE(first_offline_id, GetAllPages()[0].offline_id);
   histogram_tester()->ExpectTotalCount("OfflinePages.LastN.IsSavingSamePage",
                                        2);
@@ -512,7 +520,7 @@
 // TODO(carlosk): re-enable once https://crbug.com/705079 is fixed.
 TEST_F(RecentTabHelperTest, DISABLED_TwoCapturesWhere2ndFailsSamePageLoad) {
   // Navigate and load until the 1st stage. Tab hidden should trigger a capture.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentAvailableInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -520,7 +528,7 @@
   EXPECT_EQ(1U, page_added_count());
   EXPECT_EQ(0U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   int64_t first_offline_id = GetAllPages()[0].offline_id;
 
   // Updates the delegate so that will make the second snapshot fail.
@@ -539,7 +547,7 @@
   EXPECT_EQ(1U, page_added_count());
   EXPECT_EQ(0U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   EXPECT_EQ(first_offline_id, GetAllPages()[0].offline_id);
 }
 
@@ -547,7 +555,7 @@
 // reload). Should end up with a single snapshot (from the 2nd load).
 TEST_F(RecentTabHelperTest, TwoCapturesDifferentPageLoadsSameUrl) {
   // Fully load the page. Hide the tab and check for a snapshot.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -555,14 +563,14 @@
   EXPECT_EQ(1U, page_added_count());
   EXPECT_EQ(0U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 1);
   int64_t first_offline_id = GetAllPages()[0].offline_id;
 
   // Reload the same URL until the page is minimally loaded. The previous
   // snapshot should have been removed.
-  NavigateAndCommitTyped(kTestPageUrl);
+  NavigateAndCommitTyped(TestPageUrl());
   recent_tab_helper()->DocumentAvailableInMainFrame();
   FastForwardSnapshotController();
   EXPECT_EQ(1U, page_added_count());
@@ -575,7 +583,7 @@
   EXPECT_EQ(2U, page_added_count());
   EXPECT_EQ(1U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   EXPECT_NE(first_offline_id, GetAllPages()[0].offline_id);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 2);
@@ -586,7 +594,7 @@
 // pages (a privacy driven decision).
 TEST_F(RecentTabHelperTest, TwoCapturesWhere2ndFailsDifferentPageLoadsSameUrl) {
   // Fully load the page then hide the tab. A capture is expected.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -594,7 +602,7 @@
   EXPECT_EQ(1U, page_added_count());
   EXPECT_EQ(0U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 1);
 
@@ -606,7 +614,7 @@
 
   // Fully load the page once more then hide the tab again. A capture happens
   // and fails but no snapshot should remain.
-  NavigateAndCommitTyped(kTestPageUrl);
+  NavigateAndCommitTyped(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -622,7 +630,7 @@
 // Should end up with a single snapshot of the last page.
 TEST_F(RecentTabHelperTest, TwoCapturesDifferentPageLoadsDifferentUrls) {
   // Fully load the first URL then hide the tab and check for a snapshot.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
 
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
@@ -631,12 +639,12 @@
   EXPECT_EQ(1U, page_added_count());
   EXPECT_EQ(0U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 1);
 
   // Fully load the second URL. The previous snapshot should have been deleted.
-  NavigateAndCommitTyped(kTestPageUrlOther);
+  NavigateAndCommitTyped(TestPageUrlOther());
 
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
@@ -650,7 +658,7 @@
   EXPECT_EQ(2U, page_added_count());
   EXPECT_EQ(1U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrlOther, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrlOther(), GetAllPages()[0].url);
   histogram_tester()->ExpectUniqueSample("OfflinePages.LastN.IsSavingSamePage",
                                          IsSavingSamePageEnum::kNewPage, 2);
 }
@@ -662,7 +670,7 @@
 TEST_F(RecentTabHelperTest, TwoLastNAndTwoDownloadCapturesSamePage) {
   // Fully loads the page with intermediary steps where the tab is hidden. Then
   // check that two last_n snapshots were created but only one was kept.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentAvailableInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -674,7 +682,7 @@
   EXPECT_EQ(2U, page_added_count());
   EXPECT_EQ(1U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
-  EXPECT_EQ(kTestPageUrl, GetAllPages()[0].url);
+  EXPECT_EQ(TestPageUrl(), GetAllPages()[0].url);
   histogram_tester()->ExpectTotalCount("OfflinePages.LastN.IsSavingSamePage",
                                        2);
   histogram_tester()->ExpectBucketCount("OfflinePages.LastN.IsSavingSamePage",
@@ -696,7 +704,7 @@
   EXPECT_NE(nullptr, FindPageForOfflineId(first_offline_id));
   const OfflinePageItem* second_page = FindPageForOfflineId(second_offline_id);
   ASSERT_NE(nullptr, second_page);
-  EXPECT_EQ(kTestPageUrl, second_page->url);
+  EXPECT_EQ(TestPageUrl(), second_page->url);
   EXPECT_EQ(second_client_id, second_page->client_id);
 
   // Second snapshot request by downloads. Three offline pages are expected.
@@ -712,7 +720,7 @@
   EXPECT_NE(nullptr, FindPageForOfflineId(second_offline_id));
   const OfflinePageItem* third_page = FindPageForOfflineId(third_offline_id);
   ASSERT_NE(nullptr, third_page);
-  EXPECT_EQ(kTestPageUrl, third_page->url);
+  EXPECT_EQ(TestPageUrl(), third_page->url);
   EXPECT_EQ(third_client_id, third_page->client_id);
   histogram_tester()->ExpectTotalCount("OfflinePages.LastN.IsSavingSamePage",
                                        2);
@@ -721,7 +729,7 @@
 // Simulates an error (disconnection) during the load of a page. Should end up
 // with no offline pages for any requester.
 TEST_F(RecentTabHelperTest, NoCaptureOnErrorPage) {
-  FailLoad(kTestPageUrl);
+  FailLoad(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -738,7 +746,7 @@
 TEST_F(RecentTabHelperTest, LastNFeatureNotEnabled) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndDisableFeature(kOffliningRecentPagesFeature);
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -760,7 +768,7 @@
 TEST_F(RecentTabHelperTest, DownloadRequestEarlyInLoad) {
   // Commit the navigation and request the snapshot from downloads. No captures
   // so far.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   const ClientId client_id = NewDownloadClientId();
   recent_tab_helper()->ObserveAndDownloadCurrentPage(client_id, 153L, "");
   FastForwardSnapshotController();
@@ -771,7 +779,7 @@
   FastForwardSnapshotController();
   ASSERT_EQ(1U, GetAllPages().size());
   const OfflinePageItem& early_page = GetAllPages()[0];
-  EXPECT_EQ(kTestPageUrl, early_page.url);
+  EXPECT_EQ(TestPageUrl(), early_page.url);
   EXPECT_EQ(client_id, early_page.client_id);
   EXPECT_EQ(153L, early_page.offline_id);
 
@@ -782,7 +790,7 @@
   EXPECT_EQ(1U, model_removed_count());
   ASSERT_EQ(1U, GetAllPages().size());
   const OfflinePageItem& later_page = GetAllPages()[0];
-  EXPECT_EQ(kTestPageUrl, later_page.url);
+  EXPECT_EQ(TestPageUrl(), later_page.url);
   EXPECT_EQ(client_id, later_page.client_id);
   EXPECT_EQ(153L, later_page.offline_id);
   histogram_tester()->ExpectTotalCount("OfflinePages.LastN.IsSavingSamePage",
@@ -793,7 +801,7 @@
 // is minimally loaded. Should execute two captures but only the final one is
 // kept.
 TEST_F(RecentTabHelperTest, DownloadRequestLaterInLoad) {
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentAvailableInMainFrame();
   FastForwardSnapshotController();
   ASSERT_EQ(0U, GetAllPages().size());
@@ -803,7 +811,7 @@
   RunUntilIdle();
   ASSERT_EQ(1U, GetAllPages().size());
   const OfflinePageItem& page = GetAllPages()[0];
-  EXPECT_EQ(kTestPageUrl, page.url);
+  EXPECT_EQ(TestPageUrl(), page.url);
   EXPECT_EQ(client_id, page.client_id);
   EXPECT_EQ(153L, page.offline_id);
 
@@ -819,7 +827,7 @@
 // Simulates a download request to offline the current page made after loading
 // is completed. Should end up with one offline page.
 TEST_F(RecentTabHelperTest, DownloadRequestAfterFullyLoad) {
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   ASSERT_EQ(0U, GetAllPages().size());
@@ -829,7 +837,7 @@
   RunUntilIdle();
   ASSERT_EQ(1U, GetAllPages().size());
   const OfflinePageItem& page = GetAllPages()[0];
-  EXPECT_EQ(kTestPageUrl, page.url);
+  EXPECT_EQ(TestPageUrl(), page.url);
   EXPECT_EQ(client_id, page.client_id);
   EXPECT_EQ(153L, page.offline_id);
   EXPECT_EQ("", page.request_origin);
@@ -840,7 +848,7 @@
 // Simulates a download request to offline the current page made after loading
 // is completed. Should end up with one offline page.
 TEST_F(RecentTabHelperTest, DownloadRequestAfterFullyLoadWithOrigin) {
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   ASSERT_EQ(0U, GetAllPages().size());
@@ -850,7 +858,7 @@
   RunUntilIdle();
   ASSERT_EQ(1U, GetAllPages().size());
   const OfflinePageItem& page = GetAllPages()[0];
-  EXPECT_EQ(kTestPageUrl, page.url);
+  EXPECT_EQ(TestPageUrl(), page.url);
   EXPECT_EQ(client_id, page.client_id);
   EXPECT_EQ(153L, page.offline_id);
   EXPECT_EQ("abc", page.request_origin);
@@ -861,7 +869,7 @@
 // Simulates requests coming from last_n and downloads at the same time for a
 // fully loaded page.
 TEST_F(RecentTabHelperTest, SimultaneousCapturesFromLastNAndDownloads) {
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -877,13 +885,13 @@
   const OfflinePageItem* downloads_page =
       FindPageForOfflineId(download_offline_id);
   ASSERT_TRUE(downloads_page);
-  EXPECT_EQ(kTestPageUrl, downloads_page->url);
+  EXPECT_EQ(TestPageUrl(), downloads_page->url);
   EXPECT_EQ(download_client_id, downloads_page->client_id);
 
   const OfflinePageItem& last_n_page =
       GetAllPages()[0].offline_id != download_offline_id ? GetAllPages()[0]
                                                          : GetAllPages()[1];
-  EXPECT_EQ(kTestPageUrl, last_n_page.url);
+  EXPECT_EQ(TestPageUrl(), last_n_page.url);
   EXPECT_EQ(kLastNNamespace, last_n_page.client_id.name_space);
 }
 
@@ -892,7 +900,7 @@
 // snapshots (so that dynamic pages are properly persisted; navigation/loading
 // signals are poor signals for those).
 TEST_F(RecentTabHelperTest, DuplicateTabHiddenEventsShouldTriggerNewSnapshots) {
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentAvailableInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -943,7 +951,7 @@
 // are ignored.
 TEST_F(RecentTabHelperTest, OverlappingDownloadRequestsAreIgnored) {
   // Navigates and commits then make two download snapshot requests.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   const ClientId client_id_1 = NewDownloadClientId();
   const int64_t offline_id_1 = 153L;
   recent_tab_helper()->ObserveAndDownloadCurrentPage(client_id_1, offline_id_1,
@@ -985,7 +993,7 @@
 // last_n and downloads.
 TEST_F(RecentTabHelperTest, SaveSameDocumentNavigationSnapshots) {
   // Navigates and load fully then hide the tab so that a snapshot is created.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -998,7 +1006,7 @@
 
   // Now navigates same page and check the results of hiding the tab again.
   // Another snapshot should be created to the updated URL.
-  const GURL kTestPageUrlWithFragment(kTestPageUrl.spec() + "#aaa");
+  const GURL kTestPageUrlWithFragment(TestPageUrl().spec() + "#aaa");
   NavigateAndCommit(kTestPageUrlWithFragment);
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
   RunUntilIdle();
@@ -1031,7 +1039,7 @@
 // Tests that a page reloaded is tracked as an actual load and properly saved.
 TEST_F(RecentTabHelperTest, ReloadIsTrackedAsNavigationAndSavedOnlyUponLoad) {
   // Navigates and load fully then hide the tab so that a snapshot is created.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   recent_tab_helper()->OnVisibilityChanged(content::Visibility::HIDDEN);
@@ -1068,7 +1076,7 @@
 TEST_F(RecentTabHelperTest, NoSaveIfTabIsClosing) {
   // Navigates and fully load then close and hide the tab. No snapshots are
   // expected.
-  NavigateAndCommit(kTestPageUrl);
+  NavigateAndCommit(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   // Note: These two next calls are always expected to happen in this order.
@@ -1096,7 +1104,7 @@
 TEST_F(RecentTabHelperTest, NoSaveOfflinePageCacheForPost) {
   // Navigate and finish loading, then move the snapshot controller's time
   // forward so it gets past timeouts. Nothing should be saved.
-  NavigateAndCommitPost(kTestPageUrl);
+  NavigateAndCommitPost(TestPageUrl());
   recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
   FastForwardSnapshotController();
   ASSERT_EQ(0U, GetAllPages().size());
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
index f59af56..dcbd014d 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
@@ -225,6 +225,20 @@
   if (ancestor_data && ancestor_data->root_frame_tree_node_id() ==
                            subframe_rfh->GetFrameTreeNodeId())
     ancestor_data->set_timing(timing.Clone());
+
+  // Set creative origin status if this is the first FCP for any frame in the
+  // root ad frame's subtree.
+  if (ancestor_data && timing.paint_timing->first_contentful_paint &&
+      ancestor_data->creative_origin_status() ==
+          FrameData::OriginStatus::kUnknown) {
+    FrameData::OriginStatus origin_status =
+        AdsPageLoadMetricsObserver::IsSubframeSameOriginToMainFrame(
+            subframe_rfh,
+            !ancestor_data->frame_navigated() /* use_parent_origin */)
+            ? FrameData::OriginStatus::kSame
+            : FrameData::OriginStatus::kCross;
+    ancestor_data->set_creative_origin_status(origin_status);
+  }
 }
 
 void AdsPageLoadMetricsObserver::OnCpuTimingUpdate(
@@ -902,6 +916,11 @@
     ADS_HISTOGRAM("FrameCounts.AdFrames.PerFrame.OriginStatus",
                   UMA_HISTOGRAM_ENUMERATION, visibility,
                   ad_frame_data.origin_status());
+
+    ADS_HISTOGRAM("FrameCounts.AdFrames.PerFrame.CreativeOriginStatus",
+                  UMA_HISTOGRAM_ENUMERATION, visibility,
+                  ad_frame_data.creative_origin_status());
+
     ADS_HISTOGRAM("FrameCounts.AdFrames.PerFrame.UserActivation",
                   UMA_HISTOGRAM_ENUMERATION, visibility,
                   ad_frame_data.user_activation_status());
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
index 05a4d02..1e06616 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
+#include "base/strings/strcat.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -38,6 +39,7 @@
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/test_navigation_observer.h"
 #include "media/base/media_switches.h"
+#include "net/base/escape.h"
 #include "net/base/net_errors.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/controllable_http_response.h"
@@ -57,6 +59,10 @@
     "PageLoad.Clients.Ads.FrameCounts.AdFrames.PerFrame."
     "OriginStatus";
 
+const char kCreativeOriginHistogramId[] =
+    "PageLoad.Clients.Ads.FrameCounts.AdFrames.PerFrame."
+    "CreativeOriginStatus";
+
 const char kAdUserActivationHistogramId[] =
     "PageLoad.Clients.Ads.FrameCounts.AdFrames.PerFrame."
     "UserActivation";
@@ -221,6 +227,184 @@
       static_cast<int>(FrameData::OriginStatus::kCross));
 }
 
+// Each CreativeOriginStatus* browser test inputs a pointer to a frame object
+// representing the frame tree path of a website with with a (possibly null)
+// ad subframe, which itself may have linearly nested subframes.
+// Each test then queries cross_site_iframe_factory.html with the query string
+// corresponding to the frame tree path, computes the actual creative origin
+// status and compares it to the expected creative origin status.
+class CreativeOriginAdsPageLoadMetricsObserverBrowserTest
+    : public AdsPageLoadMetricsObserverBrowserTest {
+ public:
+  CreativeOriginAdsPageLoadMetricsObserverBrowserTest() = default;
+  ~CreativeOriginAdsPageLoadMetricsObserverBrowserTest() override = default;
+
+  // Data structure to store the frame tree path for the root/main frame and
+  // its single ad subframe (if such a child exists), as well as to keep track
+  // of whether or not to render text in the frame. A child frame may have at
+  // most one child frame of its own, and so forth.
+  class Frame {
+   public:
+    Frame(std::string origin,
+          std::unique_ptr<Frame> child,
+          bool has_text = false)
+        : origin_(origin), child_(std::move(child)), has_text_(has_text) {}
+
+    ~Frame() = default;
+
+    bool HasChild() const { return child_ != nullptr; }
+
+    bool HasDescendantRenderingText(bool is_top_frame = true) const {
+      if (!is_top_frame && has_text_)
+        return true;
+
+      if (!child_)
+        return false;
+
+      return child_->HasDescendantRenderingText(false);
+    }
+
+    std::string Hostname() const { return origin_ + ".com"; }
+
+    std::string Print(bool should_escape = false) const {
+      std::vector<std::string> query_pieces = {origin_};
+      if (!has_text_)
+        query_pieces.push_back("{no-text-render}");
+      query_pieces.push_back("(");
+      if (child_)
+        query_pieces.push_back(child_->Print());
+      query_pieces.push_back(")");
+      std::string out = base::StrCat(query_pieces);
+      if (should_escape)
+        out = net::EscapeQueryParamValue(out, false /* use_plus */);
+      return out;
+    }
+
+    std::string PrintChild(bool should_escape = false) const {
+      return HasChild() ? child_->Print(should_escape) : "";
+    }
+
+   private:
+    std::string origin_;
+    std::unique_ptr<Frame> child_;
+    bool has_text_;
+  };
+
+  // A convenience function to make frame creation less verbose.
+  std::unique_ptr<Frame> MakeFrame(std::string origin,
+                                   std::unique_ptr<Frame> child,
+                                   bool has_text = false) {
+    return std::make_unique<Frame>(origin, std::move(child), has_text);
+  }
+
+  void TestCreativeOriginStatus(std::unique_ptr<Frame> frames,
+                                FrameData::OriginStatus expected_status =
+                                    FrameData::OriginStatus::kUnknown) {
+    base::HistogramTester histogram_tester;
+
+    // The file cross_site_iframe_factory.html loads URLs like:
+    // http://a.com:40919/
+    //   cross_site_iframe_factory.html?a{no-text-render}(b(c{no-text-render}))
+    // The frame thus intended as the creative will be the only one in which
+    // text renders.
+    std::string ad_suffix = frames->PrintChild(true /* should_escape */);
+    if (!ad_suffix.empty())
+      SetRulesetToDisallowURLsWithPathSuffix(ad_suffix);
+    std::string query = frames->Print();
+    std::string relative_url = "/cross_site_iframe_factory.html?" + query;
+    const GURL main_url(
+        embedded_test_server()->GetURL(frames->Hostname(), relative_url));
+
+    // If there is text to render in any subframe, wait until there is a first
+    // contentful paint.  Load some bytes in any case.
+    auto waiter = CreatePageLoadMetricsTestWaiter();
+    if (frames->HasDescendantRenderingText()) {
+      waiter->AddSubFrameExpectation(
+          page_load_metrics::PageLoadMetricsTestWaiter::TimingField::
+              kFirstContentfulPaint);
+    } else if (frames->HasChild()) {
+      waiter->AddSubframeDataExpectation();
+    }
+    EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), main_url));
+    waiter->Wait();
+
+    // Navigate away to force the histogram recording.
+    EXPECT_TRUE(
+        ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)));
+
+    // Test histograms.
+    if (frames->HasChild()) {
+      histogram_tester.ExpectUniqueSample(kCreativeOriginHistogramId,
+                                          expected_status, 1);
+    } else {
+      // If no subframe exists, verify that histogram is not set.
+      histogram_tester.ExpectTotalCount(kCreativeOriginHistogramId, 0);
+    }
+  }
+};
+
+// Test that an ad with same origin as the main page is same-origin.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusSame) {
+  TestCreativeOriginStatus(
+      MakeFrame("a",
+                MakeFrame("a", MakeFrame("b", MakeFrame("c", nullptr)), true)),
+      FrameData::OriginStatus::kSame);
+}
+
+// Test that an ad with a different origin as the main page is cross-origin.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusCross) {
+  TestCreativeOriginStatus(
+      MakeFrame("a", MakeFrame("b", MakeFrame("c", nullptr), true)),
+      FrameData::OriginStatus::kCross);
+}
+
+// Test that an ad creative with the same different origin as the main page,
+// but nested in a cross-origin root ad frame, is same-origin.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusSameNested) {
+  TestCreativeOriginStatus(
+      MakeFrame("a",
+                MakeFrame("b", MakeFrame("a", MakeFrame("c", nullptr), true))),
+      FrameData::OriginStatus::kSame);
+}
+
+// Test that an ad creative with a different origin as the main page,
+// but nested in a same-origin root ad frame, is cross-origin.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusCrossNested) {
+  TestCreativeOriginStatus(
+      MakeFrame("a",
+                MakeFrame("a", MakeFrame("b", MakeFrame("c", nullptr), true))),
+      FrameData::OriginStatus::kCross);
+}
+
+// Test that an ad creative with a different origin as the main page,
+// but nested two deep in a same-origin root ad frame, is cross-origin.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusCrossDoubleNested) {
+  TestCreativeOriginStatus(
+      MakeFrame("a",
+                MakeFrame("a", MakeFrame("a", MakeFrame("b", nullptr, true)))),
+      FrameData::OriginStatus::kCross);
+}
+
+// Test that if no iframe renders text, the creative origin status is
+// indeterminate.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusNoCreativeDesignated) {
+  TestCreativeOriginStatus(
+      MakeFrame("a", MakeFrame("b", MakeFrame("c", nullptr))),
+      FrameData::OriginStatus::kUnknown);
+}
+
+// Test that if no iframe is created, there is no histogram set.
+IN_PROC_BROWSER_TEST_F(CreativeOriginAdsPageLoadMetricsObserverBrowserTest,
+                       CreativeOriginStatusNoSubframes) {
+  TestCreativeOriginStatus(MakeFrame("a", nullptr));
+}
+
 IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
                        UserActivationSetOnFrame) {
   base::HistogramTester histogram_tester;
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
index 03919a3..3e9ec84 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
@@ -80,6 +80,12 @@
   }
 };
 
+struct CreativeOriginTest {
+  std::vector<std::string> urls;
+  size_t creative_index;
+  FrameData::OriginStatus expected_origin_status;
+};
+
 enum class ResourceCached { kNotCached = 0, kCachedHttp, kCachedMemory };
 enum class FrameType { AD = 0, NON_AD };
 
@@ -509,6 +515,69 @@
     tester_->SimulateResourceDataUseUpdate(resources, render_frame_host);
   }
 
+  void SimulateFirstContentfulPaint(base::TimeDelta first_contentful_paint,
+                                    RenderFrameHost* ad_frame) {
+    page_load_metrics::mojom::PageLoadTiming timing;
+    page_load_metrics::InitPageLoadTimingForTest(&timing);
+    timing.navigation_start = base::Time::Now();
+    timing.parse_timing->parse_start = base::TimeDelta::FromMilliseconds(3);
+    timing.paint_timing->first_contentful_paint = first_contentful_paint;
+    PopulateRequiredTimingFields(&timing);
+    tester()->SimulateTimingUpdate(timing, ad_frame);
+  }
+
+  // Given |creative_origin_test|, creates nested frames in the order given in
+  // |creative_origin_test.urls|, causes the frame with index
+  // |creative_origin_test.creative_index| to paint text first, and verifies
+  // that the creative's origin matches
+  // |creative_origin_test.expected_origin_status|.
+  void TestCreativeOriginStatus(
+      const CreativeOriginTest& creative_origin_test) {
+    const char kCreativeOriginStatusHistogramId[] =
+        "PageLoad.Clients.Ads.FrameCounts.AdFrames.PerFrame."
+        "CreativeOriginStatus";
+
+    base::HistogramTester histograms;
+
+    // Navigate main frame.
+    RenderFrameHost* main_frame =
+        NavigateMainFrame(creative_origin_test.urls.front());
+    std::vector<RenderFrameHost*> frames;
+    frames.push_back(main_frame);
+
+    // Create and navigate each subframe so that it has the origin given at
+    // the corresponding index of |frame_origins.origins|.
+    RenderFrameHost* current_frame = main_frame;
+    for (size_t i = 1; i < creative_origin_test.urls.size(); ++i) {
+      // Create subframe and page load timing.
+      current_frame = CreateAndNavigateSubFrame(creative_origin_test.urls[i],
+                                                current_frame);
+      frames.push_back(current_frame);
+
+      // Load bytes in frame.
+      ResourceDataUpdate(current_frame, ResourceCached::kNotCached, 10);
+    }
+
+    // In order to test that |creative_origin_status_| in FrameData is properly
+    // computed, we need to simulate first contentful paint for the ad creative.
+    SimulateFirstContentfulPaint(base::TimeDelta::FromMilliseconds(5),
+                                 frames[creative_origin_test.creative_index]);
+
+    // Simulate first contentful paint for other subframes.
+    for (size_t i = 0; i < frames.size(); ++i) {
+      if (i != creative_origin_test.creative_index) {
+        SimulateFirstContentfulPaint(base::TimeDelta::FromMilliseconds(10 + i),
+                                     frames[i]);
+      }
+    }
+
+    // Navigate again to trigger histograms, then test them.
+    NavigateFrame(kNonAdUrl, main_frame);
+    histograms.ExpectUniqueSample(kCreativeOriginStatusHistogramId,
+                                  creative_origin_test.expected_origin_status,
+                                  1);
+  }
+
   void TimingUpdate(const page_load_metrics::mojom::PageLoadTiming& timing) {
     tester_->SimulateTimingUpdate(timing);
   }
@@ -1638,6 +1707,52 @@
       entries.front(), ukm::builders::AdFrameLoad::kTiming_InteractiveName, 20);
 }
 
+// Tests that creative origin status is computed as intended, i.e. as the origin
+// status of the frame in the ad frame tree that has its first contentful paint
+// occur first.
+TEST_F(AdsPageLoadMetricsObserverTest, CreativeOriginStatus) {
+  using OriginStatus = FrameData::OriginStatus;
+
+  // Each CreativeOriginTest struct lists the urls of the frames in the frame
+  // tree, from main frame to leaf ad frame, along with the index of the ad
+  // creative and the expected creative origin status.
+  std::vector<CreativeOriginTest> test_cases = {
+      {{"http://a.com", "http://a.com/disallowed.html"},
+       1,
+       OriginStatus::kSame},
+      {{"http://a.com", "http://b.com/disallowed.html"},
+       1,
+       OriginStatus::kCross},
+      {{"http://a.com", "http://a.com/disallowed.html", "http://b.com"},
+       1,
+       OriginStatus::kSame},
+      {{"http://a.com", "http://a.com/disallowed.html", "http://b.com"},
+       2,
+       OriginStatus::kCross},
+      {{"http://a.com", "http://b.com/disallowed.html", "http://a.com"},
+       1,
+       OriginStatus::kCross},
+      {{"http://a.com", "http://b.com/disallowed.html", "http://a.com"},
+       2,
+       OriginStatus::kSame},
+      {{"http://a.com", "http://b.com/disallowed.html", "http://a.com",
+        "http://b.com"},
+       1,
+       OriginStatus::kCross},
+      {{"http://a.com", "http://b.com/disallowed.html", "http://a.com",
+        "http://b.com"},
+       2,
+       OriginStatus::kSame},
+      {{"http://a.com", "http://b.com/disallowed.html", "http://a.com",
+        "http://b.com"},
+       3,
+       OriginStatus::kCross}};
+
+  for (const auto& creative_origin_test : test_cases) {
+    TestCreativeOriginStatus(creative_origin_test);
+  }
+}
+
 // Tests that even when the intervention is not enabled, we still record the
 // computed heavy ad types for ad frames
 TEST_F(AdsPageLoadMetricsObserverTest, HeavyAdFeatureOff_UMARecorded) {
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.cc
index 6feadf8..12395c6 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.cc
@@ -62,6 +62,7 @@
       network_bytes_(0u),
       same_origin_bytes_(0u),
       origin_status_(OriginStatus::kUnknown),
+      creative_origin_status_(OriginStatus::kUnknown),
       frame_navigated_(false),
       user_activation_status_(UserActivationStatus::kNoActivation),
       is_display_none_(false),
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.h b/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.h
index f5d57e8..ae5c9a3 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.h
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.h
@@ -187,6 +187,10 @@
 
   OriginStatus origin_status() const { return origin_status_; }
 
+  OriginStatus creative_origin_status() const {
+    return creative_origin_status_;
+  }
+
   size_t bytes() const { return bytes_; }
 
   size_t network_bytes() const { return network_bytes_; }
@@ -219,6 +223,10 @@
     timing_ = std::move(timing);
   }
 
+  void set_creative_origin_status(OriginStatus creative_origin_status) {
+    creative_origin_status_ = creative_origin_status;
+  }
+
   HeavyAdStatus heavy_ad_status() const { return heavy_ad_status_; }
 
   HeavyAdStatus heavy_ad_status_with_noise() const {
@@ -301,6 +309,7 @@
   // The number of bytes that are same origin to the root ad frame.
   size_t same_origin_bytes_;
   OriginStatus origin_status_;
+  OriginStatus creative_origin_status_;
   bool frame_navigated_;
   UserActivationStatus user_activation_status_;
   bool is_display_none_;
diff --git a/chrome/browser/page_load_metrics/observers/subresource_loading_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/subresource_loading_page_load_metrics_observer_unittest.cc
index cb028344..3236656 100644
--- a/chrome/browser/page_load_metrics/observers/subresource_loading_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/subresource_loading_page_load_metrics_observer_unittest.cc
@@ -19,7 +19,11 @@
 
 namespace {
 
-const GURL kTestUrl("https://chromium.org");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("https://chromium.org");
+}
 
 page_load_metrics::mojom::ResourceDataUpdatePtr CreateBaseResource(
     bool was_cached,
@@ -148,7 +152,7 @@
   TestSubresourceLoadingPageLoadMetricsObserver* plm_observer_ = nullptr;
   page_load_metrics::mojom::PageLoadTiming timing_;
 
-  GURL navigation_url_ = kTestUrl;
+  GURL navigation_url_ = TestUrl();
   bool in_main_frame_ = true;
 
   DISALLOW_COPY_AND_ASSIGN(SubresourceLoadingPageLoadMetricsObserverTest);
diff --git a/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc b/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
index 5234e2bd3..80f6321 100644
--- a/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
+++ b/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
@@ -19,9 +19,14 @@
 const char kExpectedQueueingTime[] = "ExpectedTaskQueueingDuration";
 const base::TimeDelta kTestMetricsReportDelayTimeout =
     kMetricsReportDelayTimeout + base::TimeDelta::FromSeconds(1);
-const GURL kDummyUrl("http://www.example.org");
 const std::string kHtmlMimeType = "text/html";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL DummyUrl() {
+  return GURL("http://www.example.org");
+}
+
 // TODO(crbug.com/759905) Enable on Windows once this bug is fixed.
 #if defined(OS_WIN)
 #define MAYBE_MetricsCollectorTest DISABLED_MetricsCollectorTest
@@ -58,8 +63,8 @@
 TEST_F(MAYBE_MetricsCollectorTest, FromBackgroundedToFirstTitleUpdatedUMA) {
   auto page_node = CreateNode<PageNodeImpl>();
 
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
   AdvanceClock(kTestMetricsReportDelayTimeout);
 
   page_node->SetIsVisible(true);
@@ -91,8 +96,8 @@
        FromBackgroundedToFirstTitleUpdatedUMA5MinutesTimeout) {
   auto page_node = CreateNode<PageNodeImpl>();
 
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
   page_node->SetIsVisible(false);
   page_node->OnTitleUpdated();
   // The page is within 5 minutes after main frame navigation was committed,
@@ -111,8 +116,8 @@
   auto page_node = CreateNode<PageNodeImpl>();
   auto frame_node = CreateFrameNodeAutoId(process_node.get(), page_node.get());
 
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
   AdvanceClock(kTestMetricsReportDelayTimeout);
 
   page_node->SetIsVisible(true);
@@ -147,8 +152,8 @@
   auto page_node = CreateNode<PageNodeImpl>();
   auto frame_node = CreateFrameNodeAutoId(process_node.get(), page_node.get());
 
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
   page_node->SetIsVisible(false);
   frame_node->OnNonPersistentNotificationCreated();
   // The page is within 5 minutes after main frame navigation was committed,
@@ -164,8 +169,8 @@
 TEST_F(MAYBE_MetricsCollectorTest, FromBackgroundedToFirstFaviconUpdatedUMA) {
   auto page_node = CreateNode<PageNodeImpl>();
 
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
   AdvanceClock(kTestMetricsReportDelayTimeout);
 
   page_node->SetIsVisible(true);
@@ -197,8 +202,8 @@
        FromBackgroundedToFirstFaviconUpdatedUMA5MinutesTimeout) {
   auto page_node = CreateNode<PageNodeImpl>();
 
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
   page_node->SetIsVisible(false);
   page_node->OnFaviconUpdated();
   // The page is within 5 minutes after main frame navigation was committed,
@@ -224,8 +229,8 @@
   GURL url = GURL("https://google.com/foobar");
   ukm_recorder.UpdateSourceURL(id, url);
   page_node->SetUkmSourceId(id);
-  page_node->OnMainFrameNavigationCommitted(false, base::TimeTicks::Now(),
-                                            kDummyID, kDummyUrl, kHtmlMimeType);
+  page_node->OnMainFrameNavigationCommitted(
+      false, base::TimeTicks::Now(), kDummyID, DummyUrl(), kHtmlMimeType);
 
   for (int count = 1; count < kDefaultFrequencyUkmEQTReported; ++count) {
     process_node->SetExpectedTaskQueueingDuration(
diff --git a/chrome/browser/performance_manager/persistence/site_data/site_data_cache_facade_unittest.cc b/chrome/browser/performance_manager/persistence/site_data/site_data_cache_facade_unittest.cc
index abd71b8..d357a14 100644
--- a/chrome/browser/performance_manager/persistence/site_data/site_data_cache_facade_unittest.cc
+++ b/chrome/browser/performance_manager/persistence/site_data/site_data_cache_facade_unittest.cc
@@ -23,8 +23,14 @@
 
 namespace {
 
-const url::Origin kTestOrigin = url::Origin::Create(GURL("http://www.a.com"));
-const url::Origin kTestOrigin2 = url::Origin::Create(GURL("http://www.b.com"));
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin TestOrigin() {
+  return url::Origin::Create(GURL("http://www.a.com"));
+}
+url::Origin TestOrigin2() {
+  return url::Origin::Create(GURL("http://www.b.com"));
+}
 
 // Mock version of a SiteDataCacheImpl. In practice instances of this object
 // live on the Performance Manager sequence and all the mocked methods will be
@@ -173,13 +179,13 @@
 // when there are no more references to it in the history, after the history is
 // partially cleared.
 TEST_F(SiteDataCacheFacadeTest, OnURLsDeleted_Partial_OriginNotReferenced) {
-  history::URLRows urls_to_delete = {history::URLRow(kTestOrigin.GetURL()),
-                                     history::URLRow(kTestOrigin2.GetURL())};
+  history::URLRows urls_to_delete = {history::URLRow(TestOrigin().GetURL()),
+                                     history::URLRow(TestOrigin2().GetURL())};
   history::DeletionInfo deletion_info =
       history::DeletionInfo::ForUrls(urls_to_delete, std::set<GURL>());
   deletion_info.set_deleted_urls_origin_map({
-      {kTestOrigin.GetURL(), {0, base::Time::Now()}},
-      {kTestOrigin2.GetURL(), {0, base::Time::Now()}},
+      {TestOrigin().GetURL(), {0, base::Time::Now()}},
+      {TestOrigin2().GetURL(), {0, base::Time::Now()}},
   });
 
   SiteDataCacheFacade data_cache_facade(profile());
@@ -187,7 +193,7 @@
 
   auto* mock_cache_raw = SetUpMockCache();
   mock_cache_raw->SetClearSiteDataForOriginsExpectations(
-      {kTestOrigin, kTestOrigin2});
+      {TestOrigin(), TestOrigin2()});
   data_cache_facade.OnURLsDeleted(nullptr, deletion_info);
   mock_cache_raw->WaitForExpectations();
 }
@@ -196,22 +202,22 @@
 // disk) when there remain references to it in the history, after the history is
 // partially cleared.
 TEST_F(SiteDataCacheFacadeTest, OnURLsDeleted_Partial_OriginStillReferenced) {
-  history::URLRows urls_to_delete = {history::URLRow(kTestOrigin.GetURL()),
-                                     history::URLRow(kTestOrigin2.GetURL())};
+  history::URLRows urls_to_delete = {history::URLRow(TestOrigin().GetURL()),
+                                     history::URLRow(TestOrigin2().GetURL())};
   history::DeletionInfo deletion_info =
       history::DeletionInfo::ForUrls(urls_to_delete, std::set<GURL>());
   deletion_info.set_deleted_urls_origin_map({
-      {kTestOrigin.GetURL(), {0, base::Time::Now()}},
-      {kTestOrigin2.GetURL(), {3, base::Time::Now()}},
+      {TestOrigin().GetURL(), {0, base::Time::Now()}},
+      {TestOrigin2().GetURL(), {3, base::Time::Now()}},
   });
 
   SiteDataCacheFacade data_cache_facade(profile());
   data_cache_facade.WaitUntilCacheInitializedForTesting();
 
   auto* mock_cache_raw = SetUpMockCache();
-  // |kTestOrigin2| shouldn't be removed as there's still some references to it
+  // |TestOrigin2()| shouldn't be removed as there's still some references to it
   // in the history.
-  mock_cache_raw->SetClearSiteDataForOriginsExpectations({kTestOrigin});
+  mock_cache_raw->SetClearSiteDataForOriginsExpectations({TestOrigin()});
   data_cache_facade.OnURLsDeleted(nullptr, deletion_info);
   mock_cache_raw->WaitForExpectations();
 }
diff --git a/chrome/browser/performance_manager/persistence/site_data/site_data_cache_impl_unittest.cc b/chrome/browser/performance_manager/persistence/site_data/site_data_cache_impl_unittest.cc
index 48d6993..4272542f 100644
--- a/chrome/browser/performance_manager/persistence/site_data/site_data_cache_impl_unittest.cc
+++ b/chrome/browser/performance_manager/persistence/site_data/site_data_cache_impl_unittest.cc
@@ -22,12 +22,17 @@
 
 namespace {
 
-const url::Origin kTestOrigin = url::Origin::Create(GURL("http://www.foo.com"));
-const url::Origin kTestOrigin2 =
-    url::Origin::Create(GURL("http://www.bar.com"));
-
 constexpr base::TimeDelta kDelay = base::TimeDelta::FromMinutes(1);
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin TestOrigin1() {
+  return url::Origin::Create(GURL("http://www.foo.com"));
+}
+url::Origin TestOrigin2() {
+  return url::Origin::Create(GURL("http://www.bar.com"));
+}
+
 class MockSiteCache : public testing::NoopSiteDataStore {
  public:
   MockSiteCache() = default;
@@ -62,23 +67,23 @@
   void WaitForAsyncOperationsToComplete() { task_environment_.RunUntilIdle(); }
 
   // Populates |writer_|, |reader_| and |data_| to refer to a tab navigated to
-  // |kTestOrigin| that updated its title in background. Populates |writer2_|,
-  // |reader2_| and |data2_| to refer to a tab navigated to |kTestOrigin2| that
+  // |TestOrigin1()| that updated its title in background. Populates |writer2_|,
+  // |reader2_| and |data2_| to refer to a tab navigated to |TestOrigin2()| that
   // updates its favicon in background.
   void SetupTwoSitesUsingFeaturesInBackground() {
     // Load a first origin, and then make use of a feature on it.
     ASSERT_FALSE(reader_);
-    reader_ = data_cache_->GetReaderForOrigin(kTestOrigin);
+    reader_ = data_cache_->GetReaderForOrigin(TestOrigin1());
     EXPECT_TRUE(reader_);
 
     ASSERT_FALSE(writer_);
     writer_ = data_cache_->GetWriterForOrigin(
-        kTestOrigin, performance_manager::TabVisibility::kBackground);
+        TestOrigin1(), performance_manager::TabVisibility::kBackground);
     EXPECT_TRUE(writer_);
 
     ASSERT_FALSE(data_);
     data_ =
-        data_cache_->origin_data_map_for_testing().find(kTestOrigin)->second;
+        data_cache_->origin_data_map_for_testing().find(TestOrigin1())->second;
     EXPECT_TRUE(data_);
 
     EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureUsageUnknown,
@@ -91,17 +96,17 @@
 
     // Load a second origin, make use of a feature on it too.
     ASSERT_FALSE(reader2_);
-    reader2_ = data_cache_->GetReaderForOrigin(kTestOrigin2);
+    reader2_ = data_cache_->GetReaderForOrigin(TestOrigin2());
     EXPECT_TRUE(reader2_);
 
     ASSERT_FALSE(writer2_);
     writer2_ = data_cache_->GetWriterForOrigin(
-        kTestOrigin2, performance_manager::TabVisibility::kBackground);
+        TestOrigin2(), performance_manager::TabVisibility::kBackground);
     EXPECT_TRUE(writer2_);
 
     ASSERT_FALSE(data2_);
     data2_ =
-        data_cache_->origin_data_map_for_testing().find(kTestOrigin2)->second;
+        data_cache_->origin_data_map_for_testing().find(TestOrigin2())->second;
     EXPECT_TRUE(data2_);
 
     EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureUsageUnknown,
@@ -133,10 +138,10 @@
 };
 
 TEST_F(SiteDataCacheImplTest, EndToEnd) {
-  auto reader = data_cache_->GetReaderForOrigin(kTestOrigin);
+  auto reader = data_cache_->GetReaderForOrigin(TestOrigin1());
   EXPECT_TRUE(reader);
   auto writer = data_cache_->GetWriterForOrigin(
-      kTestOrigin, performance_manager::TabVisibility::kBackground);
+      TestOrigin1(), performance_manager::TabVisibility::kBackground);
   EXPECT_TRUE(writer);
 
   EXPECT_EQ(1U, data_cache_->origin_data_map_for_testing().size());
@@ -151,9 +156,9 @@
   EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureInUse,
             reader->UpdatesTitleInBackground());
 
-  auto reader_copy = data_cache_->GetReaderForOrigin(kTestOrigin);
+  auto reader_copy = data_cache_->GetReaderForOrigin(TestOrigin1());
   EXPECT_EQ(1U, data_cache_->origin_data_map_for_testing().size());
-  auto reader2 = data_cache_->GetReaderForOrigin(kTestOrigin2);
+  auto reader2 = data_cache_->GetReaderForOrigin(TestOrigin2());
   EXPECT_EQ(2U, data_cache_->origin_data_map_for_testing().size());
   reader2.reset();
 
@@ -180,10 +185,10 @@
   // cache.
   const url::Origin kOriginNotInMap =
       url::Origin::Create(GURL("http://www.url-not-in-map.com"));
-  std::vector<url::Origin> origins_to_remove = {kTestOrigin, kOriginNotInMap};
+  std::vector<url::Origin> origins_to_remove = {TestOrigin1(), kOriginNotInMap};
   EXPECT_CALL(*mock_db_,
               RemoveSiteDataFromStore(::testing::WhenSorted(
-                  ::testing::ElementsAre(kTestOrigin, kOriginNotInMap))));
+                  ::testing::ElementsAre(TestOrigin1(), kOriginNotInMap))));
   data_cache_->ClearSiteDataForOrigins(origins_to_remove);
   ::testing::Mock::VerifyAndClear(mock_db_);
 
@@ -238,23 +243,23 @@
   EXPECT_EQ(0U, inspector->GetAllInMemoryOrigins().size());
   std::unique_ptr<SiteDataProto> data;
   bool is_dirty = false;
-  EXPECT_FALSE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+  EXPECT_FALSE(inspector->GetDataForOrigin(TestOrigin1(), &is_dirty, &data));
   EXPECT_FALSE(is_dirty);
   EXPECT_EQ(nullptr, data.get());
 
   {
     // Add an entry, see that it's reflected in the inspector interface.
     auto writer = data_cache_->GetWriterForOrigin(
-        kTestOrigin, performance_manager::TabVisibility::kBackground);
+        TestOrigin1(), performance_manager::TabVisibility::kBackground);
 
     EXPECT_EQ(1U, inspector->GetAllInMemoryOrigins().size());
-    EXPECT_TRUE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+    EXPECT_TRUE(inspector->GetDataForOrigin(TestOrigin1(), &is_dirty, &data));
     EXPECT_FALSE(is_dirty);
     ASSERT_NE(nullptr, data.get());
 
     // Touch the underlying data, see that the dirty bit updates.
     writer->NotifySiteLoaded();
-    EXPECT_TRUE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+    EXPECT_TRUE(inspector->GetDataForOrigin(TestOrigin1(), &is_dirty, &data));
     EXPECT_TRUE(is_dirty);
   }
 
diff --git a/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc b/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
index b5ab59f8..482449c 100644
--- a/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
+++ b/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/guid.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/no_destructor.h"
 #include "base/run_loop.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
@@ -48,63 +49,65 @@
   int number_of_hits;
   int number_of_misses;
   AutocompleteActionPredictor::Action expected_action;
-} test_url_db[] = {
-  { GURL("http://www.testsite.com/a.html"),
-    ASCIIToUTF16("Test - site - just a test"), 1,
-    ASCIIToUTF16("j"), 5, 0,
-    AutocompleteActionPredictor::ACTION_PRERENDER },
-  { GURL("http://www.testsite.com/b.html"),
-    ASCIIToUTF16("Test - site - just a test"), 1,
-    ASCIIToUTF16("ju"), 3, 0,
-    AutocompleteActionPredictor::ACTION_PRERENDER },
-  { GURL("http://www.testsite.com/c.html"),
-    ASCIIToUTF16("Test - site - just a test"), 5,
-    ASCIIToUTF16("just"), 3, 1,
-    AutocompleteActionPredictor::ACTION_PRECONNECT },
-  { GURL("http://www.testsite.com/d.html"),
-    ASCIIToUTF16("Test - site - just a test"), 5,
-    ASCIIToUTF16("just"), 3, 0,
-    AutocompleteActionPredictor::ACTION_PRERENDER },
-  { GURL("http://www.testsite.com/e.html"),
-    ASCIIToUTF16("Test - site - just a test"), 8,
-    ASCIIToUTF16("just"), 3, 1,
-    AutocompleteActionPredictor::ACTION_PRECONNECT },
-  { GURL("http://www.testsite.com/f.html"),
-    ASCIIToUTF16("Test - site - just a test"), 8,
-    ASCIIToUTF16("just"), 3, 0,
-    AutocompleteActionPredictor::ACTION_PRERENDER },
-  { GURL("http://www.testsite.com/g.html"),
-    ASCIIToUTF16("Test - site - just a test"), 12,
-    base::string16(), 5, 0,
-    AutocompleteActionPredictor::ACTION_NONE },
-  { GURL("http://www.testsite.com/h.html"),
-    ASCIIToUTF16("Test - site - just a test"), 21,
-    ASCIIToUTF16("just a test"), 2, 0,
-    AutocompleteActionPredictor::ACTION_NONE },
-  { GURL("http://www.testsite.com/i.html"),
-    ASCIIToUTF16("Test - site - just a test"), 28,
-    ASCIIToUTF16("just a test"), 2, 0,
-    AutocompleteActionPredictor::ACTION_NONE }
 };
 
+const std::vector<TestUrlInfo>& TestUrlDb() {
+  static base::NoDestructor<std::vector<TestUrlInfo>> db{
+      {{GURL("http://www.testsite.com/a.html"),
+        ASCIIToUTF16("Test - site - just a test"), 1, ASCIIToUTF16("j"), 5, 0,
+        AutocompleteActionPredictor::ACTION_PRERENDER},
+       {GURL("http://www.testsite.com/b.html"),
+        ASCIIToUTF16("Test - site - just a test"), 1, ASCIIToUTF16("ju"), 3, 0,
+        AutocompleteActionPredictor::ACTION_PRERENDER},
+       {GURL("http://www.testsite.com/c.html"),
+        ASCIIToUTF16("Test - site - just a test"), 5, ASCIIToUTF16("just"), 3,
+        1, AutocompleteActionPredictor::ACTION_PRECONNECT},
+       {GURL("http://www.testsite.com/d.html"),
+        ASCIIToUTF16("Test - site - just a test"), 5, ASCIIToUTF16("just"), 3,
+        0, AutocompleteActionPredictor::ACTION_PRERENDER},
+       {GURL("http://www.testsite.com/e.html"),
+        ASCIIToUTF16("Test - site - just a test"), 8, ASCIIToUTF16("just"), 3,
+        1, AutocompleteActionPredictor::ACTION_PRECONNECT},
+       {GURL("http://www.testsite.com/f.html"),
+        ASCIIToUTF16("Test - site - just a test"), 8, ASCIIToUTF16("just"), 3,
+        0, AutocompleteActionPredictor::ACTION_PRERENDER},
+       {GURL("http://www.testsite.com/g.html"),
+        ASCIIToUTF16("Test - site - just a test"), 12, base::string16(), 5, 0,
+        AutocompleteActionPredictor::ACTION_NONE},
+       {GURL("http://www.testsite.com/h.html"),
+        ASCIIToUTF16("Test - site - just a test"), 21,
+        ASCIIToUTF16("just a test"), 2, 0,
+        AutocompleteActionPredictor::ACTION_NONE},
+       {GURL("http://www.testsite.com/i.html"),
+        ASCIIToUTF16("Test - site - just a test"), 28,
+        ASCIIToUTF16("just a test"), 2, 0,
+        AutocompleteActionPredictor::ACTION_NONE}}};
+  return *db;
+}
+
 // List of urls sorted by the confidence score in ascending order.
-TestUrlInfo test_url_confidence_db[] = {
-    {GURL("http://www.testsite.com/g.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 0, 2, AutocompleteActionPredictor::ACTION_NONE},
-    {GURL("http://www.testsite.com/f.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 1, 2, AutocompleteActionPredictor::ACTION_NONE},
-    {GURL("http://www.testsite.com/e.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 2, 2, AutocompleteActionPredictor::ACTION_NONE},
-    {GURL("http://www.testsite.com/d.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 3, 3, AutocompleteActionPredictor::ACTION_NONE},
-    {GURL("http://www.testsite.com/c.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 3, 2, AutocompleteActionPredictor::ACTION_NONE},
-    {GURL("http://www.testsite.com/b.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 3, 0, AutocompleteActionPredictor::ACTION_NONE},
-    {GURL("http://www.testsite.com/a.html"), ASCIIToUTF16("Test"), 1,
-     ASCIIToUTF16("test"), 5, 0, AutocompleteActionPredictor::ACTION_NONE},
-};
+const std::vector<TestUrlInfo>& TestUrlConfidenceDb() {
+  static base::NoDestructor<std::vector<TestUrlInfo>> db{{
+      {GURL("http://www.testsite.com/g.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 0, 2, AutocompleteActionPredictor::ACTION_NONE},
+      {GURL("http://www.testsite.com/f.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 1, 2, AutocompleteActionPredictor::ACTION_NONE},
+      {GURL("http://www.testsite.com/e.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 2, 2, AutocompleteActionPredictor::ACTION_NONE},
+      {GURL("http://www.testsite.com/d.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 3, 3, AutocompleteActionPredictor::ACTION_NONE},
+      {GURL("http://www.testsite.com/c.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 3, 2, AutocompleteActionPredictor::ACTION_NONE},
+      {GURL("http://www.testsite.com/b.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 3, 0, AutocompleteActionPredictor::ACTION_NONE},
+      {GURL("http://www.testsite.com/a.html"), ASCIIToUTF16("Test"), 1,
+       ASCIIToUTF16("test"), 5, 0, AutocompleteActionPredictor::ACTION_NONE},
+  }};
+  return *db;
+}
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
 GURL GenerateTestURL(size_t size) {
   std::string prefix = "http://b/";
   // Cannot generate an URL shorter than |prefix|.
@@ -181,8 +184,8 @@
   }
 
   void AddAllRows() {
-    for (size_t i = 0; i < base::size(test_url_db); ++i)
-      AddRow(test_url_db[i]);
+    for (size_t i = 0; i < base::size(TestUrlDb()); ++i)
+      AddRow(TestUrlDb()[i]);
   }
 
   std::string AddRow(const TestUrlInfo& test_row) {
@@ -206,26 +209,26 @@
   void OnURLsDeletedTest(bool expired) {
     ASSERT_NO_FATAL_FAILURE(AddAllRows());
 
-    EXPECT_EQ(base::size(test_url_db), db_cache()->size());
-    EXPECT_EQ(base::size(test_url_db), db_id_cache()->size());
+    EXPECT_EQ(base::size(TestUrlDb()), db_cache()->size());
+    EXPECT_EQ(base::size(TestUrlDb()), db_id_cache()->size());
 
     std::vector<size_t> expected;
     history::URLRows rows;
-    for (size_t i = 0; i < base::size(test_url_db); ++i) {
+    for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
       bool expect_deleted = false;
 
       if (i < 2) {
-        rows.push_back(history::URLRow(test_url_db[i].url));
+        rows.push_back(history::URLRow(TestUrlDb()[i].url));
         expect_deleted = true;
       }
 
       if (!expired &&
-          test_url_db[i].days_from_now > maximum_days_to_keep_entry()) {
+          TestUrlDb()[i].days_from_now > maximum_days_to_keep_entry()) {
         expect_deleted = true;
       }
 
       if (i != 3 && i != 4)
-        ASSERT_TRUE(AddRowToHistory(test_url_db[i]));
+        ASSERT_TRUE(AddRowToHistory(TestUrlDb()[i]));
       else if (!expired)
         expect_deleted = true;
 
@@ -246,8 +249,8 @@
     EXPECT_EQ(expected.size(), db_cache()->size());
     EXPECT_EQ(expected.size(), db_id_cache()->size());
 
-    for (size_t i = 0; i < base::size(test_url_db); ++i) {
-      DBCacheKey key = {test_url_db[i].user_text, test_url_db[i].url};
+    for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
+      DBCacheKey key = {TestUrlDb()[i].user_text, TestUrlDb()[i].url};
 
       bool deleted = !base::Contains(expected, i);
       EXPECT_EQ(deleted, db_cache()->find(key) == db_cache()->end());
@@ -314,15 +317,15 @@
 
 TEST_F(AutocompleteActionPredictorTest, AddRow) {
   // Add a test entry to the predictor.
-  std::string guid = AddRow(test_url_db[0]);
+  std::string guid = AddRow(TestUrlDb()[0]);
 
   // Get the data back out of the cache.
-  const DBCacheKey key = { test_url_db[0].user_text, test_url_db[0].url };
+  const DBCacheKey key = {TestUrlDb()[0].user_text, TestUrlDb()[0].url};
   DBCacheMap::const_iterator it = db_cache()->find(key);
   EXPECT_TRUE(it != db_cache()->end());
 
-  const DBCacheValue value = { test_url_db[0].number_of_hits,
-                               test_url_db[0].number_of_misses };
+  const DBCacheValue value = {TestUrlDb()[0].number_of_hits,
+                              TestUrlDb()[0].number_of_misses};
   EXPECT_EQ(value.number_of_hits, it->second.number_of_hits);
   EXPECT_EQ(value.number_of_misses, it->second.number_of_misses);
 
@@ -334,11 +337,11 @@
 TEST_F(AutocompleteActionPredictorTest, UpdateRow) {
   ASSERT_NO_FATAL_FAILURE(AddAllRows());
 
-  EXPECT_EQ(base::size(test_url_db), db_cache()->size());
-  EXPECT_EQ(base::size(test_url_db), db_id_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()), db_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()), db_id_cache()->size());
 
   // Get the data back out of the cache.
-  const DBCacheKey key = { test_url_db[0].user_text, test_url_db[0].url };
+  const DBCacheKey key = {TestUrlDb()[0].user_text, TestUrlDb()[0].url};
   DBCacheMap::const_iterator it = db_cache()->find(key);
   EXPECT_TRUE(it != db_cache()->end());
 
@@ -370,8 +373,8 @@
 TEST_F(AutocompleteActionPredictorTest, DeleteAllRows) {
   ASSERT_NO_FATAL_FAILURE(AddAllRows());
 
-  EXPECT_EQ(base::size(test_url_db), db_cache()->size());
-  EXPECT_EQ(base::size(test_url_db), db_id_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()), db_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()), db_id_cache()->size());
 
   DeleteAllRows();
 
@@ -382,26 +385,26 @@
 TEST_F(AutocompleteActionPredictorTest, DeleteRowsFromCaches) {
   std::vector<AutocompleteActionPredictorTable::Row::Id> all_ids;
   history::URLRows rows;
-  for (size_t i = 0; i < base::size(test_url_db); ++i) {
-    std::string row_id = AddRow(test_url_db[i]);
+  for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
+    std::string row_id = AddRow(TestUrlDb()[i]);
     all_ids.push_back(row_id);
 
     if (i < 2)
-      rows.push_back(history::URLRow(test_url_db[i].url));
+      rows.push_back(history::URLRow(TestUrlDb()[i].url));
   }
 
-  EXPECT_EQ(base::size(test_url_db), all_ids.size());
-  EXPECT_EQ(base::size(test_url_db), db_cache()->size());
-  EXPECT_EQ(base::size(test_url_db), db_id_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()), all_ids.size());
+  EXPECT_EQ(base::size(TestUrlDb()), db_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()), db_id_cache()->size());
 
   std::vector<AutocompleteActionPredictorTable::Row::Id> id_list;
   DeleteRowsFromCaches(rows, &id_list);
 
-  EXPECT_EQ(base::size(test_url_db) - 2, db_cache()->size());
-  EXPECT_EQ(base::size(test_url_db) - 2, db_id_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()) - 2, db_cache()->size());
+  EXPECT_EQ(base::size(TestUrlDb()) - 2, db_id_cache()->size());
 
-  for (size_t i = 0; i < base::size(test_url_db); ++i) {
-    DBCacheKey key = { test_url_db[i].user_text, test_url_db[i].url };
+  for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
+    DBCacheKey key = {TestUrlDb()[i].user_text, TestUrlDb()[i].url};
 
     bool deleted = (i < 2);
     EXPECT_EQ(deleted, db_cache()->find(key) == db_cache()->end());
@@ -414,19 +417,19 @@
   std::vector<AutocompleteActionPredictorTable::Row::Id> expected;
   std::vector<AutocompleteActionPredictorTable::Row::Id> all_ids;
 
-  for (size_t i = 0; i < base::size(test_url_db); ++i) {
-    std::string row_id = AddRow(test_url_db[i]);
+  for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
+    std::string row_id = AddRow(TestUrlDb()[i]);
     all_ids.push_back(row_id);
 
     bool exclude_url =
-        base::StartsWith(test_url_db[i].url.path(), "/d",
+        base::StartsWith(TestUrlDb()[i].url.path(), "/d",
                          base::CompareCase::SENSITIVE) ||
-        (test_url_db[i].days_from_now > maximum_days_to_keep_entry());
+        (TestUrlDb()[i].days_from_now > maximum_days_to_keep_entry());
 
     if (exclude_url)
       expected.push_back(row_id);
     else
-      ASSERT_TRUE(AddRowToHistory(test_url_db[i]));
+      ASSERT_TRUE(AddRowToHistory(TestUrlDb()[i]));
   }
 
   std::vector<AutocompleteActionPredictorTable::Row::Id> id_list;
@@ -445,19 +448,19 @@
 TEST_F(AutocompleteActionPredictorTest,
        DeleteLowestConfidenceRowsFromCaches_OneByOne) {
   std::vector<AutocompleteActionPredictorTable::Row::Id> test_url_ids;
-  for (const auto& info : test_url_confidence_db)
+  for (const auto& info : TestUrlConfidenceDb())
     test_url_ids.push_back(AddRow(info));
 
   std::vector<AutocompleteActionPredictorTable::Row::Id> id_list;
   std::vector<AutocompleteActionPredictorTable::Row::Id> expected;
 
-  for (size_t i = 0; i < base::size(test_url_confidence_db); ++i) {
+  for (size_t i = 0; i < base::size(TestUrlConfidenceDb()); ++i) {
     DeleteLowestConfidenceRowsFromCaches(1, &id_list);
     expected.push_back(test_url_ids[i]);
     EXPECT_THAT(id_list, ::testing::UnorderedElementsAreArray(expected));
 
-    DBCacheKey deleted_key = {test_url_confidence_db[i].user_text,
-                              test_url_confidence_db[i].url};
+    DBCacheKey deleted_key = {TestUrlConfidenceDb()[i].user_text,
+                              TestUrlConfidenceDb()[i].url};
     EXPECT_FALSE(base::Contains(*db_cache(), deleted_key));
     EXPECT_FALSE(base::Contains(*db_id_cache(), deleted_key));
   }
@@ -466,14 +469,14 @@
 TEST_F(AutocompleteActionPredictorTest,
        DeleteLowestConfidenceRowsFromCaches_Bulk) {
   std::vector<AutocompleteActionPredictorTable::Row::Id> test_url_ids;
-  for (const auto& info : test_url_confidence_db)
+  for (const auto& info : TestUrlConfidenceDb())
     test_url_ids.push_back(AddRow(info));
 
   std::vector<AutocompleteActionPredictorTable::Row::Id> id_list;
   std::vector<AutocompleteActionPredictorTable::Row::Id> expected;
 
   const size_t count_to_remove = 4;
-  CHECK_LT(count_to_remove, base::size(test_url_confidence_db));
+  CHECK_LT(count_to_remove, base::size(TestUrlConfidenceDb()));
 
   for (size_t i = 0; i < count_to_remove; ++i)
     expected.push_back(test_url_ids[i]);
@@ -482,8 +485,8 @@
   ASSERT_THAT(id_list, ::testing::UnorderedElementsAreArray(expected));
 
   for (size_t i = 0; i < count_to_remove; ++i) {
-    DBCacheKey deleted_key = {test_url_confidence_db[i].user_text,
-                              test_url_confidence_db[i].url};
+    DBCacheKey deleted_key = {TestUrlConfidenceDb()[i].user_text,
+                              TestUrlConfidenceDb()[i].url};
     EXPECT_FALSE(base::Contains(*db_cache(), deleted_key));
     EXPECT_FALSE(base::Contains(*db_id_cache(), deleted_key));
   }
@@ -506,10 +509,10 @@
   prerender::PrerenderManager::SetMode(
       prerender::PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
 
-  for (size_t i = 0; i < base::size(test_url_db); ++i) {
-    match.destination_url = GURL(test_url_db[i].url);
-    EXPECT_EQ(test_url_db[i].expected_action,
-              predictor()->RecommendAction(test_url_db[i].user_text, match))
+  for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
+    match.destination_url = GURL(TestUrlDb()[i].url);
+    EXPECT_EQ(TestUrlDb()[i].expected_action,
+              predictor()->RecommendAction(TestUrlDb()[i].user_text, match))
         << "Unexpected action for " << match.destination_url;
   }
 }
@@ -523,15 +526,15 @@
   prerender::PrerenderManager::SetMode(
       prerender::PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
 
-  for (size_t i = 0; i < base::size(test_url_db); ++i) {
-    match.destination_url = GURL(test_url_db[i].url);
+  for (size_t i = 0; i < base::size(TestUrlDb()); ++i) {
+    match.destination_url = GURL(TestUrlDb()[i].url);
     AutocompleteActionPredictor::Action expected_action =
-        (test_url_db[i].expected_action ==
-         AutocompleteActionPredictor::ACTION_PRERENDER) ?
-        AutocompleteActionPredictor::ACTION_PRECONNECT :
-        test_url_db[i].expected_action;
+        (TestUrlDb()[i].expected_action ==
+         AutocompleteActionPredictor::ACTION_PRERENDER)
+            ? AutocompleteActionPredictor::ACTION_PRECONNECT
+            : TestUrlDb()[i].expected_action;
     EXPECT_EQ(expected_action,
-              predictor()->RecommendAction(test_url_db[i].user_text, match))
+              predictor()->RecommendAction(TestUrlDb()[i].user_text, match))
         << "Unexpected action for " << match.destination_url;
   }
 }
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
index 110fa74..69f74334 100644
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -601,6 +601,9 @@
 
     public static final String VERIFIED_DIGITAL_ASSET_LINKS = "verified_digital_asset_links";
 
+    public static final String VR_EXIT_TO_2D_COUNT = "VR_EXIT_TO_2D_COUNT";
+    public static final String VR_FEEDBACK_OPT_OUT = "VR_FEEDBACK_OPT_OUT";
+
     /**
      * Whether VR assets component should be registered on startup.
      * Default value is false.
@@ -864,6 +867,8 @@
                 UI_THEME_SETTING,
                 VARIATION_CACHED_BOTTOM_TOOLBAR,
                 VERIFIED_DIGITAL_ASSET_LINKS,
+                VR_EXIT_TO_2D_COUNT,
+                VR_FEEDBACK_OPT_OUT,
                 VR_SHOULD_REGISTER_ASSETS_COMPONENT_ON_STARTUP,
                 WEBAPK_EXTRACTED_DEX_VERSION,
                 WEBAPK_LAST_SDK_VERSION,
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 3d7f841..ba79fe4 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -81,6 +81,7 @@
 #include "chrome/browser/ui/webui/flags_ui.h"
 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
 #include "chrome/browser/ui/webui/print_preview/policy_settings.h"
+#include "chrome/browser/updates/announcement_notification/announcement_notification_service.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
 #include "chrome/browser/webauthn/chrome_authenticator_request_delegate.h"
 #include "chrome/common/buildflags.h"
@@ -787,6 +788,7 @@
   // User prefs. Please keep this list alphabetized.
   AccessibilityLabelsService::RegisterProfilePrefs(registry);
   AccessibilityUIMessageHandler::RegisterProfilePrefs(registry);
+  AnnouncementNotificationService::RegisterProfilePrefs(registry);
   AvailabilityProber::RegisterProfilePrefs(registry);
   autofill::prefs::RegisterProfilePrefs(registry);
   browsing_data::prefs::RegisterBrowserUserPrefs(registry);
diff --git a/chrome/browser/prefs/chrome_command_line_pref_store_proxy_unittest.cc b/chrome/browser/prefs/chrome_command_line_pref_store_proxy_unittest.cc
index 62e885a1..991c79b 100644
--- a/chrome/browser/prefs/chrome_command_line_pref_store_proxy_unittest.cc
+++ b/chrome/browser/prefs/chrome_command_line_pref_store_proxy_unittest.cc
@@ -35,7 +35,7 @@
   // Expected outputs (fields of the ProxyConfig).
   bool is_null;
   bool auto_detect;
-  GURL pac_url;
+  std::string pac_url;
   net::ProxyRulesExpectation proxy_rules;
 };
 
@@ -49,9 +49,9 @@
         // Input
         {},
         // Expected result
-        true,    // is_null
-        false,   // auto_detect
-        GURL(),  // pac_url
+        true,   // is_null
+        false,  // auto_detect
+        "",     // pac_url
         net::ProxyRulesExpectation::Empty(),
     },
     {
@@ -61,9 +61,9 @@
             {switches::kNoProxyServer, NULL},
         },
         // Expected result
-        false,   // is_null
-        false,   // auto_detect
-        GURL(),  // pac_url
+        false,  // is_null
+        false,  // auto_detect
+        "",     // pac_url
         net::ProxyRulesExpectation::Empty(),
     },
     {
@@ -74,9 +74,9 @@
             {switches::kProxyServer, "http://proxy:8888"},
         },
         // Expected result
-        false,   // is_null
-        false,   // auto_detect
-        GURL(),  // pac_url
+        false,  // is_null
+        false,  // auto_detect
+        "",     // pac_url
         net::ProxyRulesExpectation::Empty(),
     },
     {
@@ -88,7 +88,7 @@
         // Expected result
         false,                                            // is_null
         false,                                            // auto_detect
-        GURL(),                                           // pac_url
+        "",                                               // pac_url
         net::ProxyRulesExpectation::Single("proxy:8888",  // single proxy
                                            ""),           // bypass rules
     },
@@ -101,7 +101,7 @@
         // Expected result
         false,                                                   // is_null
         false,                                                   // auto_detect
-        GURL(),                                                  // pac_url
+        "",                                                      // pac_url
         net::ProxyRulesExpectation::PerScheme("httpproxy:8888",  // http
                                               "",                // https
                                               "ftpproxy:8889",   // ftp
@@ -116,9 +116,9 @@
              ".google.com, foo.com:99, 1.2.3.4:22, 127.0.0.1/8"},
         },
         // Expected result
-        false,   // is_null
-        false,   // auto_detect
-        GURL(),  // pac_url
+        false,  // is_null
+        false,  // auto_detect
+        "",     // pac_url
         net::ProxyRulesExpectation::PerScheme(
             "httpproxy:8888",  // http
             "",                // https
@@ -132,9 +132,9 @@
             {switches::kProxyPacUrl, "http://wpad/wpad.dat"},
         },
         // Expected result
-        false,                         // is_null
-        false,                         // auto_detect
-        GURL("http://wpad/wpad.dat"),  // pac_url
+        false,                   // is_null
+        false,                   // auto_detect
+        "http://wpad/wpad.dat",  // pac_url
         net::ProxyRulesExpectation::Empty(),
     },
     {
@@ -144,9 +144,9 @@
             {switches::kProxyAutoDetect, NULL},
         },
         // Expected result
-        false,   // is_null
-        true,    // auto_detect
-        GURL(),  // pac_url
+        false,  // is_null
+        true,   // auto_detect
+        "",     // pac_url
         net::ProxyRulesExpectation::Empty(),
     },
 };
@@ -188,7 +188,7 @@
 
 TEST_P(ChromeCommandLinePrefStoreProxyTest, CommandLine) {
   EXPECT_EQ(GetParam().auto_detect, proxy_config()->value().auto_detect());
-  EXPECT_EQ(GetParam().pac_url, proxy_config()->value().pac_url());
+  EXPECT_EQ(GURL(GetParam().pac_url), proxy_config()->value().pac_url());
   EXPECT_TRUE(
       GetParam().proxy_rules.Matches(proxy_config()->value().proxy_rules()));
 }
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc b/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc
index 7e8896ca..d182ddbb 100644
--- a/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc
+++ b/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc
@@ -38,7 +38,6 @@
 namespace {
 
 constexpr gfx::Size kSize(640, 480);
-const GURL kTestUrl("https://test.com/path");
 
 }  // namespace
 
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_url_loader_interceptor_unittest.cc b/chrome/browser/prerender/isolated/isolated_prerender_url_loader_interceptor_unittest.cc
index 7f44389..a7f869b3 100644
--- a/chrome/browser/prerender/isolated/isolated_prerender_url_loader_interceptor_unittest.cc
+++ b/chrome/browser/prerender/isolated/isolated_prerender_url_loader_interceptor_unittest.cc
@@ -22,7 +22,12 @@
 namespace {
 
 const gfx::Size kSize(640, 480);
-const GURL kTestUrl("https://test.com/path");
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestURL() {
+  return GURL("https://test.com/path");
+}
 
 }  // namespace
 
@@ -89,7 +94,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(features::kIsolatePrerenders);
 
-  std::unique_ptr<prerender::PrerenderHandle> handle = StartPrerender(kTestUrl);
+  std::unique_ptr<prerender::PrerenderHandle> handle =
+      StartPrerender(TestURL());
 
   std::unique_ptr<IsolatedPrerenderURLLoaderInterceptor> interceptor =
       std::make_unique<IsolatedPrerenderURLLoaderInterceptor>(
@@ -99,7 +105,7 @@
               ->GetFrameTreeNodeId());
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestURL();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
@@ -118,7 +124,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndDisableFeature(features::kIsolatePrerenders);
 
-  std::unique_ptr<prerender::PrerenderHandle> handle = StartPrerender(kTestUrl);
+  std::unique_ptr<prerender::PrerenderHandle> handle =
+      StartPrerender(TestURL());
 
   std::unique_ptr<IsolatedPrerenderURLLoaderInterceptor> interceptor =
       std::make_unique<IsolatedPrerenderURLLoaderInterceptor>(
@@ -128,7 +135,7 @@
               ->GetFrameTreeNodeId());
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestURL();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
@@ -152,7 +159,7 @@
           web_contents()->GetMainFrame()->GetFrameTreeNodeId());
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestURL();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
@@ -175,7 +182,7 @@
       std::make_unique<IsolatedPrerenderURLLoaderInterceptor>(1337);
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestURL();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
diff --git a/chrome/browser/previews/previews_lite_page_redirect_url_loader_interceptor_unittest.cc b/chrome/browser/previews/previews_lite_page_redirect_url_loader_interceptor_unittest.cc
index 6a1d019..19762c2 100644
--- a/chrome/browser/previews/previews_lite_page_redirect_url_loader_interceptor_unittest.cc
+++ b/chrome/browser/previews/previews_lite_page_redirect_url_loader_interceptor_unittest.cc
@@ -60,7 +60,11 @@
 
 namespace {
 
-const GURL kTestUrl("https://google.com/path");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("https://google.com/path");
+}
 
 class PreviewsLitePageRedirectURLLoaderInterceptorTest : public testing::Test {
  public:
@@ -131,7 +135,7 @@
   base::HistogramTester histogram_tester;
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
@@ -159,7 +163,7 @@
   base::HistogramTester histogram_tester;
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
@@ -189,7 +193,7 @@
   base::HistogramTester histogram_tester;
 
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
@@ -217,7 +221,7 @@
        InterceptRequestRedirect) {
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
@@ -242,7 +246,7 @@
        InterceptRequestServerOverloaded) {
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
@@ -268,7 +272,7 @@
        InterceptRequestServerNotHandling) {
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
@@ -293,7 +297,7 @@
 TEST_F(PreviewsLitePageRedirectURLLoaderInterceptorTest, NetStackError) {
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
-  request.url = kTestUrl;
+  request.url = TestUrl();
   request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
diff --git a/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc b/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc
index 2720c70..9c9ffee8 100644
--- a/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc
+++ b/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc
@@ -6,12 +6,14 @@
 
 #include <utility>
 
+#include "ash/public/cpp/assistant/assistant_interface_binder.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/branding_buildflags.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chromeos/components/quick_answers/quick_answers_model.h"
+#include "chromeos/services/assistant/public/mojom/assistant.mojom.h"
 #include "components/renderer_context_menu/render_view_context_menu_proxy.h"
 #include "content/public/browser/storage_partition.h"
 #include "content/public/common/context_menu_params.h"
@@ -76,6 +78,7 @@
   // Fetch Quick Answer.
   QuickAnswersRequest request;
   request.selected_text = selected_text;
+  query_ = request.selected_text;
   quick_answers_client_->SendRequest(request);
 }
 
@@ -93,7 +96,8 @@
 }
 
 void QuickAnswersMenuObserver::ExecuteCommand(int command_id) {
-  // TODO(llin): Implements Quick Answers click action.
+  if (command_id == IDC_CONTENT_CONTEXT_QUICK_ANSWERS_INLINE_QUERY)
+    SendAssistantQuery(query_);
 }
 
 void QuickAnswersMenuObserver::OnQuickAnswerReceived(
@@ -132,3 +136,13 @@
         quick_answers_client) {
   quick_answers_client_ = std::move(quick_answers_client);
 }
+
+void QuickAnswersMenuObserver::SendAssistantQuery(const std::string& query) {
+  mojo::Remote<chromeos::assistant::mojom::AssistantController>
+      assistant_controller;
+  ash::AssistantInterfaceBinder::GetInstance()->BindController(
+      assistant_controller.BindNewPipeAndPassReceiver());
+  assistant_controller->StartTextInteraction(
+      query, /*allow_tts=*/false,
+      chromeos::assistant::mojom::AssistantQuerySource::kQuickAnswers);
+}
diff --git a/chrome/browser/renderer_context_menu/quick_answers_menu_observer.h b/chrome/browser/renderer_context_menu/quick_answers_menu_observer.h
index 78c03af9..d4c39b2 100644
--- a/chrome/browser/renderer_context_menu/quick_answers_menu_observer.h
+++ b/chrome/browser/renderer_context_menu/quick_answers_menu_observer.h
@@ -41,6 +41,8 @@
           quick_answers_client);
 
  private:
+  void SendAssistantQuery(const std::string& query);
+
   // The interface to add a context-menu item and update it.
   RenderViewContextMenuProxy* proxy_;
 
@@ -50,6 +52,9 @@
   // Whether the feature is enabled and all eligibility criteria are met (
   // locale, consents, etc).
   bool is_eligible_ = false;
+
+  // Query used to retrieve quick answer.
+  std::string query_;
 };
 
 #endif  // CHROME_BROWSER_RENDERER_CONTEXT_MENU_QUICK_ANSWERS_MENU_OBSERVER_H_
diff --git a/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc b/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc
index a979866..9c123e2 100644
--- a/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc
+++ b/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc
@@ -35,20 +35,22 @@
     : public ChromeRenderViewHostTestHarness,
       public testing::WithParamInterface<
           std::tuple<ExpectInstantiationResult,
-                     bool,  // enable_feature
-                     bool,  // is_in_main_frame
-                     bool,  // is_background_tab
-                     bool,  // no_opener
-                     bool,  // is_initial_navigation
-                     bool,  // has_tab_ui_helper
-                     GURL>> {
+                     bool,            // enable_feature
+                     bool,            // is_in_main_frame
+                     bool,            // is_background_tab
+                     bool,            // no_opener
+                     bool,            // is_initial_navigation
+                     bool,            // has_tab_ui_helper
+                     std::string>> {  // url
  public:
   BackgroundTabNavigationThrottleTest() {}
 
   void SetUp() override {
+    std::string url;
     std::tie(expected_instantiation_result_, enable_feature_, is_in_main_frame_,
              is_background_tab_, no_opener_, is_initial_navigation_,
-             has_tab_ui_helper_, url_) = GetParam();
+             has_tab_ui_helper_, url) = GetParam();
+    url_ = GURL(url);
 
     if (enable_feature_) {
       scoped_feature_list_.InitAndEnableFeature(
@@ -125,7 +127,7 @@
                                       true,  // No opener
                                       true,  // Is initial navigation
                                       true,  // Has tab UI helper
-                                      GURL(kTestUrl)),
+                                      kTestUrl),
                       std::make_tuple(EXPECT_NO_INSTANTIATION,
                                       false,  // Disable feature
                                       true,
@@ -133,7 +135,7 @@
                                       true,
                                       true,
                                       true,
-                                      GURL(kTestUrl)),
+                                      kTestUrl),
                       std::make_tuple(EXPECT_NO_INSTANTIATION,
                                       true,
                                       false,  // Is in child frame
@@ -141,7 +143,7 @@
                                       true,
                                       true,
                                       true,
-                                      GURL(kTestUrl)),
+                                      kTestUrl),
                       std::make_tuple(EXPECT_NO_INSTANTIATION,
                                       true,
                                       true,
@@ -149,7 +151,7 @@
                                       true,
                                       true,
                                       true,
-                                      GURL(kTestUrl)),
+                                      kTestUrl),
                       std::make_tuple(EXPECT_NO_INSTANTIATION,
                                       true,
                                       true,
@@ -157,7 +159,7 @@
                                       false,  // Has opener
                                       true,
                                       true,
-                                      GURL(kTestUrl)),
+                                      kTestUrl),
                       std::make_tuple(EXPECT_NO_INSTANTIATION,
                                       true,
                                       true,
@@ -165,7 +167,7 @@
                                       true,
                                       false,  // Is not initial navigation
                                       true,
-                                      GURL(kTestUrl)),
+                                      kTestUrl),
                       std::make_tuple(EXPECT_NO_INSTANTIATION,
                                       true,
                                       true,
@@ -173,6 +175,6 @@
                                       true,
                                       true,
                                       false,  // Do not have tab UI helper
-                                      GURL(kTestUrl))));
+                                      kTestUrl)));
 
 }  // namespace resource_coordinator
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_store_unittest.cc b/chrome/browser/resource_coordinator/local_site_characteristics_data_store_unittest.cc
index 0f14ffd..6ce110f 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_store_unittest.cc
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_store_unittest.cc
@@ -23,12 +23,17 @@
 
 namespace {
 
-const url::Origin kTestOrigin = url::Origin::Create(GURL("http://www.foo.com"));
-const url::Origin kTestOrigin2 =
-    url::Origin::Create(GURL("http://www.bar.com"));
-
 constexpr base::TimeDelta kDelay = base::TimeDelta::FromMinutes(1);
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin Origin1() {
+  return url::Origin::Create(GURL("http://www.foo.com"));
+}
+url::Origin Origin2() {
+  return url::Origin::Create(GURL("http://www.bar.com"));
+}
+
 class MockLocalSiteCharacteristicsDatabase
     : public testing::NoopLocalSiteCharacteristicsDatabase {
  public:
@@ -64,23 +69,22 @@
   void WaitForAsyncOperationsToComplete() { task_environment_.RunUntilIdle(); }
 
   // Populates |writer_|, |reader_| and |data_| to refer to a tab navigated to
-  // |kTestOrigin| that updated its title in background. Populates |writer2_|,
-  // |reader2_| and |data2_| to refer to a tab navigated to |kTestOrigin2| that
+  // |Origin1()| that updated its title in background. Populates |writer2_|,
+  // |reader2_| and |data2_| to refer to a tab navigated to |Origin2()| that
   // updates its favicon in background.
   void SetupTwoSitesUsingFeaturesInBackground() {
     // Load a first origin, and then make use of a feature on it.
     ASSERT_FALSE(reader_);
-    reader_ = data_store_->GetReaderForOrigin(kTestOrigin);
+    reader_ = data_store_->GetReaderForOrigin(Origin1());
     EXPECT_TRUE(reader_);
 
     ASSERT_FALSE(writer_);
     writer_ = data_store_->GetWriterForOrigin(
-        kTestOrigin, performance_manager::TabVisibility::kBackground);
+        Origin1(), performance_manager::TabVisibility::kBackground);
     EXPECT_TRUE(writer_);
 
     ASSERT_FALSE(data_);
-    data_ =
-        data_store_->origin_data_map_for_testing().find(kTestOrigin)->second;
+    data_ = data_store_->origin_data_map_for_testing().find(Origin1())->second;
     EXPECT_TRUE(data_);
 
     EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureUsageUnknown,
@@ -93,17 +97,16 @@
 
     // Load a second origin, make use of a feature on it too.
     ASSERT_FALSE(reader2_);
-    reader2_ = data_store_->GetReaderForOrigin(kTestOrigin2);
+    reader2_ = data_store_->GetReaderForOrigin(Origin2());
     EXPECT_TRUE(reader2_);
 
     ASSERT_FALSE(writer2_);
     writer2_ = data_store_->GetWriterForOrigin(
-        kTestOrigin2, performance_manager::TabVisibility::kBackground);
+        Origin2(), performance_manager::TabVisibility::kBackground);
     EXPECT_TRUE(writer2_);
 
     ASSERT_FALSE(data2_);
-    data2_ =
-        data_store_->origin_data_map_for_testing().find(kTestOrigin2)->second;
+    data2_ = data_store_->origin_data_map_for_testing().find(Origin2())->second;
     EXPECT_TRUE(data2_);
 
     EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureUsageUnknown,
@@ -135,10 +138,10 @@
 };
 
 TEST_F(LocalSiteCharacteristicsDataStoreTest, EndToEnd) {
-  auto reader = data_store_->GetReaderForOrigin(kTestOrigin);
+  auto reader = data_store_->GetReaderForOrigin(Origin1());
   EXPECT_TRUE(reader);
   auto writer = data_store_->GetWriterForOrigin(
-      kTestOrigin, performance_manager::TabVisibility::kBackground);
+      Origin1(), performance_manager::TabVisibility::kBackground);
   EXPECT_TRUE(writer);
 
   EXPECT_EQ(1U, data_store_->origin_data_map_for_testing().size());
@@ -153,9 +156,9 @@
   EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureInUse,
             reader->UpdatesTitleInBackground());
 
-  auto reader_copy = data_store_->GetReaderForOrigin(kTestOrigin);
+  auto reader_copy = data_store_->GetReaderForOrigin(Origin1());
   EXPECT_EQ(1U, data_store_->origin_data_map_for_testing().size());
-  auto reader2 = data_store_->GetReaderForOrigin(kTestOrigin2);
+  auto reader2 = data_store_->GetReaderForOrigin(Origin2());
   EXPECT_EQ(2U, data_store_->origin_data_map_for_testing().size());
   reader2.reset();
 
@@ -185,17 +188,17 @@
   // database, even if they're not in the internal map used by the data store.
   const url::Origin kOriginNotInMap =
       url::Origin::Create(GURL("http://www.url-not-in-map.com"));
-  history::URLRows urls_to_delete = {history::URLRow(kTestOrigin.GetURL()),
+  history::URLRows urls_to_delete = {history::URLRow(Origin1().GetURL()),
                                      history::URLRow(kOriginNotInMap.GetURL())};
   history::DeletionInfo deletion_info =
       history::DeletionInfo::ForUrls(urls_to_delete, std::set<GURL>());
   deletion_info.set_deleted_urls_origin_map({
-      {kTestOrigin.GetURL(), {0, base::Time::Now()}},
+      {Origin1().GetURL(), {0, base::Time::Now()}},
       {kOriginNotInMap.GetURL(), {0, base::Time::Now()}},
   });
   EXPECT_CALL(*mock_db_,
               RemoveSiteCharacteristicsFromDB(::testing::WhenSorted(
-                  ::testing::ElementsAre(kTestOrigin, kOriginNotInMap))));
+                  ::testing::ElementsAre(Origin1(), kOriginNotInMap))));
   data_store_->OnURLsDeleted(nullptr, deletion_info);
   ::testing::Mock::VerifyAndClear(mock_db_);
 
@@ -231,12 +234,12 @@
   // database, even if they're not in the internal map used by the data store.
   const url::Origin kOriginNotInMap =
       url::Origin::Create(GURL("http://www.url-not-in-map.com"));
-  history::URLRows urls_to_delete = {history::URLRow(kTestOrigin.GetURL()),
+  history::URLRows urls_to_delete = {history::URLRow(Origin1().GetURL()),
                                      history::URLRow(kOriginNotInMap.GetURL())};
   history::DeletionInfo deletion_info =
       history::DeletionInfo::ForUrls(urls_to_delete, std::set<GURL>());
   deletion_info.set_deleted_urls_origin_map({
-      {kTestOrigin.GetURL(), {4, base::Time::Now()}},
+      {Origin1().GetURL(), {4, base::Time::Now()}},
       {kOriginNotInMap.GetURL(), {3, base::Time::Now()}},
   });
   data_store_->OnURLsDeleted(nullptr, deletion_info);
@@ -294,23 +297,23 @@
   EXPECT_EQ(0U, inspector->GetAllInMemoryOrigins().size());
   std::unique_ptr<SiteDataProto> data;
   bool is_dirty = false;
-  EXPECT_FALSE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+  EXPECT_FALSE(inspector->GetDataForOrigin(Origin1(), &is_dirty, &data));
   EXPECT_FALSE(is_dirty);
   EXPECT_EQ(nullptr, data.get());
 
   {
     // Add an entry, see that it's reflected in the inspector interface.
     auto writer = data_store_->GetWriterForOrigin(
-        kTestOrigin, performance_manager::TabVisibility::kBackground);
+        Origin1(), performance_manager::TabVisibility::kBackground);
 
     EXPECT_EQ(1U, inspector->GetAllInMemoryOrigins().size());
-    EXPECT_TRUE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+    EXPECT_TRUE(inspector->GetDataForOrigin(Origin1(), &is_dirty, &data));
     EXPECT_FALSE(is_dirty);
     ASSERT_NE(nullptr, data.get());
 
     // Touch the underlying data, see that the dirty bit updates.
     writer->NotifySiteLoaded();
-    EXPECT_TRUE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+    EXPECT_TRUE(inspector->GetDataForOrigin(Origin1(), &is_dirty, &data));
     EXPECT_TRUE(is_dirty);
   }
 
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_non_recording_data_store_unittest.cc b/chrome/browser/resource_coordinator/local_site_characteristics_non_recording_data_store_unittest.cc
index 42ac94c..c955f3b8 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_non_recording_data_store_unittest.cc
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_non_recording_data_store_unittest.cc
@@ -15,7 +15,11 @@
 namespace resource_coordinator {
 
 namespace {
-const url::Origin kTestOrigin = url::Origin::Create(GURL("http://www.foo.com"));
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+url::Origin TestOrigin() {
+  return url::Origin::Create(GURL("http://www.foo.com"));
+}
 
 class LocalSiteCharacteristicsNonRecordingDataStoreTest : public testing::Test {
  public:
@@ -46,13 +50,13 @@
 TEST_F(LocalSiteCharacteristicsNonRecordingDataStoreTest, EndToEnd) {
   // Ensures that the observation made via a writer created by the non
   // recording data store aren't recorded.
-  auto reader = non_recording_data_store_->GetReaderForOrigin(kTestOrigin);
+  auto reader = non_recording_data_store_->GetReaderForOrigin(TestOrigin());
   EXPECT_TRUE(reader);
   auto fake_writer = non_recording_data_store_->GetWriterForOrigin(
-      kTestOrigin, performance_manager::TabVisibility::kBackground);
+      TestOrigin(), performance_manager::TabVisibility::kBackground);
   EXPECT_TRUE(fake_writer);
   auto real_writer = recording_data_store_->GetWriterForOrigin(
-      kTestOrigin, performance_manager::TabVisibility::kBackground);
+      TestOrigin(), performance_manager::TabVisibility::kBackground);
   EXPECT_TRUE(real_writer);
 
   EXPECT_EQ(performance_manager::SiteFeatureUsage::kSiteFeatureUsageUnknown,
@@ -102,7 +106,7 @@
   EXPECT_EQ(0U, inspector->GetAllInMemoryOrigins().size());
   std::unique_ptr<SiteDataProto> data;
   bool is_dirty = false;
-  EXPECT_FALSE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+  EXPECT_FALSE(inspector->GetDataForOrigin(TestOrigin(), &is_dirty, &data));
   EXPECT_FALSE(is_dirty);
   EXPECT_EQ(nullptr, data.get());
 
@@ -110,16 +114,16 @@
     // Add an entry through the writing data store, see that it's reflected in
     // the inspector interface.
     auto writer = recording_data_store_->GetWriterForOrigin(
-        kTestOrigin, performance_manager::TabVisibility::kBackground);
+        TestOrigin(), performance_manager::TabVisibility::kBackground);
 
     EXPECT_EQ(1U, inspector->GetAllInMemoryOrigins().size());
-    EXPECT_TRUE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+    EXPECT_TRUE(inspector->GetDataForOrigin(TestOrigin(), &is_dirty, &data));
     EXPECT_FALSE(is_dirty);
     ASSERT_NE(nullptr, data.get());
 
     // Touch the underlying data, see that the dirty bit updates.
     writer->NotifySiteLoaded();
-    EXPECT_TRUE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
+    EXPECT_TRUE(inspector->GetDataForOrigin(TestOrigin(), &is_dirty, &data));
   }
 
   // Make sure the interface is unregistered from the profile on destruction.
diff --git a/chrome/browser/resource_coordinator/tab_activity_watcher_unittest.cc b/chrome/browser/resource_coordinator/tab_activity_watcher_unittest.cc
index 12d8836..aa85cf1 100644
--- a/chrome/browser/resource_coordinator/tab_activity_watcher_unittest.cc
+++ b/chrome/browser/resource_coordinator/tab_activity_watcher_unittest.cc
@@ -7,6 +7,7 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/no_destructor.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "chrome/browser/engagement/site_engagement_service.h"
@@ -50,10 +51,12 @@
 const int64_t kIdShift = 1 << 13;
 
 // Test URLs need to be from different origins to test site engagement score.
-const GURL kTestUrls[] = {
-    GURL("https://test1.example.com"), GURL("https://test3.example.com"),
-    GURL("https://test2.example.com"), GURL("https://test4.example.com"),
-};
+const std::vector<GURL>& TestUrls() {
+  static base::NoDestructor<std::vector<GURL>> test_urls{
+      {GURL("https://test1.example.com"), GURL("https://test3.example.com"),
+       GURL("https://test2.example.com"), GURL("https://test4.example.com")}};
+  return *test_urls;
+}
 
 // The default metric values for a tab.
 const UkmMetricMap kBasicMetricValues({
@@ -90,7 +93,7 @@
   LifecycleUnit* AddNewTab(TabStripModel* tab_strip_model, int i) {
     LifecycleUnit* result = TabLifecycleUnitSource::GetTabLifecycleUnit(
         tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                          GURL(kTestUrls[i])));
+                                                          TestUrls()[i]));
     if (i == 0)
       tab_strip_model->ActivateTabAt(i);
     else
@@ -237,7 +240,7 @@
   {
     SCOPED_TRACE("");
     ukm_entry_checker_.ExpectNewEntry(
-        kTabMetricsEntryName, kTestUrls[0],
+        kTabMetricsEntryName, TestUrls()[0],
         {
             {TabManager_TabMetrics::kQueryIdName, 1 * kIdShift},
             {TabManager_TabMetrics::kLabelIdName, 2 * kIdShift},
@@ -251,7 +254,7 @@
   {
     SCOPED_TRACE("");
     ukm_entry_checker_.ExpectNewEntry(
-        kTabMetricsEntryName, kTestUrls[0],
+        kTabMetricsEntryName, TestUrls()[0],
         {
             {TabManager_TabMetrics::kQueryIdName, 3 * kIdShift},
             {TabManager_TabMetrics::kLabelIdName, 2 * kIdShift + 1},
@@ -280,14 +283,14 @@
               2);
 
     ukm_entry_checker_.ExpectNewEntry(
-        kTabMetricsEntryName, kTestUrls[0],
+        kTabMetricsEntryName, TestUrls()[0],
         {
             {TabManager_TabMetrics::kQueryIdName, 5 * kIdShift},
             {TabManager_TabMetrics::kLabelIdName, 2 * kIdShift + 2},
         });
 
     ukm_entry_checker_.ExpectNewEntry(
-        kTabMetricsEntryName, kTestUrls[1],
+        kTabMetricsEntryName, TestUrls()[1],
         {
             {TabManager_TabMetrics::kQueryIdName, 5 * kIdShift},
             {TabManager_TabMetrics::kLabelIdName, 6 * kIdShift},
@@ -333,7 +336,7 @@
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   content::WebContents* fg_contents =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[0]));
+                                                        TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
   WebContentsTester::For(fg_contents)->TestSetIsLoading(false);
 
@@ -344,21 +347,21 @@
   // when it stops loading.
   content::WebContents* bg_contents =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[1]));
+                                                        TestUrls()[1]);
   WebContentsTester::For(bg_contents)->TestSetIsLoading(false);
-  ExpectNewEntry(kTestUrls[1], kBasicMetricValues);
+  ExpectNewEntry(TestUrls()[1], kBasicMetricValues);
 
   // Activating a tab logs the deactivated tab.
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 1);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[0], kBasicMetricValues);
+    ExpectNewEntry(TestUrls()[0], kBasicMetricValues);
   }
 
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 0);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], kBasicMetricValues);
+    ExpectNewEntry(TestUrls()[1], kBasicMetricValues);
   }
 
   // Closing the tabs destroys the WebContentses but should not trigger logging.
@@ -376,22 +379,22 @@
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   content::WebContents* test_contents_1 =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[0]));
+                                                        TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
 
   // Opening the background tab triggers logging once the page finishes loading.
   content::WebContents* test_contents_2 =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[1]));
+                                                        TestUrls()[1]);
   EXPECT_EQ(0, ukm_entry_checker_.NumNewEntriesRecorded(kEntryName));
   WebContentsTester::For(test_contents_2)->TestSetIsLoading(false);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(GURL(kTestUrls[1]), kBasicMetricValues);
+    ExpectNewEntry(TestUrls()[1], kBasicMetricValues);
   }
 
   // Navigating the active tab doesn't trigger logging.
-  WebContentsTester::For(test_contents_1)->NavigateAndCommit(kTestUrls[2]);
+  WebContentsTester::For(test_contents_1)->NavigateAndCommit(TestUrls()[2]);
   EXPECT_EQ(0, ukm_entry_checker_.NumNewEntriesRecorded(kEntryName));
 
   // Pinning the active tab doesn't trigger logging.
@@ -404,26 +407,26 @@
   expected_metrics[TabManager_TabMetrics::kIsPinnedName] = 1;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(GURL(kTestUrls[1]), expected_metrics);
+    ExpectNewEntry(TestUrls()[1], expected_metrics);
   }
   tab_strip_model->SetTabPinned(1, false);
   expected_metrics[TabManager_TabMetrics::kIsPinnedName] = 0;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(GURL(kTestUrls[1]), kBasicMetricValues);
+    ExpectNewEntry(TestUrls()[1], kBasicMetricValues);
   }
 
   // Navigating the background tab triggers logging once the page finishes
   // loading.
   auto navigation = content::NavigationSimulator::CreateBrowserInitiated(
-      kTestUrls[0], test_contents_2);
+      TestUrls()[0], test_contents_2);
   navigation->SetKeepLoading(true);
   navigation->Commit();
   EXPECT_EQ(0, ukm_entry_checker_.NumNewEntriesRecorded(kEntryName));
   navigation->StopLoading();
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(GURL(kTestUrls[0]), kBasicMetricValues);
+    ExpectNewEntry(TestUrls()[0], kBasicMetricValues);
   }
 
   tab_strip_model->CloseAllTabs();
@@ -438,7 +441,7 @@
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   content::WebContents* test_contents_1 =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[0]));
+                                                        TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
 
   // Expected metrics for tab event.
@@ -447,15 +450,16 @@
   // Load background contents and verify UKM entry.
   content::WebContents* test_contents_2 =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[1]));
+                                                        TestUrls()[1]);
   WebContentsTester::For(test_contents_2)->TestSetIsLoading(false);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics);
+    ExpectNewEntry(TestUrls()[1], expected_metrics);
   }
 
   // Site engagement score should round down to the nearest 10.
-  SiteEngagementService::Get(profile())->ResetBaseScoreForURL(kTestUrls[1], 45);
+  SiteEngagementService::Get(profile())->ResetBaseScoreForURL(TestUrls()[1],
+                                                              45);
   expected_metrics[TabManager_TabMetrics::kSiteEngagementScoreName] = 40;
 
   auto* audible_helper_2 =
@@ -468,30 +472,30 @@
   expected_metrics[TabManager_TabMetrics::kIsPinnedName] = 1;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics);
+    ExpectNewEntry(TestUrls()[1], expected_metrics);
   }
 
   // Unset WasRecentlyAudible and navigate the background tab to a new domain.
   // Site engagement score for the new domain is 0.
   audible_helper_2->SetNotRecentlyAudibleForTesting();
   expected_metrics[TabManager_TabMetrics::kWasRecentlyAudibleName] = 0;
-  WebContentsTester::For(test_contents_2)->NavigateAndCommit(kTestUrls[2]);
+  WebContentsTester::For(test_contents_2)->NavigateAndCommit(TestUrls()[2]);
   expected_metrics[TabManager_TabMetrics::kSiteEngagementScoreName] = 0;
 
   WebContentsTester::For(test_contents_2)->TestSetIsLoading(false);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[2], expected_metrics);
+    ExpectNewEntry(TestUrls()[2], expected_metrics);
   }
 
   // Navigate the active tab and switch away from it. The entry should reflect
   // the new URL (even when the page hasn't finished loading).
-  WebContentsTester::For(test_contents_1)->NavigateAndCommit(kTestUrls[2]);
+  WebContentsTester::For(test_contents_1)->NavigateAndCommit(TestUrls()[2]);
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 0);
   {
     SCOPED_TRACE("");
     // This tab still has the default metrics.
-    ExpectNewEntry(kTestUrls[2], kBasicMetricValues);
+    ExpectNewEntry(TestUrls()[2], kBasicMetricValues);
   }
 
   tab_strip_model->CloseAllTabs();
@@ -507,10 +511,10 @@
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   content::WebContents* test_contents_1 =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[0]));
+                                                        TestUrls()[0]);
   content::WebContents* test_contents_2 =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[1]));
+                                                        TestUrls()[1]);
 
   // RunUntilIdle is needed because the widget input handler is initialized
   // asynchronously via mojo (see SetupWidgetInputHandler).
@@ -532,7 +536,7 @@
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 1);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[0], expected_metrics_1);
+    ExpectNewEntry(TestUrls()[0], expected_metrics_1);
   }
 
   // The second tab's counts are independent of the other's.
@@ -545,7 +549,7 @@
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 0);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics_2);
+    ExpectNewEntry(TestUrls()[1], expected_metrics_2);
   }
 
   // New events are added to the first tab's existing counts.
@@ -555,16 +559,16 @@
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 1);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[0], expected_metrics_1);
+    ExpectNewEntry(TestUrls()[0], expected_metrics_1);
   }
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 0);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics_2);
+    ExpectNewEntry(TestUrls()[1], expected_metrics_2);
   }
 
   // After a navigation, test that the counts are reset.
-  WebContentsTester::For(test_contents_1)->NavigateAndCommit(kTestUrls[2]);
+  WebContentsTester::For(test_contents_1)->NavigateAndCommit(TestUrls()[2]);
   // The widget may have been invalidated by the navigation.
   widget_1 = test_contents_1->GetRenderViewHost()->GetWidget();
   widget_1->ForwardMouseEvent(CreateMouseEvent(WebInputEvent::kMouseMove));
@@ -572,7 +576,7 @@
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 1);
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[2], expected_metrics_1);
+    ExpectNewEntry(TestUrls()[2], expected_metrics_1);
   }
 
   tab_strip_model->CloseAllTabs();
@@ -589,7 +593,7 @@
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   content::WebContents* test_contents =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[0]));
+                                                        TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
 
   // Hiding the window doesn't trigger a log entry, unless the window was
@@ -612,7 +616,7 @@
 
   // Set up first tab.
   tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                    GURL(kTestUrls[0]));
+                                                    TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
 
   // Expected metrics for tab event.
@@ -621,7 +625,7 @@
   // Load background contents and verify UKM entry.
   content::WebContents* test_contents =
       tab_activity_simulator_.AddWebContentsAndNavigate(
-          tab_strip_model, GURL(kTestUrls[1]),
+          tab_strip_model, TestUrls()[1],
           ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED |
                                     ui::PAGE_TRANSITION_FROM_ADDRESS_BAR));
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
@@ -634,12 +638,12 @@
   expected_metrics[TabManager_TabMetrics::kNavigationEntryCountName] = 1;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics);
+    ExpectNewEntry(TestUrls()[1], expected_metrics);
   }
 
   // Navigate background tab (not all transition types make sense in the
   // background, but this is simpler than juggling two tabs to trigger logging).
-  tab_activity_simulator_.Navigate(test_contents, kTestUrls[2],
+  tab_activity_simulator_.Navigate(test_contents, TestUrls()[2],
                                    ui::PAGE_TRANSITION_LINK);
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
   expected_metrics[TabManager_TabMetrics::kPageTransitionCoreTypeName] =
@@ -651,11 +655,11 @@
   expected_metrics[TabManager_TabMetrics::kNavigationEntryCountName].value()++;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[2], expected_metrics);
+    ExpectNewEntry(TestUrls()[2], expected_metrics);
   }
 
   tab_activity_simulator_.Navigate(
-      test_contents, kTestUrls[0],
+      test_contents, TestUrls()[0],
       ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
                                 ui::PAGE_TRANSITION_SERVER_REDIRECT));
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
@@ -667,10 +671,10 @@
   expected_metrics[TabManager_TabMetrics::kNavigationEntryCountName].value()++;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[0], expected_metrics);
+    ExpectNewEntry(TestUrls()[0], expected_metrics);
   }
 
-  tab_activity_simulator_.Navigate(test_contents, kTestUrls[0],
+  tab_activity_simulator_.Navigate(test_contents, TestUrls()[0],
                                    ui::PAGE_TRANSITION_RELOAD);
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
   expected_metrics[TabManager_TabMetrics::kPageTransitionCoreTypeName] =
@@ -682,10 +686,10 @@
       false;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[0], expected_metrics);
+    ExpectNewEntry(TestUrls()[0], expected_metrics);
   }
 
-  tab_activity_simulator_.Navigate(test_contents, kTestUrls[1],
+  tab_activity_simulator_.Navigate(test_contents, TestUrls()[1],
                                    ui::PAGE_TRANSITION_AUTO_BOOKMARK);
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
   expected_metrics[TabManager_TabMetrics::kPageTransitionCoreTypeName] =
@@ -695,10 +699,10 @@
   expected_metrics[TabManager_TabMetrics::kNavigationEntryCountName].value()++;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics);
+    ExpectNewEntry(TestUrls()[1], expected_metrics);
   }
 
-  tab_activity_simulator_.Navigate(test_contents, kTestUrls[1],
+  tab_activity_simulator_.Navigate(test_contents, TestUrls()[1],
                                    ui::PAGE_TRANSITION_FORM_SUBMIT);
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
   expected_metrics[TabManager_TabMetrics::kPageTransitionCoreTypeName] =
@@ -706,12 +710,12 @@
   expected_metrics[TabManager_TabMetrics::kNavigationEntryCountName].value()++;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[1], expected_metrics);
+    ExpectNewEntry(TestUrls()[1], expected_metrics);
   }
 
   // Test non-reportable core type.
   tab_activity_simulator_.Navigate(
-      test_contents, kTestUrls[0],
+      test_contents, TestUrls()[0],
       ui::PageTransitionFromInt(ui::PAGE_TRANSITION_KEYWORD |
                                 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR));
   WebContentsTester::For(test_contents)->TestSetIsLoading(false);
@@ -722,7 +726,7 @@
   expected_metrics[TabManager_TabMetrics::kNavigationEntryCountName].value()++;
   {
     SCOPED_TRACE("");
-    ExpectNewEntry(kTestUrls[0], expected_metrics);
+    ExpectNewEntry(TestUrls()[0], expected_metrics);
   }
 
   tab_strip_model->CloseAllTabs();
@@ -738,7 +742,7 @@
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   content::WebContents* orig_contents =
       tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                        GURL(kTestUrls[0]));
+                                                        TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
   WebContentsTester::For(orig_contents)->TestSetIsLoading(false);
 
@@ -750,7 +754,7 @@
   // Normally this happens when the browser or prerenderer attaches tab helpers.
   ukm::InitializeSourceUrlRecorderForWebContents(new_contents.get());
 
-  tab_activity_simulator_.Navigate(new_contents.get(), GURL(kTestUrls[1]));
+  tab_activity_simulator_.Navigate(new_contents.get(), TestUrls()[1]);
   WebContentsTester::For(new_contents.get())->TestSetIsLoading(false);
 
   // Replace and delete the old contents.
@@ -764,13 +768,13 @@
 
   // Add a new tab so the first tab is backgrounded.
   tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                    GURL(kTestUrls[2]));
+                                                    TestUrls()[2]);
   tab_activity_simulator_.SwitchToTabAt(tab_strip_model, 1);
   {
     SCOPED_TRACE("");
     // Replaced tab uses the orig source_id; so the metrics is logged to
-    // kTestUrls[0].
-    ExpectNewEntry(kTestUrls[0], kBasicMetricValues);
+    // TestUrls()[0].
+    ExpectNewEntry(TestUrls()[0], kBasicMetricValues);
   }
 
   tab_strip_model->CloseAllTabs();
@@ -816,7 +820,7 @@
 
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                    GURL(kTestUrls[0]));
+                                                    TestUrls()[0]);
 
   // The tab is in the foreground, so it isn't logged as a background tab.
   tab_strip_model->CloseWebContentsAt(0, TabStripModel::CLOSE_USER_GESTURE);
@@ -831,13 +835,13 @@
 
   TabStripModel* tab_strip_model = browser->tab_strip_model();
   tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                    GURL(kTestUrls[0]));
+                                                    TestUrls()[0]);
   tab_strip_model->ActivateTabAt(0);
   tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                    GURL(kTestUrls[1]));
+                                                    TestUrls()[1]);
   AdvanceClock();
   tab_activity_simulator_.AddWebContentsAndNavigate(tab_strip_model,
-                                                    GURL(kTestUrls[2]));
+                                                    TestUrls()[2]);
   AdvanceClock();
   // MRU ordering by tab indices:
   // 0 (foreground), 2 (created last), 1 (created first),
@@ -847,7 +851,7 @@
   {
     SCOPED_TRACE("");
     ukm_entry_checker_.ExpectNewEntry(
-        kEntryName, kTestUrls[2],
+        kEntryName, TestUrls()[2],
         {
             {ForegroundedOrClosed::kIsForegroundedName, 1},
         });
@@ -861,7 +865,7 @@
   {
     SCOPED_TRACE("");
     ukm_entry_checker_.ExpectNewEntry(
-        kEntryName, kTestUrls[1],
+        kEntryName, TestUrls()[1],
         {
             {ForegroundedOrClosed::kIsForegroundedName, 1},
         });
@@ -876,14 +880,14 @@
     SCOPED_TRACE("");
     // The rightmost tab was in the background and was closed.
     ukm_entry_checker_.ExpectNewEntry(
-        kEntryName, kTestUrls[2],
+        kEntryName, TestUrls()[2],
         {
             {ForegroundedOrClosed::kIsForegroundedName, 0},
         });
 
     // The leftmost tab was in the background and was closed.
     ukm_entry_checker_.ExpectNewEntry(
-        kEntryName, kTestUrls[0],
+        kEntryName, TestUrls()[0],
         {
             {ForegroundedOrClosed::kIsForegroundedName, 0},
         });
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/node_wrapper.js b/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/node_wrapper.js
index 7ed5720f..0c22d6a 100644
--- a/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/node_wrapper.js
+++ b/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/node_wrapper.js
@@ -211,6 +211,9 @@
     /** @private {!AutomationNode} */
     this.baseNode_ = baseNode;
 
+    /** @private {boolean} */
+    this.invalidated_ = false;
+
     /** @private {function(chrome.automation.AutomationEvent)} */
     this.childrenChangedHandler_ = this.refresh_.bind(this);
 
@@ -256,7 +259,11 @@
 
   /** @override */
   isValidGroup() {
-    return !!this.baseNode_.role && super.isValidGroup();
+    if (!this.baseNode_.role) {
+      // If the underlying automation node has been invalidated, return false.
+      return false;
+    }
+    return !this.invalidated_ && super.isValidGroup();
   }
 
   /** @override */
@@ -302,6 +309,8 @@
     try {
       RootNodeWrapper.findAndSetChildren(this, childConstructor);
     } catch (e) {
+      this.onUnfocus();
+      this.invalidated_ = true;
       SwitchAccess.moveToValidNode();
       return;
     }
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
index 09fa253..f8d51f1 100644
--- a/chrome/browser/resources/settings/BUILD.gn
+++ b/chrome/browser/resources/settings/BUILD.gn
@@ -110,7 +110,6 @@
     ":extension_control_browser_proxy",
     ":global_scroll_target_behavior",
     ":lifetime_browser_proxy",
-    ":metrics_browser_proxy",
     ":open_window_proxy",
     ":page_visibility",
     ":route",
@@ -140,11 +139,6 @@
   externs_list = [ "$externs_path/chrome_send.js" ]
 }
 
-js_library("metrics_browser_proxy") {
-  deps = [ "//ui/webui/resources/js:cr" ]
-  externs_list = [ "$externs_path/chrome_send.js" ]
-}
-
 js_library("open_window_proxy") {
   deps = [ "//ui/webui/resources/js:cr" ]
 }
diff --git a/chrome/browser/resources/settings/lazy_load.html b/chrome/browser/resources/settings/lazy_load.html
index 560e249a..7800dbf 100644
--- a/chrome/browser/resources/settings/lazy_load.html
+++ b/chrome/browser/resources/settings/lazy_load.html
@@ -10,6 +10,7 @@
   <link rel="import" href="privacy_page/security_keys_subpage.html">
   <link rel="import" href="site_settings/site_data_details_subpage.html">
   <link rel="import" href="site_settings_page/site_settings_page.html">
+<!--   <link rel="import" href="site_settings/all_sites.html"> -->
   <link rel="import" href="site_settings/category_default_setting.html">
   <link rel="import" href="site_settings/category_setting_exceptions.html">
   <link rel="import" href="site_settings/chooser_exception_list.html">
diff --git a/chrome/browser/resources/settings/metrics_browser_proxy.html b/chrome/browser/resources/settings/metrics_browser_proxy.html
deleted file mode 100644
index a1ced50..0000000
--- a/chrome/browser/resources/settings/metrics_browser_proxy.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<link rel="import" href="chrome://resources/html/cr.html">
-<script src="metrics_browser_proxy.js"></script>
diff --git a/chrome/browser/resources/settings/metrics_browser_proxy.js b/chrome/browser/resources/settings/metrics_browser_proxy.js
deleted file mode 100644
index 2c97685..0000000
--- a/chrome/browser/resources/settings/metrics_browser_proxy.js
+++ /dev/null
@@ -1,92 +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.
-
-/** @fileoverview Handles metrics for the settings pages. */
-
-cr.define('settings', function() {
-  /**
-   * Contains all possible recorded interactions across privacy settings pages.
-   *
-   * These values are persisted to logs. Entries should not be renumbered and
-   * numeric values should never be reused.
-   *
-   * Must be kept in sync with enum of the same name in
-   * histograms/enums.xml
-   * @enum {number}
-   */
-  const SettingsPageInteractions = {
-    PRIVACY_SYNC_AND_GOOGLE_SERVICES: 0,
-    PRIVACY_CHROME_SIGN_IN: 1,
-    PRIVACY_DO_NOT_TRACK: 2,
-    PRIVACY_PAYMENT_METHOD: 3,
-    PRIVACY_NETWORK_PREDICTION: 4,
-    PRIVACY_MANAGE_CERTIFICATES: 5,
-    PRIVACY_SECURITY_KEYS: 6,
-    PRIVACY_SITE_SETTINGS: 7,
-    PRIVACY_CLEAR_BROWSING_DATA: 8,
-    PRIVACY_SAFE_BROWSING: 9,
-    PRIVACY_PASSWORD_CHECK: 10,
-    PRIVACY_IMPROVE_SECURITY: 11,
-    PRIVACY_SITE_SETTINGS_COOKIES: 12,
-    PRIVACY_SITE_SETTINGS_LOCATION: 13,
-    PRIVACY_SITE_SETTINGS_CAMERA: 14,
-    PRIVACY_SITE_SETTINGS_MICROPHONE: 15,
-    PRIVACY_SITE_SETTINGS_SENSORS: 16,
-    PRIVACY_SITE_SETTINGS_NOTIFICATIONS: 17,
-    PRIVACY_SITE_SETTINGS_JAVASCRIPT: 18,
-    PRIVACY_SITE_SETTINGS_FLASH: 19,
-    PRIVACY_SITE_SETTINGS_IMAGES: 20,
-    PRIVACY_SITE_SETTINGS_POPUPS: 21,
-    PRIVACY_SITE_SETTINGS_ADS: 22,
-    PRIVACY_SITE_SETTINGS_BACKGROUND_SYNC: 23,
-    PRIVACY_SITE_SETTINGS_SOUND: 24,
-    PRIVACY_SITE_SETTINGS_AUTOMATIC_DOWNLOADS: 25,
-    PRIVACY_SITE_SETTINGS_UNSANDBOXED_PLUGINS: 26,
-    PRIVACY_SITE_SETTINGS_HANDLERS: 27,
-    PRIVACY_SITE_SETTINGS_MIDI_DEVICES: 28,
-    PRIVACY_SITE_SETTINGS_ZOOM_LEVELS: 29,
-    PRIVACY_SITE_SETTINGS_USB_DEVICES: 30,
-    PRIVACY_SITE_SETTINGS_SERIAL_PORTS: 31,
-    PRIVACY_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE: 32,
-    PRIVACY_SITE_SETTINGS_PDF_DOCUMENTS: 33,
-    PRIVACY_SITE_SETTINGS_PROTECTED_CONTENT: 34,
-    PRIVACY_SITE_SETTINGS_CLIPBOARD: 35,
-    PRIVACY_SITE_SETTINGS_PAYMENT_HANDLER: 36,
-    PRIVACY_SITE_SETTINGS_MIXEDSCRIPT: 37,
-    PRIVACY_SITE_SETTINGS_BLUETOOTH_SCANNING: 38,
-    // Leave this at the end.
-    SETTINGS_MAX_VALUE: 38,
-  };
-
-  /** @interface */
-  class MetricsBrowserProxy {
-    /**
-     * Helper function that calls recordHistogram for the
-     * SettingsPage.SettingsPageInteractions histogram
-     * @param {!settings.SettingsPageInteractions} interaction
-     */
-    recordSettingsPageHistogram(interaction) {}
-  }
-
-  /**
-   * @implements {settings.MetricsBrowserProxy}
-   */
-  class MetricsBrowserProxyImpl {
-    /** @override*/
-    recordSettingsPageHistogram(interaction) {
-      chrome.send('metricsHandler:recordInHistogram', [
-        'SettingsPage.SettingsPageInteractions', interaction,
-        settings.SettingsPageInteractions.SETTINGS_MAX_VALUE
-      ]);
-    }
-  }
-
-  cr.addSingletonGetter(MetricsBrowserProxyImpl);
-
-  return {
-    MetricsBrowserProxy,
-    MetricsBrowserProxyImpl,
-    SettingsPageInteractions
-  };
-});
\ No newline at end of file
diff --git a/chrome/browser/resources/settings/privacy_page/BUILD.gn b/chrome/browser/resources/settings/privacy_page/BUILD.gn
index 6c92cc6e..c652344 100644
--- a/chrome/browser/resources/settings/privacy_page/BUILD.gn
+++ b/chrome/browser/resources/settings/privacy_page/BUILD.gn
@@ -54,7 +54,6 @@
 js_library("privacy_page") {
   deps = [
     ":privacy_page_browser_proxy",
-    "..:metrics_browser_proxy",
     "..:page_visibility",
     "..:route",
     "..:router",
@@ -131,7 +130,6 @@
 js_library("security_page") {
   deps = [
     ":privacy_page_browser_proxy",
-    "..:metrics_browser_proxy",
     "..:route",
     "..:router",
     "../people_page:sync_browser_proxy",
diff --git a/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.html b/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.html
index af12a3e..8ccdbcf 100644
--- a/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.html
+++ b/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.html
@@ -4,7 +4,6 @@
 <link rel="import" href="chrome://resources/html/load_time_data.html">
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
 <link rel="import" href="../controls/settings_toggle_button.html">
-<link rel="import" href="../metrics_browser_proxy.html">
 <link rel="import" href="../people_page/sync_browser_proxy.html">
 <link rel="import" href="../prefs/prefs_behavior.html">
 <link rel="import" href="../prefs/prefs.html">
diff --git a/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.js b/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.js
index 903143e..8f8b4f5 100644
--- a/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.js
+++ b/chrome/browser/resources/settings/privacy_page/passwords_leak_detection_toggle.js
@@ -59,7 +59,6 @@
     syncBrowserProxy.getStoredAccounts().then(storedAccountsChanged);
     this.addWebUIListener('stored-accounts-updated', storedAccountsChanged);
     // </if>
-    this.metricsBrowserProxy_ = settings.MetricsBrowserProxyImpl.getInstance();
   },
 
   /**
@@ -108,8 +107,6 @@
 
   /** @private */
   onPasswordsLeakDetectionChange_() {
-    this.metricsBrowserProxy_.recordSettingsPageHistogram(
-        settings.SettingsPageInteractions.PRIVACY_PASSWORD_CHECK);
     this.setPrefValue(
         'profile.password_manager_leak_detection',
         this.$.passwordsLeakDetectionCheckbox.checked);
diff --git a/chrome/browser/resources/settings/privacy_page/personalization_options.js b/chrome/browser/resources/settings/privacy_page/personalization_options.js
index eace1d1..b297960 100644
--- a/chrome/browser/resources/settings/privacy_page/personalization_options.js
+++ b/chrome/browser/resources/settings/privacy_page/personalization_options.js
@@ -165,6 +165,9 @@
           .sendPrefChange();
       this.showRestartToast_ = true;
     }
+
+    this.browserProxy_.recordSettingsPageHistogram(
+        settings.SettingsPageInteractions.PRIVACY_CHROME_SIGN_IN);
   },
 
   /** @private */
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html
index 078c52ba..7453799 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -14,7 +14,6 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-collapse/iron-collapse.html">
 <link rel="import" href="../clear_browsing_data_dialog/clear_browsing_data_dialog.html">
 <link rel="import" href="../controls/settings_toggle_button.html">
-<link rel="import" href="../metrics_browser_proxy.html">
 <link rel="import" href="../people_page/sync_browser_proxy.html">
 <link rel="import" href="../prefs/prefs.html">
 <link rel="import" href="../prefs/prefs_behavior.html">
@@ -84,9 +83,7 @@
               class="settings-box first"
               pref="{{prefs.safebrowsing.enabled}}"
               label="$i18n{safeBrowsingEnableProtection}"
-              sub-label="$i18n{safeBrowsingEnableProtectionDesc}"
-              on-settings-boolean-control-change=
-                  "onSafeBrowsingToggleChange_">
+              sub-label="$i18n{safeBrowsingEnableProtectionDesc}">
           </settings-toggle-button>
           <settings-passwords-leak-detection-toggle
               id="passwordsLeakDetectionToggle"
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.js b/chrome/browser/resources/settings/privacy_page/privacy_page.js
index 8c0608f..8f4055f13 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.js
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.js
@@ -7,6 +7,7 @@
  * 'settings-privacy-page' is the settings page containing privacy and
  * security settings.
  */
+
 cr.define('settings', function() {
   /**
    * @typedef {{
@@ -244,8 +245,6 @@
       this.ChooserType = settings.ChooserType;
 
       this.browserProxy_ = settings.PrivacyPageBrowserProxyImpl.getInstance();
-      this.metricsBrowserProxy_ =
-          settings.MetricsBrowserProxyImpl.getInstance();
 
       this.onBlockAutoplayStatusChanged_({
         pref: /** @type {chrome.settingsPrivate.PrefObject} */ ({value: false}),
@@ -272,8 +271,6 @@
 
     /** @private */
     onSafeBrowsingReportingToggleChange_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
-          settings.SettingsPageInteractions.PRIVACY_IMPROVE_SECURITY);
       this.setPrefValue(
           'safebrowsing.scout_reporting_enabled',
           this.$$('#safeBrowsingReportingToggle').checked);
@@ -349,7 +346,7 @@
      * @private
      */
     onCanMakePaymentChange_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
+      this.browserProxy_.recordSettingsPageHistogram(
           settings.SettingsPageInteractions.PRIVACY_PAYMENT_METHOD);
     },
 
@@ -360,7 +357,7 @@
      * @private
      */
     onDoNotTrackChange_(event) {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
+      this.browserProxy_.recordSettingsPageHistogram(
           settings.SettingsPageInteractions.PRIVACY_DO_NOT_TRACK);
       const target = /** @type {!SettingsToggleButtonElement} */ (event.target);
       if (!target.checked) {
@@ -416,14 +413,14 @@
 
     /** @private */
     onManageCertificatesTap_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
-          settings.SettingsPageInteractions.PRIVACY_MANAGE_CERTIFICATES);
       // <if expr="use_nss_certs">
       settings.Router.getInstance().navigateTo(settings.routes.CERTIFICATES);
       // </if>
       // <if expr="is_win or is_macosx">
       this.browserProxy_.showManageSSLCertificates();
       // </if>
+      this.browserProxy_.recordSettingsPageHistogram(
+          settings.SettingsPageInteractions.PRIVACY_MANAGE_CERTIFICATES);
     },
 
     /**
@@ -433,7 +430,7 @@
      * @private
      */
     onNetworkPredictionChange_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
+      this.browserProxy_.recordSettingsPageHistogram(
           settings.SettingsPageInteractions.PRIVACY_NETWORK_PREDICTION);
     },
 
@@ -457,23 +454,17 @@
 
     /** @private */
     onSiteSettingsTap_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
-          settings.SettingsPageInteractions.PRIVACY_SITE_SETTINGS);
       settings.Router.getInstance().navigateTo(settings.routes.SITE_SETTINGS);
-    },
-
-    /** @private */
-    onSafeBrowsingToggleChange_: function() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
-          settings.SettingsPageInteractions.PRIVACY_SAFE_BROWSING);
+      this.browserProxy_.recordSettingsPageHistogram(
+          settings.SettingsPageInteractions.PRIVACY_SITE_SETTINGS);
     },
 
     /** @private */
     onClearBrowsingDataTap_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
-          settings.SettingsPageInteractions.PRIVACY_CLEAR_BROWSING_DATA);
       settings.Router.getInstance().navigateTo(
           settings.routes.CLEAR_BROWSER_DATA);
+      this.browserProxy_.recordSettingsPageHistogram(
+          settings.SettingsPageInteractions.PRIVACY_CLEAR_BROWSING_DATA);
     },
 
     /** @private */
@@ -485,9 +476,9 @@
 
     /** @private */
     onSecurityKeysTap_() {
-      this.metricsBrowserProxy_.recordSettingsPageHistogram(
-          settings.SettingsPageInteractions.PRIVACY_SECURITY_KEYS);
       settings.Router.getInstance().navigateTo(settings.routes.SECURITY_KEYS);
+      this.browserProxy_.recordSettingsPageHistogram(
+          settings.SettingsPageInteractions.PRIVACY_SECURITY_KEYS);
     },
 
     /** @private */
@@ -505,4 +496,4 @@
   });
 
   return {BlockAutoplayStatus};
-});
\ No newline at end of file
+});
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_browser_proxy.js b/chrome/browser/resources/settings/privacy_page/privacy_page_browser_proxy.js
index 0cfa4c5..d6663e0 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page_browser_proxy.js
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page_browser_proxy.js
@@ -4,6 +4,29 @@
 
 /** @fileoverview Handles interprocess communication for the privacy page. */
 
+/**
+ * Contains all possible recorded interactions across privacy settings pages.
+ *
+ * These values are persisted to logs. Entries should not be renumbered and
+ * numeric values should never be reused.
+ *
+ * Must be kept in sync with enum of the same name in
+ * histograms/enums.xml
+ */
+settings.SettingsPageInteractions = {
+  PRIVACY_SYNC_AND_GOOGLE_SERVICES: 0,
+  PRIVACY_CHROME_SIGN_IN: 1,
+  PRIVACY_DO_NOT_TRACK: 2,
+  PRIVACY_PAYMENT_METHOD: 3,
+  PRIVACY_NETWORK_PREDICTION: 4,
+  PRIVACY_MANAGE_CERTIFICATES: 5,
+  PRIVACY_SECURITY_KEYS: 6,
+  PRIVACY_SITE_SETTINGS: 7,
+  PRIVACY_CLEAR_BROWSING_DATA: 8,
+  // Leave this at the end.
+  SETTINGS_MAX_VALUE: 8,
+};
+
 /** @typedef {{enabled: boolean, managed: boolean}} */
 let MetricsReporting;
 
@@ -25,6 +48,12 @@
 
     // </if>
 
+    /**
+     * Helper function that calls recordHistogram for the
+     * SettingsPage.SettingsPageInteractions histogram
+     */
+    recordSettingsPageHistogram(value) {}
+
     /** @param {boolean} enabled */
     setBlockAutoplayEnabled(enabled) {}
   }
@@ -46,6 +75,14 @@
 
     // </if>
 
+    /** @override*/
+    recordSettingsPageHistogram(value) {
+      chrome.send('metricsHandler:recordInHistogram', [
+        'SettingsPage.SettingsPageInteractions', value,
+        settings.SettingsPageInteractions.SETTINGS_MAX_VALUE
+      ]);
+    }
+
     /** @override */
     setBlockAutoplayEnabled(enabled) {
       chrome.send('setBlockAutoplayEnabled', [enabled]);
diff --git a/chrome/browser/resources/settings/privacy_page/security_page.html b/chrome/browser/resources/settings/privacy_page/security_page.html
index 242abb00..a6dcd093 100644
--- a/chrome/browser/resources/settings/privacy_page/security_page.html
+++ b/chrome/browser/resources/settings/privacy_page/security_page.html
@@ -4,7 +4,6 @@
 <link rel="import" href="passwords_leak_detection_toggle.html">
 <link rel="import" href="privacy_page_browser_proxy.html">
 <link rel="import" href="../controls/settings_toggle_button.html">
-<link rel="import" href="../metrics_browser_proxy.html">
 <link rel="import" href="../prefs/prefs.html">
 <link rel="import" href="../prefs/prefs_behavior.html">
 <link rel="import" href="../route.html">
diff --git a/chrome/browser/resources/settings/privacy_page/security_page.js b/chrome/browser/resources/settings/privacy_page/security_page.js
index 87f51e8..dc7ec8c5 100644
--- a/chrome/browser/resources/settings/privacy_page/security_page.js
+++ b/chrome/browser/resources/settings/privacy_page/security_page.js
@@ -45,8 +45,6 @@
   /** @override */
   ready() {
     this.browserProxy_ = settings.PrivacyPageBrowserProxyImpl.getInstance();
-
-    this.metricsBrowserProxy_ = settings.MetricsBrowserProxyImpl.getInstance();
   },
 
   /**
@@ -90,7 +88,7 @@
     // <if expr="is_win or is_macosx">
     this.browserProxy_.showManageSSLCertificates();
     // </if>
-    this.metricsBrowserProxy_.recordSettingsPageHistogram(
+    this.browserProxy_.recordSettingsPageHistogram(
         settings.SettingsPageInteractions.PRIVACY_MANAGE_CERTIFICATES);
   },
 
@@ -102,7 +100,7 @@
   /** @private */
   onSecurityKeysClick_() {
     settings.Router.getInstance().navigateTo(settings.routes.SECURITY_KEYS);
-    this.metricsBrowserProxy_.recordSettingsPageHistogram(
+    this.browserProxy_.recordSettingsPageHistogram(
         settings.SettingsPageInteractions.PRIVACY_SECURITY_KEYS);
   },
 });
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd
index e816781..1187d1cb 100644
--- a/chrome/browser/resources/settings/settings_resources.grd
+++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -858,13 +858,6 @@
                  file="site_settings/protocol_handlers.js"
                  preprocess="true"
                  type="chrome_html" />
-      <structure name="IDR_SETTINGS_METRICS_BROWSER_PROXY_HTML"
-                 file="metrics_browser_proxy.html"
-                 type="chrome_html" />
-      <structure name="IDR_SETTINGS_METRICS_BROWSER_PROXY_JS"
-                 file="metrics_browser_proxy.js"
-                 type="chrome_html"
-                 preprocess="true" />
       <structure name="IDR_SETTINGS_ROUTE_HTML"
                  file="route.html"
                  type="chrome_html" />
diff --git a/chrome/browser/resources/settings/site_settings_page/BUILD.gn b/chrome/browser/resources/settings/site_settings_page/BUILD.gn
index f87bc41..f6e7df0 100644
--- a/chrome/browser/resources/settings/site_settings_page/BUILD.gn
+++ b/chrome/browser/resources/settings/site_settings_page/BUILD.gn
@@ -10,7 +10,6 @@
 
 js_library("site_settings_page") {
   deps = [
-    "..:metrics_browser_proxy",
     "..:route",
     "..:router",
     "../site_settings:constants",
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
index a225efb..167823b 100644
--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
@@ -11,7 +11,6 @@
 <link rel="import" href="../site_settings/constants.html">
 <link rel="import" href="../site_settings/site_settings_behavior.html">
 <link rel="import" href="../site_settings/site_settings_prefs_browser_proxy.html">
-<link rel="import" href="../metrics_browser_proxy.html">
 
 <dom-module id="settings-site-settings-page">
   <template>
@@ -290,7 +289,7 @@
 
     <template is="dom-if" if="[[enableInsecureContentContentSetting_]]">
       <cr-link-row class="hr two-line" data-route="SITE_SETTINGS_MIXEDSCRIPT"
-          id="mixedscript" label="$i18n{siteSettingsInsecureContent}"
+          label="$i18n{siteSettingsInsecureContent}"
           on-click="onTapNavigate_"
           start-icon="settings:insecure-content"
           sub-label="$i18n{siteSettingsInsecureContentBlock}"
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.js b/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
index ed8aeb5..933ed64e 100644
--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
@@ -168,8 +168,6 @@
     this.ContentSettingsTypes = settings.ContentSettingsTypes;
     this.ALL_SITES = settings.ALL_SITES;
 
-    this.metricsBrowserProxy_ = settings.MetricsBrowserProxyImpl.getInstance();
-
     const keys = Object.keys(settings.ContentSettingsTypes);
     for (let i = 0; i < keys.length; ++i) {
       const key = settings.ContentSettingsTypes[keys[i]];
@@ -254,7 +252,5 @@
     const dataSet =
         /** @type {{route: string}} */ (event.currentTarget.dataset);
     settings.Router.getInstance().navigateTo(settings.routes[dataSet.route]);
-    this.metricsBrowserProxy_.recordSettingsPageHistogram(
-        settings.SettingsPageInteractions['PRIVACY_' + dataSet.route]);
   },
 });
diff --git a/chrome/browser/resources/tab_strip/tab_list.js b/chrome/browser/resources/tab_strip/tab_list.js
index 4e8a9772..b6ca602 100644
--- a/chrome/browser/resources/tab_strip/tab_list.js
+++ b/chrome/browser/resources/tab_strip/tab_list.js
@@ -416,15 +416,18 @@
           tabGroupElement.appendChild(tabElement);
           elementToInsert = tabGroupElement;
         }
-      } else if (
-          elementAtIndex && elementAtIndex.parentElement &&
+      }
+
+      if (elementAtIndex && elementAtIndex.parentElement &&
           isTabGroupElement(elementAtIndex.parentElement) &&
-          elementAtIndex.previousElementSibling === null) {
-        // If the element at the model index is in a group and is the first
-        // element in its group, insert the new element before its
-        // TabGroupElement. If a TabElement is being sandwiched between two
-        // TabElements in a group, it can be assumed that the tab will
-        // eventually be inserted into the group as well.
+          (elementAtIndex.previousElementSibling === null &&
+           elementAtIndex.tab.groupId !== tabElement.tab.groupId)) {
+        // If the element at the model index is in a group, and the group is
+        // different from the new tab's group, and is the first element in its
+        // group, insert the new element before its TabGroupElement. If a
+        // TabElement is being sandwiched between two TabElements in a group, it
+        // can be assumed that the tab will eventually be inserted into the
+        // group as well.
         elementAtIndex = elementAtIndex.parentElement;
       }
 
diff --git a/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc b/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
index b60c770..cf814b5 100644
--- a/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
+++ b/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
@@ -39,29 +39,29 @@
       static_cast<int>(network::mojom::ReferrerPolicy::kAlways), &navigation);
 
   content::PageState page_state =
-      content::PageState::CreateFromURL(sessions::test_data::kVirtualURL);
+      content::PageState::CreateFromURL(sessions::test_data::VirtualUrl());
   sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
       page_state.ToEncodedData(), &navigation);
 
   driver->Sanitize(&navigation);
   EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
   EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(sessions::test_data::kReferrerURL, navigation.referrer_url());
+  EXPECT_EQ(sessions::test_data::ReferrerUrl(), navigation.referrer_url());
   EXPECT_EQ(static_cast<int>(network::mojom::ReferrerPolicy::kAlways),
             navigation.referrer_policy());
-  EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(sessions::test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
   EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), sessions::test_data::kTransitionType));
   EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
   EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(sessions::test_data::kOriginalRequestURL,
+  EXPECT_EQ(sessions::test_data::OriginalRequestUrl(),
             navigation.original_request_url());
   EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
             navigation.is_overriding_user_agent());
   EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(sessions::test_data::FaviconUrl(), navigation.favicon_url());
   EXPECT_EQ(sessions::test_data::kHttpStatusCode,
             navigation.http_status_code());
 }
@@ -77,7 +77,7 @@
       static_cast<int>(network::mojom::ReferrerPolicy::kNever), &navigation);
 
   content::PageState page_state =
-      content::PageState::CreateFromURL(sessions::test_data::kVirtualURL);
+      content::PageState::CreateFromURL(sessions::test_data::VirtualUrl());
   sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
       page_state.ToEncodedData(), &navigation);
 
@@ -86,18 +86,18 @@
   // Fields that should remain untouched.
   EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
   EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(sessions::test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), sessions::test_data::kTransitionType));
   EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
   EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(sessions::test_data::kOriginalRequestURL,
+  EXPECT_EQ(sessions::test_data::OriginalRequestUrl(),
             navigation.original_request_url());
   EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
             navigation.is_overriding_user_agent());
   EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(sessions::test_data::FaviconUrl(), navigation.favicon_url());
   EXPECT_EQ(sessions::test_data::kHttpStatusCode,
             navigation.http_status_code());
 
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreview.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreview.java
index dbcc0fe..ba90ebb 100644
--- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreview.java
+++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreview.java
@@ -10,10 +10,10 @@
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
-import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
-import android.view.WindowManager;
+
+import org.chromium.ui.display.DisplayAndroid;
 
 /** CameraPreview class controls camera and camera previews. */
 public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
@@ -140,24 +140,8 @@
 
     /** Gets the display orientation degree as integer. */
     private int getDisplayOrientation() {
-        final int orientation;
-        WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
-        switch (wm.getDefaultDisplay().getRotation()) {
-            case Surface.ROTATION_90:
-                orientation = 90;
-                break;
-            case Surface.ROTATION_180:
-                orientation = 180;
-                break;
-            case Surface.ROTATION_270:
-                orientation = 270;
-                break;
-            case Surface.ROTATION_0:
-            default:
-                orientation = 0;
-                break;
-        }
-        return orientation;
+        DisplayAndroid display = DisplayAndroid.getNonMultiDisplay(mContext);
+        return display.getRotationDegrees();
     }
 
     /** Returns whether given camera info corresponds to back camera. */
diff --git a/chrome/browser/signin/chrome_signin_helper_unittest.cc b/chrome/browser/signin/chrome_signin_helper_unittest.cc
index c17c013..074d24f 100644
--- a/chrome/browser/signin/chrome_signin_helper_unittest.cc
+++ b/chrome/browser/signin/chrome_signin_helper_unittest.cc
@@ -30,7 +30,11 @@
 const char kMirrorAction[] = "action=ADDSESSION";
 #endif
 
-const GURL kGaiaUrl("https://accounts.google.com");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL GaiaUrl() {
+  return GURL("https://accounts.google.com");
+}
 
 // URLRequestInterceptor adding a account consistency response header to Gaia
 // responses.
@@ -74,7 +78,7 @@
         []() -> content::WebContents* { return nullptr; });
   }
   bool IsMainFrame() const override { return is_main_frame_; }
-  GURL GetOrigin() const override { return GURL(kGaiaUrl); }
+  GURL GetOrigin() const override { return GaiaUrl(); }
   const net::HttpResponseHeaders* GetHeaders() const override {
     return headers_.get();
   }
diff --git a/chrome/browser/ssl/ssl_client_auth_observer.cc b/chrome/browser/ssl/ssl_client_auth_observer.cc
index 97b5424..f8f7597b 100644
--- a/chrome/browser/ssl/ssl_client_auth_observer.cc
+++ b/chrome/browser/ssl/ssl_client_auth_observer.cc
@@ -21,9 +21,17 @@
     std::unique_ptr<content::ClientCertificateDelegate> delegate)
     : browser_context_(browser_context),
       cert_request_info_(cert_request_info),
-      delegate_(std::move(delegate)) {}
+      delegate_(std::move(delegate)) {
+  DCHECK(delegate_);
+}
 
 SSLClientAuthObserver::~SSLClientAuthObserver() {
+  // The caller is required to explicitly stop observing, but call
+  // StopObserving() anyway to avoid a dangling pointer. (StopObserving() is
+  // idempotent, so it may be called multiple times.)
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  DCHECK_EQ(0u, GetActiveObservers().count(this));
+  StopObserving();
 }
 
 void SSLClientAuthObserver::CertificateSelected(
diff --git a/chrome/browser/ssl/ssl_client_auth_observer.h b/chrome/browser/ssl/ssl_client_auth_observer.h
index 497d6f8..d7f4559 100644
--- a/chrome/browser/ssl/ssl_client_auth_observer.h
+++ b/chrome/browser/ssl/ssl_client_auth_observer.h
@@ -46,10 +46,13 @@
   // Cancels the certificate selection and aborts the request.
   void CancelCertificateSelection();
 
-  // Begins observing notifications from other SSLClientAuthHandler instances.
+  // Begins observing notifications from other SSLClientAuthObserver instances.
   // If another instance chooses a cert for a matching SSLCertRequestInfo, we
   // will also use the same cert and OnCertSelectedByNotification will be called
   // so that the cert selection UI can be closed.
+  //
+  // The caller must call CertificateSelected(), CancelCertificateSelection(),
+  // or StopObserving() before the SSLClientAuthObserver is destroyed.
   void StartObserving();
 
   // Stops observing notifications.  We will no longer act on client auth
diff --git a/chrome/browser/sync/test/integration/two_client_printers_sync_test.cc b/chrome/browser/sync/test/integration/two_client_printers_sync_test.cc
index 551a8d7..69aad66 100644
--- a/chrome/browser/sync/test/integration/two_client_printers_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_printers_sync_test.cc
@@ -252,3 +252,38 @@
   histograms.ExpectBucketCount("Printing.CUPS.MigratedMakeAndModel",
                                1 /* kMigrated */, 1);
 }
+
+IN_PROC_BROWSER_TEST_F(TwoClientPrintersSyncTest,
+                       InvalidPpdReferenceResolution) {
+  ASSERT_TRUE(SetupClients());
+
+  // Initialize sync bridge with test printer.
+  auto printer = CreateTestPrinterSpecifics(0);
+  const std::string spec_printer_id = printer->id();
+
+  auto ppd_ref = std::make_unique<sync_pb::PrinterPPDReference>();
+  ppd_ref->set_autoconf(true);
+  ppd_ref->set_user_supplied_ppd_url("file://fake_ppd_url");
+  printer->set_allocated_ppd_reference(ppd_ref.release());
+
+  auto* bridge = GetPrinterStore(0)->GetSyncBridge();
+  bridge->AddPrinter(std::move(printer));
+
+  // Confirm that the bridge is not migrated.
+  auto spec_printer = bridge->GetPrinter(spec_printer_id);
+  ASSERT_TRUE(spec_printer);
+  ASSERT_TRUE(spec_printer->has_ppd_reference());
+  auto spec_ppd_ref = spec_printer->ppd_reference();
+  ASSERT_TRUE(spec_ppd_ref.autoconf());
+  ASSERT_TRUE(spec_ppd_ref.has_user_supplied_ppd_url());
+
+  // Perform sync.
+  ASSERT_TRUE(SetupSync());
+  spec_printer = bridge->GetPrinter(spec_printer_id);
+  ASSERT_TRUE(spec_printer);
+  ASSERT_TRUE(spec_printer->has_ppd_reference());
+
+  spec_ppd_ref = spec_printer->ppd_reference();
+  EXPECT_FALSE(spec_ppd_ref.autoconf());
+  EXPECT_TRUE(spec_ppd_ref.has_user_supplied_ppd_url());
+}
diff --git a/chrome/browser/task_manager/providers/service_worker_task_provider.cc b/chrome/browser/task_manager/providers/service_worker_task_provider.cc
index b6545a19..69429444 100644
--- a/chrome/browser/task_manager/providers/service_worker_task_provider.cc
+++ b/chrome/browser/task_manager/providers/service_worker_task_provider.cc
@@ -6,17 +6,10 @@
 
 #include "base/stl_util.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
 #include "content/public/browser/browser_thread.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/service_worker_running_info.h"
 #include "content/public/browser/storage_partition.h"
-#include "content/public/common/child_process_host.h"
-#include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h"
 
 using content::BrowserThread;
 
@@ -30,18 +23,33 @@
   return nullptr;
 }
 
-void ServiceWorkerTaskProvider::Observe(
-    int type,
-    const content::NotificationSource& source,
-    const content::NotificationDetails& details) {
-  switch (type) {
-    case chrome::NOTIFICATION_PROFILE_CREATED: {
-      OnProfileCreated(content::Source<Profile>(source).ptr());
-      break;
-    }
-    default:
-      NOTREACHED() << type;
-  }
+void ServiceWorkerTaskProvider::OnProfileAdded(Profile* profile) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+  observed_profiles_.Add(profile);
+
+  content::ServiceWorkerContext* context =
+      content::BrowserContext::GetDefaultStoragePartition(profile)
+          ->GetServiceWorkerContext();
+  scoped_context_observer_.Add(context);
+}
+
+void ServiceWorkerTaskProvider::OnOffTheRecordProfileCreated(
+    Profile* off_the_record) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+  OnProfileAdded(off_the_record);
+}
+
+void ServiceWorkerTaskProvider::OnProfileWillBeDestroyed(Profile* profile) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+  observed_profiles_.Remove(profile);
+
+  content::ServiceWorkerContext* context =
+      content::BrowserContext::GetDefaultStoragePartition(profile)
+          ->GetServiceWorkerContext();
+  scoped_context_observer_.Remove(context);
 }
 
 void ServiceWorkerTaskProvider::OnVersionStartedRunning(
@@ -52,6 +60,7 @@
 
   CreateTask(context, version_id, running_info);
 }
+
 void ServiceWorkerTaskProvider::OnVersionStoppedRunning(
     content::ServiceWorkerContext* context,
     int64_t version_id) {
@@ -60,26 +69,21 @@
   DeleteTask(context, version_id);
 }
 
-void ServiceWorkerTaskProvider::OnDestruct(
-    content::ServiceWorkerContext* context) {
-  scoped_context_observer_.Remove(context);
-}
-
 void ServiceWorkerTaskProvider::StartUpdating() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED,
-                 content::NotificationService::AllBrowserContextsAndSources());
 
   ProfileManager* profile_manager = g_browser_process->profile_manager();
   if (profile_manager) {
+    scoped_profile_manager_observer_.Add(profile_manager);
+
     auto loaded_profiles = profile_manager->GetLoadedProfiles();
     for (auto* profile : loaded_profiles) {
-      CreateTasksForProfile(profile);
+      OnProfileAdded(profile);
 
       // If the incognito window is open, we have to check its profile and
       // create the tasks if there are any.
       if (profile->HasOffTheRecordProfile())
-        CreateTasksForProfile(profile->GetOffTheRecordProfile());
+        OnProfileAdded(profile->GetOffTheRecordProfile());
     }
   }
 }
@@ -87,8 +91,9 @@
 void ServiceWorkerTaskProvider::StopUpdating() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  // Stop listening to NOTIFICATION_PROFILE_CREATED.
-  registrar_.RemoveAll();
+  // Stop observing profile creation and destruction.
+  scoped_profile_manager_observer_.RemoveAll();
+  observed_profiles_.RemoveAll();
 
   // Stop observing contexts.
   scoped_context_observer_.RemoveAll();
@@ -144,11 +149,4 @@
   service_worker_task_map_.erase(it);
 }
 
-void ServiceWorkerTaskProvider::OnProfileCreated(Profile* profile) {
-  content::ServiceWorkerContext* context =
-      content::BrowserContext::GetDefaultStoragePartition(profile)
-          ->GetServiceWorkerContext();
-  scoped_context_observer_.Add(context);
-}
-
 }  // namespace task_manager
diff --git a/chrome/browser/task_manager/providers/service_worker_task_provider.h b/chrome/browser/task_manager/providers/service_worker_task_provider.h
index 05ac7496..62dd6c85a 100644
--- a/chrome/browser/task_manager/providers/service_worker_task_provider.h
+++ b/chrome/browser/task_manager/providers/service_worker_task_provider.h
@@ -10,10 +10,12 @@
 #include <utility>
 
 #include "base/scoped_observer.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/profiles/profile_manager_observer.h"
+#include "chrome/browser/profiles/profile_observer.h"
 #include "chrome/browser/task_manager/providers/service_worker_task.h"
 #include "chrome/browser/task_manager/providers/task_provider.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
 #include "content/public/browser/service_worker_context.h"
 #include "content/public/browser/service_worker_context_observer.h"
 
@@ -24,7 +26,8 @@
 // ServiceWorkerContext to listen to the running status changes of the service
 // workers for the creation and destruction of the tasks.
 class ServiceWorkerTaskProvider : public TaskProvider,
-                                  public content::NotificationObserver,
+                                  public ProfileManagerObserver,
+                                  public ProfileObserver,
                                   public content::ServiceWorkerContextObserver {
  public:
   ServiceWorkerTaskProvider();
@@ -33,10 +36,12 @@
   // task_manager::TaskProvider:
   Task* GetTaskOfUrlRequest(int child_id, int route_id) override;
 
-  // content::NotificationObserver:
-  void Observe(int type,
-               const content::NotificationSource& source,
-               const content::NotificationDetails& details) override;
+  // ProfileManagerObserver:
+  void OnProfileAdded(Profile* profile) override;
+
+  // ProfileObserver:
+  void OnOffTheRecordProfileCreated(Profile* off_the_record) override;
+  void OnProfileWillBeDestroyed(Profile* profile) override;
 
   // content::ServiceWorkerContextObserver:
   void OnVersionStartedRunning(
@@ -45,7 +50,6 @@
       const content::ServiceWorkerRunningInfo& running_info) override;
   void OnVersionStoppedRunning(content::ServiceWorkerContext* context,
                                int64_t version_id) override;
-  void OnDestruct(content::ServiceWorkerContext* context) override;
 
  private:
   // task_manager::TaskProvider:
@@ -66,8 +70,10 @@
   // observer of its deletion.
   void DeleteTask(content::ServiceWorkerContext* context, int version_id);
 
-  // Called after a profile has been created.
-  void OnProfileCreated(Profile* profile);
+  ScopedObserver<ProfileManager, ProfileManagerObserver>
+      scoped_profile_manager_observer_{this};
+
+  ScopedObserver<Profile, ProfileObserver> observed_profiles_{this};
 
   using ServiceWorkerTaskKey =
       std::pair<content::ServiceWorkerContext*, int64_t /*version_id*/>;
@@ -75,8 +81,6 @@
       std::map<ServiceWorkerTaskKey, std::unique_ptr<ServiceWorkerTask>>;
   ServiceWorkerTaskMap service_worker_task_map_;
 
-  content::NotificationRegistrar registrar_;
-
   ScopedObserver<content::ServiceWorkerContext,
                  content::ServiceWorkerContextObserver>
       scoped_context_observer_{this};
diff --git a/chrome/browser/touch_to_fill/android/internal/BUILD.gn b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
index b1650ad5..44201311 100644
--- a/chrome/browser/touch_to_fill/android/internal/BUILD.gn
+++ b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
@@ -13,6 +13,7 @@
     "//base:jni_java",
     "//chrome/android:chrome_java",
     "//chrome/android/public/profiles:java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/touch_to_fill/android:public_java",
     "//chrome/browser/util:java",
     "//components/url_formatter/android:url_formatter_java",
diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn
new file mode 100644
index 0000000..8157eb7
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/BUILD.gn
@@ -0,0 +1,19 @@
+# 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("//build/config/android/rules.gni")
+import("//chrome/android/features/android_library_factory_tmpl.gni")
+
+android_library("java") {
+  sources = [
+    "java/src/org/chromium/chrome/browser/ui/native_page/BasicNativePage.java",
+    "java/src/org/chromium/chrome/browser/ui/native_page/FrozenNativePage.java",
+    "java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java",
+    "java/src/org/chromium/chrome/browser/ui/native_page/NativePageHost.java",
+  ]
+  deps = [
+    "//base:base_java",
+    "//components/browser_ui/styles/android:java",
+    "//content/public/android:content_java",
+  ]
+}
diff --git a/chrome/browser/ui/android/native_page/DEPS b/chrome/browser/ui/android/native_page/DEPS
new file mode 100644
index 0000000..2d0aef2
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/DEPS
@@ -0,0 +1,6 @@
+noparent = True
+include_rules = [
+  "+base/android",
+  "+components/browser_ui/styles/android",
+  "+content/public/android",
+]
diff --git a/chrome/browser/ui/android/native_page/OWNERS b/chrome/browser/ui/android/native_page/OWNERS
new file mode 100644
index 0000000..ebf4d1e9
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/OWNERS
@@ -0,0 +1,4 @@
+twellington@chromium.org
+mdjones@chromium.org
+
+# COMPONENT: UI>Browser>Mobile
diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/BasicNativePage.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/BasicNativePage.java
new file mode 100644
index 0000000..c82f6e5
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/BasicNativePage.java
@@ -0,0 +1,110 @@
+// Copyright 2016 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.ui.native_page;
+
+import android.graphics.Rect;
+import android.view.View;
+import android.widget.FrameLayout.LayoutParams;
+
+import org.chromium.base.Callback;
+import org.chromium.base.supplier.DestroyableObservableSupplier;
+import org.chromium.components.browser_ui.styles.ChromeColors;
+import org.chromium.content_public.browser.LoadUrlParams;
+
+/**
+ * A basic implementation of a white {@link NativePage} that docks below the toolbar. This class
+ * handles default behavior for background color, URL updates and margins.
+ *
+ * Sub-classes must call {@link #initWithView(View)} to finish setup.
+ */
+public abstract class BasicNativePage implements NativePage {
+    private final NativePageHost mHost;
+    private final int mBackgroundColor;
+    private DestroyableObservableSupplier<Rect> mMarginSupplier;
+    private Callback<Rect> mMarginObserver;
+    private View mView;
+    private String mUrl;
+
+    protected BasicNativePage(NativePageHost host) {
+        mHost = host;
+        mBackgroundColor =
+                ChromeColors.getPrimaryBackgroundColor(host.getContext().getResources(), false);
+    }
+
+    /**
+     * Sets the View contained in this native page and finishes BasicNativePage initialization.
+     */
+    protected void initWithView(View view) {
+        assert mView == null : "initWithView() should only be called once";
+        mView = view;
+
+        mMarginObserver = result -> updateMargins(result);
+        mMarginSupplier = mHost.createDefaultMarginSupplier();
+        mMarginSupplier.addObserver(mMarginObserver);
+
+        // Update margins immediately if available rather than waiting for a posted notification.
+        // Waiting for a posted notification could allow a layout pass to occur before the margins
+        // are set.
+        if (mMarginSupplier.get() != null) {
+            updateMargins(mMarginSupplier.get());
+        }
+    }
+
+    @Override
+    public final View getView() {
+        assert mView != null : "Need to call initWithView()";
+
+        return mView;
+    }
+
+    @Override
+    public String getUrl() {
+        return mUrl;
+    }
+
+    @Override
+    public int getBackgroundColor() {
+        return mBackgroundColor;
+    }
+
+    @Override
+    public boolean needsToolbarShadow() {
+        return true;
+    }
+
+    @Override
+    public void updateForUrl(String url) {
+        mUrl = url;
+    }
+
+    @Override
+    public void destroy() {
+        if (mMarginSupplier != null) {
+            mMarginSupplier.removeObserver(mMarginObserver);
+            mMarginSupplier.destroy();
+        }
+    }
+
+    /**
+     * Tells the native page framework that the url should be changed.
+     * @param url The URL of the page.
+     * @param replaceLastUrl Whether the last navigation entry should be replaced with the new URL.
+     */
+    public void onStateChange(String url, boolean replaceLastUrl) {
+        if (url.equals(mUrl)) return;
+        LoadUrlParams params = new LoadUrlParams(url);
+        params.setShouldReplaceCurrentEntry(replaceLastUrl);
+        mHost.loadUrl(params, /* incognito = */ false);
+    }
+    /**
+     * Updates the top margin depending on whether the browser controls are shown or hidden.
+     */
+    private void updateMargins(Rect margins) {
+        LayoutParams layoutParams =
+                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+        layoutParams.setMargins(margins.left, margins.top, margins.left, margins.bottom);
+        getView().setLayoutParams(layoutParams);
+    }
+}
diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/FrozenNativePage.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/FrozenNativePage.java
new file mode 100644
index 0000000..032c02f
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/FrozenNativePage.java
@@ -0,0 +1,79 @@
+// Copyright 2014 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.ui.native_page;
+
+import android.view.View;
+
+/**
+ * A empty stand-in for a native page. An inactive NativePage may be replaced with a
+ * FrozenNativePage to free up resources.
+ *
+ * Any method may be called on this object, except for getView(), which will trigger an assert and
+ * return null.
+ */
+public class FrozenNativePage implements NativePage {
+    private final String mUrl;
+    private final String mHost;
+    private final String mTitle;
+    private final int mBackgroundColor;
+
+    /**
+     * Creates a FrozenNativePage to replace the given NativePage and destroys the NativePage.
+     */
+    public static FrozenNativePage freeze(NativePage nativePage) {
+        FrozenNativePage fnp = new FrozenNativePage(nativePage);
+        nativePage.destroy();
+        return fnp;
+    }
+
+    private FrozenNativePage(NativePage nativePage) {
+        mHost = nativePage.getHost();
+        mUrl = nativePage.getUrl();
+        mTitle = nativePage.getTitle();
+        mBackgroundColor = nativePage.getBackgroundColor();
+    }
+
+    @Override
+    public View getView() {
+        assert false;
+        return null;
+    }
+
+    @Override
+    public String getTitle() {
+        return mTitle;
+    }
+
+    @Override
+    public String getUrl() {
+        return mUrl;
+    }
+
+    @Override
+    public String getHost() {
+        return mHost;
+    }
+
+    @Override
+    public int getBackgroundColor() {
+        return mBackgroundColor;
+    }
+
+    @Override
+    public boolean needsToolbarShadow() {
+        return true;
+    }
+
+    @Override
+    public void updateForUrl(String url) {}
+
+    @Override
+    public boolean isFrozen() {
+        return true;
+    }
+
+    @Override
+    public void destroy() {}
+}
diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java
new file mode 100644
index 0000000..49add778
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java
@@ -0,0 +1,59 @@
+// Copyright 2013 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.ui.native_page;
+
+import android.view.View;
+
+/**
+ * An interface for pages that will be using Android views instead of html/rendered Web content.
+ */
+public interface NativePage {
+    /**
+     * @return The View to display the page. This is always non-null.
+     */
+    View getView();
+
+    /**
+     * @return The title of the page.
+     */
+    String getTitle();
+
+    /**
+     * @return The URL of the page.
+     */
+    String getUrl();
+
+    /**
+     * @return The hostname for this page, e.g. "newtab" or "bookmarks".
+     */
+    String getHost();
+
+    /**
+     * @return The background color of the page.
+     */
+    int getBackgroundColor();
+
+    /**
+     * @return True if the native page needs the toolbar shadow to be drawn.
+     */
+    boolean needsToolbarShadow();
+
+    /**
+     * Updates the native page based on the given url.
+     */
+    void updateForUrl(String url);
+
+    /**
+     * @return {@code true} if the native page is in inactive/frozen state.
+     */
+    default boolean isFrozen() {
+        return false;
+    }
+
+    /**
+     * Called after a page has been removed from the view hierarchy and will no longer be used.
+     */
+    void destroy();
+}
diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageHost.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageHost.java
new file mode 100644
index 0000000..ae7672f9
--- /dev/null
+++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageHost.java
@@ -0,0 +1,47 @@
+// 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.
+
+package org.chromium.chrome.browser.ui.native_page;
+
+import android.content.Context;
+import android.graphics.Rect;
+
+import org.chromium.base.supplier.DestroyableObservableSupplier;
+import org.chromium.content_public.browser.LoadUrlParams;
+
+/**
+ * This interface represents a view that is capable of hosting a NativePage.
+ */
+public interface NativePageHost {
+    /**
+     * @return A context to use for inflating views and obtaining resources.
+     */
+    Context getContext();
+
+    /**
+     * Load a non-native URL in an active tab. This should be used to either navigate away from
+     * the current native page or load external content in a content area (i.e. a tab or web
+     * contents).
+     * @param urlParams The params describing the URL to be loaded.
+     * @param incognito Whether the URL should be loaded in incognito mode.
+     */
+    void loadUrl(LoadUrlParams urlParams, boolean incognito);
+
+    /**
+     * If the host is a tab, get the ID of its parent.
+     * @return The ID of the parent tab or INVALID_TAB_ID.
+     */
+    int getParentId();
+
+    /** @return whether the hosted native page is currently visible. */
+    boolean isVisible();
+
+    /**
+     * Creates a default margin supplier. Once created, the NativePage is responsible for calling
+     * {@link DestroyableObservableSupplier#destroy()} to clean-up the supplier once it is no longer
+     * needed.
+     * @return A {@link DestroyableObservableSupplier} to use for setting margins.
+     */
+    DestroyableObservableSupplier<Rect> createDefaultMarginSupplier();
+}
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
index d28250c..4500ad4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Oortjie</translation>
 <translation id="666731172850799929">Maak oop in <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome se privaatheidkennisgewing</translation>
+<translation id="6671495933530132209">Kopieer prent</translation>
 <translation id="6676840375528380067">Vee jou Chrome-data op hierdie toestel uit?</translation>
 <translation id="6689172468748959065">Profielfoto's</translation>
 <translation id="6697492270171225480">Wys voorstelle vir soortgelyke bladsye wanneer 'n bladsy nie gevind kan word nie</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
index a014ca6..5bdc58d0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ትር</translation>
 <translation id="666731172850799929">በ<ph name="APP_NAME" /> ውስጥ ክፈት</translation>
 <translation id="666981079809192359">የChrome ግላዊነት ማስታወቂያ</translation>
+<translation id="6671495933530132209">ምስል ቅዳ</translation>
 <translation id="6676840375528380067">የChrome ውሂብዎ ከዚህ መሣሪያ ላይ ይጽዳ?</translation>
 <translation id="6689172468748959065">የመገለጫ ፎቶዎች</translation>
 <translation id="6697492270171225480">አንድ ገጽ ሊገኝ ካልቻለ የተመሳሳይ ገጾች የአስተያየት ጥቆማዎችን አሳይ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
index 2f1e859..f091469d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">علامة تبويب</translation>
 <translation id="666731172850799929">الفتح في <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">‏إشعار خصوصية Chrome</translation>
+<translation id="6671495933530132209">نسخ الصورة</translation>
 <translation id="6676840375528380067">‏هل تريد محو بيانات Chrome من هذا الجهاز؟</translation>
 <translation id="6689172468748959065">صور الملف الشخصي</translation>
 <translation id="6697492270171225480">عرض اقتراحات للصفحات المشابهة عند تعذّر العثور على صفحة</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
index 6ac837e..170cdde 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -755,6 +755,7 @@
 <translation id="6659594942844771486">Panel</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> tətbiqində açın</translation>
 <translation id="666981079809192359">Chrome Məxfilik Bildirişi</translation>
+<translation id="6671495933530132209">Şəkli kopyalayın</translation>
 <translation id="6676840375528380067">Chrome datası bu cihazdan silinsin?</translation>
 <translation id="6689172468748959065">Profil fotoları</translation>
 <translation id="6697492270171225480">Səhifə tapılmadığı zaman oxşar səhifələr üçün təklifləri göstərin</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
index a5d3475..07cfb493 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Раздел</translation>
 <translation id="666731172850799929">Отваряне в <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Съобщение за поверителност на Chrome</translation>
+<translation id="6671495933530132209">Копиране на изображението</translation>
 <translation id="6676840375528380067">Искате ли данните ви в Chrome да бъдат изчистени от устройството?</translation>
 <translation id="6689172468748959065">Снимки на потребителския профил</translation>
 <translation id="6697492270171225480">Показване на предложения за подобни страници, когато дадена страница не може да бъде намерена</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
index 257f696..41c10d6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -759,6 +759,7 @@
 <translation id="6659594942844771486">ট্যাব</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> এ খুলুন</translation>
 <translation id="666981079809192359">Chrome এর গোপনীয়তা বিজ্ঞপ্তি</translation>
+<translation id="6671495933530132209">ছবি কপি করুন</translation>
 <translation id="6676840375528380067">এই ডিভাইস থেকে Chrome ডেটা সরিয়ে ফেলবেন?</translation>
 <translation id="6689172468748959065">প্রোফাইল ফটো</translation>
 <translation id="6697492270171225480">কোনও একটি পৃষ্ঠা খুঁজে পাওয়া না গেলে একইরকম আরও পৃষ্ঠার সাজেশন দেখুন</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
index 54e612df..4fe2857 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Kartica</translation>
 <translation id="666731172850799929">Otvori u aplikaciji <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Obavještenje o privatnosti za Chrome</translation>
+<translation id="6671495933530132209">Kopiraj sliku</translation>
 <translation id="6676840375528380067">Obrisati Chrome podatke s ovog uređaja?</translation>
 <translation id="6689172468748959065">Fotografije profila</translation>
 <translation id="6697492270171225480">Prikaži prijedloge za slične stranice kada se stranica ne može pronaći</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
index 4b69089..8d9be5f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Pestanya</translation>
 <translation id="666731172850799929">Obre a <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Avís de privadesa de Chrome</translation>
+<translation id="6671495933530132209">Copia la imatge</translation>
 <translation id="6676840375528380067">Vols esborrar les dades de Chrome del dispositiu?</translation>
 <translation id="6689172468748959065">Fotos de perfil</translation>
 <translation id="6697492270171225480">Mostra suggeriments de pàgines similars quan no se'n trobi una</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
index 37c1cb6..d52c37dc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -668,7 +668,7 @@
 <translation id="605721222689873409">RR</translation>
 <translation id="6064125863973209585">Dokončená stahování</translation>
 <translation id="6075798973483050474">Upravit domovskou stránku</translation>
-<translation id="6092062101542170135">Chcete-li pokračovat, zapněte NFC v nstavení zařízení Android</translation>
+<translation id="6092062101542170135">Chcete-li pokračovat, zapněte NFC v nastavení zařízení Android</translation>
 <translation id="60923314841986378">Zbývá: <ph name="HOURS" /> h</translation>
 <translation id="6108923351542677676">Probíhá nastavování…</translation>
 <translation id="6111020039983847643">využitá data</translation>
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Karta</translation>
 <translation id="666731172850799929">Otevřít v aplikaci <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Ochrana soukromí v Chromu</translation>
+<translation id="6671495933530132209">Zkopírovat obrázek</translation>
 <translation id="6676840375528380067">Vymazat z tohoto zařízení data prohlížeče Chrome?</translation>
 <translation id="6689172468748959065">Profilové fotky</translation>
 <translation id="6697492270171225480">Zobrazovat návrhy podobných stránek, když stránku nelze najít</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
index fe412282..25c47f56 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Fane</translation>
 <translation id="666731172850799929">Åbn i <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Erklæring om privatliv for Google Chrome</translation>
+<translation id="6671495933530132209">Kopiér billede</translation>
 <translation id="6676840375528380067">Vil du rydde dine Chrome-data på denne enhed?</translation>
 <translation id="6689172468748959065">Profilbilleder</translation>
 <translation id="6697492270171225480">Se forslag til lignende sider, når en side ikke kan findes</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
index 95c4e50..bb9bbea0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">In <ph name="APP_NAME" /> öffnen</translation>
 <translation id="666981079809192359">Chrome-Datenschutzhinweise</translation>
+<translation id="6671495933530132209">Bild kopieren</translation>
 <translation id="6676840375528380067">Ihre Chrome-Daten von diesem Gerät löschen?</translation>
 <translation id="6689172468748959065">Profilfotos</translation>
 <translation id="6697492270171225480">Vorschläge für ähnliche Seiten anzeigen, wenn eine Seite nicht gefunden werden kann</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
index 6f5fb88..bc091476 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Καρτέλα</translation>
 <translation id="666731172850799929">Άνοιγμα σε <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Σημείωση Απορρήτου του Chrome</translation>
+<translation id="6671495933530132209">Αντιγραφή εικόνας</translation>
 <translation id="6676840375528380067">Να διαγραφούν τα δεδομένα Chrome από τη συσκευή;</translation>
 <translation id="6689172468748959065">Φωτογραφίες προφίλ</translation>
 <translation id="6697492270171225480">Εμφάνιση προτάσεων για παρόμοιες σελίδες όταν δεν είναι δυνατή η εύρεση μιας σελίδας</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
index abb684a0..b80c3ef 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Open in <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome Privacy Notice</translation>
+<translation id="6671495933530132209">Copy image</translation>
 <translation id="6676840375528380067">Clear your Chrome data from this device?</translation>
 <translation id="6689172468748959065">Profile photos</translation>
 <translation id="6697492270171225480">Show suggestions for similar pages when a page can't be found</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
index 8c801752..0ae97f6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Pestaña</translation>
 <translation id="666731172850799929">Abrir en <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Aviso de privacidad de Chrome</translation>
+<translation id="6671495933530132209">Copiar imagen</translation>
 <translation id="6676840375528380067">¿Quieres borrar tus datos de Chrome de este dispositivo?</translation>
 <translation id="6689172468748959065">Fotos de perfil</translation>
 <translation id="6697492270171225480">Mostrar sugerencias para páginas similares cuando no se puede encontrar una específica</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
index af4b907..9ba72d1f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Pestaña</translation>
 <translation id="666731172850799929">Abrir en <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Aviso de privacidad de Chrome</translation>
+<translation id="6671495933530132209">Copiar imagen</translation>
 <translation id="6676840375528380067">¿Quieres borrar tus datos de Chrome en este dispositivo?</translation>
 <translation id="6689172468748959065">Fotos de perfil</translation>
 <translation id="6697492270171225480">Mostrar sugerencias de páginas similares cuando no se encuentre una página</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
index af08536..ce38cf26 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Vaheleht</translation>
 <translation id="666731172850799929">Ava rakenduses <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome'i privaatsusteatis</translation>
+<translation id="6671495933530132209">Kopeeri kujutis</translation>
 <translation id="6676840375528380067">Kas kustutada sellest seadmest Chrome'i andmed?</translation>
 <translation id="6689172468748959065">Profiilifotod</translation>
 <translation id="6697492270171225480">Kui lehte ei leita, kuvatakse sarnaste lehtede soovitusi</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
index 7ce2702..7427f5a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Fitxa</translation>
 <translation id="666731172850799929">Ireki <ph name="APP_NAME" /> aplikazioan</translation>
 <translation id="666981079809192359">Chrome Pribatutasun-oharra</translation>
+<translation id="6671495933530132209">Kopiatu irudia</translation>
 <translation id="6676840375528380067">Gailu honetan dituzun Chrome-ko datuak garbitu nahi dituzu?</translation>
 <translation id="6689172468748959065">Profileko argazkiak</translation>
 <translation id="6697492270171225480">Orri bat aurkitu ezin denean, iradoki antzeko orriak</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index 0ee31c9..c20b3aa6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">باز کردن در <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">‏اخطار حریم خصوصی Chrome</translation>
+<translation id="6671495933530132209">کپی تصویر</translation>
 <translation id="6676840375528380067">‏داده‌های Chrome شما از این دستگاه پاک شود؟</translation>
 <translation id="6689172468748959065">عکس‌های نمایه</translation>
 <translation id="6697492270171225480">نمایش پیشنهادهای صفحه‌های مشابه وقتی صفحه‌ای پیدا نمی‌شود</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
index 1b72645c..c9aeebf 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Välilehti</translation>
 <translation id="666731172850799929">Avaa sovelluksessa <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chromen tietosuojailmoitus</translation>
+<translation id="6671495933530132209">Kopioi kuva</translation>
 <translation id="6676840375528380067">Poistetaanko Chrome-data tältä laitteelta?</translation>
 <translation id="6689172468748959065">Profiilikuvat</translation>
 <translation id="6697492270171225480">Näytä ehdotuksia samankaltaisista sivuista, kun sivua ei löydy</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
index d675900..8079258 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Buksan sa <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Notification ng Privacy ng Chrome</translation>
+<translation id="6671495933530132209">Kopyahin ang larawan</translation>
 <translation id="6676840375528380067">I-clear ang iyong data sa Chrome sa device na ito?</translation>
 <translation id="6689172468748959065">Mga larawan sa profile</translation>
 <translation id="6697492270171225480">Magpakita ng mga mungkahi para sa mga katulad na page kapag hindi mahanap ang isang page</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
index fa64558..62d946f8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Onglet</translation>
 <translation id="666731172850799929">Ouvrir dans <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Avis de confidentialité Chrome</translation>
+<translation id="6671495933530132209">Copier l'image</translation>
 <translation id="6676840375528380067">Effacer vos données Chrome de cet appareil?</translation>
 <translation id="6689172468748959065">Photos de profils</translation>
 <translation id="6697492270171225480">Afficher des suggestions de pages similaires lorsqu'une page ne peut pas être trouvée</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
index 091a50d..2beb9ea 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Onglet</translation>
 <translation id="666731172850799929">Ouvrir dans <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Avis de confidentialité de Chrome</translation>
+<translation id="6671495933530132209">Copier l'image</translation>
 <translation id="6676840375528380067">Supprimer vos données Chrome sur cet appareil ?</translation>
 <translation id="6689172468748959065">Photos de profil</translation>
 <translation id="6697492270171225480">Afficher des suggestions de pages similaires lorsqu'une page est introuvable</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
index 8ef3a7f..e957727 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Pestana</translation>
 <translation id="666731172850799929">Abrir en <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Aviso de privacidade de Chrome</translation>
+<translation id="6671495933530132209">Copiar imaxe</translation>
 <translation id="6676840375528380067">Queres borrar os teus datos de Chrome deste dispositivo?</translation>
 <translation id="6689172468748959065">Fotos do perfil</translation>
 <translation id="6697492270171225480">Mostrar suxestións de páxinas similares cando non se atope unha páxina</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
index 64ea243..5883986 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">YY</translation>
 <translation id="6064125863973209585">પૂર્ણ થયેલા ડાઉનલોડ</translation>
 <translation id="6075798973483050474">હોમ પેજમાં ફેરફાર કરો</translation>
+<translation id="6092062101542170135">ચાલુ રાખવા માટે, Android સેટિંગમાં NFC ચાલુ કરો</translation>
 <translation id="60923314841986378"><ph name="HOURS" /> કલાક બાકી</translation>
 <translation id="6108923351542677676">સેટઅપની પ્રક્રિયા ચાલુ છે...</translation>
 <translation id="6111020039983847643">ડેટા વપરાશ</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">ટૅબ</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> માં ખોલો</translation>
 <translation id="666981079809192359">Chrome ગોપનીયતા સૂચના</translation>
+<translation id="6671495933530132209">છબી કૉપિ કરો</translation>
 <translation id="6676840375528380067">આ ડિવાઇસમાંથી તમારા Chrome ડેટાને સાફ કરીએ?</translation>
 <translation id="6689172468748959065">પ્રોફાઇલ ફોટો</translation>
 <translation id="6697492270171225480">જ્યારે કોઈ પેજ ન મળે ત્યારે તેના જેવા પેજ માટે સૂચનો બતાવો</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
index 582e299..b7d1baf 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -756,6 +756,7 @@
 <translation id="6659594942844771486">टैब</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> में खोलें</translation>
 <translation id="666981079809192359">Chrome निजता सूचना</translation>
+<translation id="6671495933530132209">चित्र की कॉपी बनाएं</translation>
 <translation id="6676840375528380067">इस डिवाइस से अपना Chrome डेटा हटाएं?</translation>
 <translation id="6689172468748959065">प्रोफ़ाइल फ़ोटो</translation>
 <translation id="6697492270171225480">जब कोई पेज मिल नहीं पा रहा हो तो मिलते-जुलते पेज के सुझाव दिखाएं</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
index 6c1464b1..f366ca4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Kartica</translation>
 <translation id="666731172850799929">Otvori u aplikaciji <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Obavijest o privatnosti za Chrome</translation>
+<translation id="6671495933530132209">Kopiraj sliku</translation>
 <translation id="6676840375528380067">Želite li izbrisati svoje podatke iz Chromea s ovog uređaja?</translation>
 <translation id="6689172468748959065">Fotografije profila</translation>
 <translation id="6697492270171225480">Prikaži prijedloge za slične stranice kada se stranica ne može pronaći</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
index 810b081..86536b7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Lap</translation>
 <translation id="666731172850799929">Megnyitás itt: <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome – Adatvédelmi közlemény</translation>
+<translation id="6671495933530132209">Kép másolása</translation>
 <translation id="6676840375528380067">Törli Chrome-adatait az eszközről?</translation>
 <translation id="6689172468748959065">Profilfotók</translation>
 <translation id="6697492270171225480">Hasonló oldalakra vonatkozó javaslatok megjelenítése, ha az oldal nem található</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
index 11f371d..f1110f7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Ներդիր</translation>
 <translation id="666731172850799929">Բացել <ph name="APP_NAME" /> հավելվածում</translation>
 <translation id="666981079809192359">Chrome-ի Գաղտնիության ծանուցում</translation>
+<translation id="6671495933530132209">Պատճենել պատկերը</translation>
 <translation id="6676840375528380067">Հեռացնե՞լ Chrome-ի տվյալները այս սարքից</translation>
 <translation id="6689172468748959065">Պրոֆիլի լուսանկարներ</translation>
 <translation id="6697492270171225480">Ցուցադրել նմանատիպ էջերի առաջարկներ, երբ որևէ էջ չհաջողվի գտնել</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
index 79347cde0..c01119f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Buka di <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Notifikasi Privasi Chrome</translation>
+<translation id="6671495933530132209">Salin gambar</translation>
 <translation id="6676840375528380067">Hapus data Chrome Anda dari perangkat ini?</translation>
 <translation id="6689172468748959065">Foto profil</translation>
 <translation id="6697492270171225480">Tampilkan saran untuk halaman yang serupa jika halaman tidak dapat ditemukan</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
index 4af9dd0..cb3a1f4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Flipi</translation>
 <translation id="666731172850799929">Opna í <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Persónuverndartilkynning Chrome</translation>
+<translation id="6671495933530132209">Afrita mynd</translation>
 <translation id="6676840375528380067">Viltu hreinsa Chrome gögnin úr þessu tæki?</translation>
 <translation id="6689172468748959065">Prófílmyndir</translation>
 <translation id="6697492270171225480">Birta tillögur að svipuðum síðum þegar síða finnst ekki</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
index 1cc0d53..182298a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">TAB</translation>
 <translation id="666731172850799929">Apri in <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Informativa sulla privacy di Chrome</translation>
+<translation id="6671495933530132209">Copia immagine</translation>
 <translation id="6676840375528380067">Eliminare i dati di Chrome dal dispositivo?</translation>
 <translation id="6689172468748959065">Foto del profilo</translation>
 <translation id="6697492270171225480">Mostra suggerimenti per pagine simili quando una pagina non viene trovata</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
index 2ed40c3..7ef935b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -301,6 +301,7 @@
 <translation id="3282568296779691940">‏כניסה ל-Chrome</translation>
 <translation id="3288003805934695103">לטעון מחדש את הדף</translation>
 <translation id="32895400574683172">יש הרשאה להצגת הודעות</translation>
+<translation id="3290926146403723641">‏כדי לבצע משימות באינטרנט באמצעות Google Assistant,‏ דפדפן Chrome שולח ל-Google את כתובת ה-URL, תוכן מהאתר ומידע אישי רלוונטי.</translation>
 <translation id="3295530008794733555">יותר מהירות. פחות נתונים.</translation>
 <translation id="3298243779924642547">‏מצב Lite</translation>
 <translation id="3303414029551471755">האם להוריד את התוכן?</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">פתח ב-<ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">‏הודעת הפרטיות של Chrome</translation>
+<translation id="6671495933530132209">העתק את התמונה</translation>
 <translation id="6676840375528380067">‏למחוק את נתוני Chrome שלך מהמכשיר הזה?</translation>
 <translation id="6689172468748959065">תמונות פרופיל</translation>
 <translation id="6697492270171225480">הצגת הצעות לדפים דומים אם דף מסוים לא נמצא</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
index d9feef9a..6400269 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" />で開く</translation>
 <translation id="666981079809192359">Chrome のプライバシーに関するお知らせ</translation>
+<translation id="6671495933530132209">画像をコピー</translation>
 <translation id="6676840375528380067">Chrome データをこのデバイスから削除しますか?</translation>
 <translation id="6689172468748959065">プロフィール写真</translation>
 <translation id="6697492270171225480">ページが見つからない場合に類似のページを候補として表示する</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
index d243998..b7f98e6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ჩანართი</translation>
 <translation id="666731172850799929">გახსნა <ph name="APP_NAME" />-ში</translation>
 <translation id="666981079809192359">Chrome-ის კონფიდენციალურობის ცნობა</translation>
+<translation id="6671495933530132209">გამოსახულების კოპირება</translation>
 <translation id="6676840375528380067">გასუფთავდეს თქვენი Chrome მონაცემები ამ მოწყობილობიდან?</translation>
 <translation id="6689172468748959065">პროფილის ფოტოები</translation>
 <translation id="6697492270171225480">მსგავსი გვერდების შემოთავაზებების ჩვენება, როცა გვერდი ვერ მოიძებნება</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
index f78d25ac..69fea74 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Қойынды</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> арқылы ашу</translation>
 <translation id="666981079809192359">Chrome құпиялылық ескертпесі</translation>
+<translation id="6671495933530132209">Кескінді көшіру</translation>
 <translation id="6676840375528380067">Chrome деректері осы құрылғыдан жойылсын ба?</translation>
 <translation id="6689172468748959065">Профиль фотосуреттері</translation>
 <translation id="6697492270171225480">Бет табылмағанда, ұқсас нұсқаларды ұсыну</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
index 38ed6bd..728578a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ផ្ទាំង</translation>
 <translation id="666731172850799929">បើកក្នុង <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">ការជូនដំណឹងឯកជនភាព Chrome</translation>
+<translation id="6671495933530132209">ចម្លងរូបភាព</translation>
 <translation id="6676840375528380067">សម្អាតទិន្នន័យ​ Chrome ​របស់អ្នកពី​ឧបករណ៍នេះមែនទេ?</translation>
 <translation id="6689172468748959065">រូបថត​កម្រង​ព័ត៌មាន</translation>
 <translation id="6697492270171225480">បង្ហាញ​ការណែនាំ​សម្រាប់​ទំព័រ​ស្រដៀង​គ្នា នៅ​ពេល​មិនអាច​រកឃើញទំព័រ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
index 3c9e996..8295ef16 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">YY</translation>
 <translation id="6064125863973209585">ಪೂರ್ಣಗೊಳಿಸಿದ ಡೌನ್‌ಲೋಡ್‌ಗಳು</translation>
 <translation id="6075798973483050474">ಹೋಮ್ ಎಡಿಟ್ ಮಾಡಿ</translation>
+<translation id="6092062101542170135">ಮುಂದುವರಿಸಲು, Android ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ NFC ಆನ್ ಮಾಡಿ</translation>
 <translation id="60923314841986378"><ph name="HOURS" /> ಗಂಟೆಗಳು ಉಳಿದಿವೆ</translation>
 <translation id="6108923351542677676">ಸೆಟಪ್ ಪ್ರಗತಿಯಲ್ಲಿದೆ...</translation>
 <translation id="6111020039983847643">Chrome ನಿಂದ ಬಳಕೆಯಾಗಿರುವ ಡೇಟಾ</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">ಟ್ಯಾಬ್</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> ರಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="666981079809192359">Chrome ಗೌಪ್ಯತಾ ಸೂಚನೆ</translation>
+<translation id="6671495933530132209">ಚಿತ್ರವನ್ನು ನಕಲಿಸಿ</translation>
 <translation id="6676840375528380067">ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ Chrome ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸುವುದೇ?</translation>
 <translation id="6689172468748959065">ಪ್ರೊಫೈಲ್ ಫೋಟೋಗಳು</translation>
 <translation id="6697492270171225480">ಯಾವುದೇ ಪುಟವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅಂತಹುದೇ ಪುಟಗಳ ಸಲಹೆಯನ್ನು ತೋರಿಸಿ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
index f81a5a5..3726577 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">탭</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" />에서 열기</translation>
 <translation id="666981079809192359">Chrome 개인정보처리방침</translation>
+<translation id="6671495933530132209">이미지 복사</translation>
 <translation id="6676840375528380067">기기에서 Chrome 데이터를 삭제하시겠습니까?</translation>
 <translation id="6689172468748959065">프로필 사진</translation>
 <translation id="6697492270171225480">페이지를 찾을 수 없을 때 비슷한 페이지 제안 표시</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
index ffd73c8..41d68385 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">ЖЖ</translation>
 <translation id="6064125863973209585">Жүктөлүп алынгандар</translation>
 <translation id="6075798973483050474">Башкы бетти түзөтүү</translation>
+<translation id="6092062101542170135">Улантуу үчүн Android жөндөөлөрүнөн NFC'ни күйгүзүңүз</translation>
 <translation id="60923314841986378"><ph name="HOURS" /> саат калды</translation>
 <translation id="6108923351542677676">Орнотулуп жатат…</translation>
 <translation id="6111020039983847643">колдонулган дайындар</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">Өтмөк</translation>
 <translation id="666731172850799929">Төмөнкүдө ачуу <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome Купуялуулук эскертмеси</translation>
+<translation id="6671495933530132209">Сүрөттү көчүрүү</translation>
 <translation id="6676840375528380067">Chrome'догу дайын-даректериңиз бул түзмөктөн өчүрүлсүнбү?</translation>
 <translation id="6689172468748959065">Профилдин сүрөттөрү</translation>
 <translation id="6697492270171225480">Барак табылбай жатканда окшош барактар сунушталсын</translation>
@@ -1009,7 +1011,7 @@
 <translation id="8569404424186215731"><ph name="DATE" /> бери</translation>
 <translation id="8571213806525832805">Акыркы 4 апта</translation>
 <translation id="857943718398505171">Уруксат берилген (сунушталат)</translation>
-<translation id="8583805026567836021">Каттоо эсебинин дайындары тазаланууда</translation>
+<translation id="8583805026567836021">Аккаунттун дайындары тазаланууда</translation>
 <translation id="860043288473659153">Карта ээсинин аты</translation>
 <translation id="8616006591992756292">Google аккаунтуңуздун серептөө таржымалынын башка түрлөрү <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> дарегинде болушу мүмкүн.</translation>
 <translation id="8617240290563765734">Жүктөлүп алынган мазмунда белгиленип сунушталган URL ачылсынбы?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
index a867656..63a5a6c8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ແຖບ</translation>
 <translation id="666731172850799929">ເປີດ​ຢູ່​ໃນ <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">ແຈ້ງ​ການ​ຄວາມ​ເປັນ​ສ່ວນ​ຕົວ​ຂອງ Chrome</translation>
+<translation id="6671495933530132209">ກັອບປີ້ຮູບ</translation>
 <translation id="6676840375528380067">ລຶບລ້າງຂໍ້ມູນ Chrome ຂອງທ່ານຈາກອຸປະກອນນີ້?</translation>
 <translation id="6689172468748959065">ຮູບໂປຣໄຟລ໌</translation>
 <translation id="6697492270171225480">ສະແດງການແນະນຳສຳລັບໜ້າຄ້າຍຄືກັນເມື່ອຊອກບໍ່ເຫັນໜ້າໃດໜຶ່ງ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
index dd9d5c7..cbf771b0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Skirtukas</translation>
 <translation id="666731172850799929">Atidaryti naudojant „<ph name="APP_NAME" />“</translation>
 <translation id="666981079809192359">„Chrome“ privatumo pranešimas</translation>
+<translation id="6671495933530132209">Kopijuoti vaizdą</translation>
 <translation id="6676840375528380067">Išvalyti jūsų „Chrome“ duomenis iš šio įrenginio?</translation>
 <translation id="6689172468748959065">Profilio nuotraukos</translation>
 <translation id="6697492270171225480">Rodyti panašių puslapių pasiūlymus, kai nepavyksta rasti puslapio</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
index 5910ce4..4130203 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Cilne</translation>
 <translation id="666731172850799929">Atvērt lietotnē <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome konfidencialitātes paziņojums</translation>
+<translation id="6671495933530132209">Kopēt attēlu</translation>
 <translation id="6676840375528380067">Vai dzēst jūsu Chrome datus no šīs ierīces?</translation>
 <translation id="6689172468748959065">Profila fotoattēli</translation>
 <translation id="6697492270171225480">Ja lapu neizdotas atrast, rāda ieteikumus par līdzīgām lapām</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
index ba24fe8..91dec8e7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Картичка</translation>
 <translation id="666731172850799929">Отвори во <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Известување за приватност на Chrome</translation>
+<translation id="6671495933530132209">Копирај слика</translation>
 <translation id="6676840375528380067">Да се избришат податоците на Chrome од уредов?</translation>
 <translation id="6689172468748959065">Фотографии на профилот</translation>
 <translation id="6697492270171225480">Прикажувај предлози за слични страници кога страницата не може да се најде</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
index 42b5224..6b9b3052 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ടാബ്</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" />-ൽ തുറക്കുക</translation>
 <translation id="666981079809192359">Chrome സ്വകാര്യതാ അറിയിപ്പ്</translation>
+<translation id="6671495933530132209">ചിത്രം പകർത്തുക</translation>
 <translation id="6676840375528380067">ഉപകരണത്തില്‍ നിന്ന് Chrome ഡാറ്റ മായ്ക്കണോ?</translation>
 <translation id="6689172468748959065">പ്രൊഫൈൽ ഫോട്ടോകൾ</translation>
 <translation id="6697492270171225480">ഒരു പേജ് കണ്ടെത്താനാകുന്നില്ലെങ്കിൽ, സമാന പേജുകൾക്കായുള്ള നിർദ്ദേശങ്ങൾ കാണിക്കുക</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
index b8904c89..7dc95435 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -756,6 +756,7 @@
 <translation id="6659594942844771486">Цонх</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> дотор нээ</translation>
 <translation id="666981079809192359">Chrome-н нууцлалын мэдэгдэл</translation>
+<translation id="6671495933530132209">Зургийг хуулах</translation>
 <translation id="6676840375528380067">Энэ төхөөрөмжөөс Chrome-н өгөгдлөө устгах уу?</translation>
 <translation id="6689172468748959065">Профайл зураг</translation>
 <translation id="6697492270171225480">Хуудас олдоогүй үед төстэй хуудсын зөвлөмжийг харуулах</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
index 9609fe5b..3386dfc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">YY</translation>
 <translation id="6064125863973209585">डाउनलोड पूर्ण झाले</translation>
 <translation id="6075798973483050474">होम पेज संपादित करा</translation>
+<translation id="6092062101542170135">पुढे सुरू ठेवण्यासाठी, Android सेटिंग्जमध्ये NFC सुरू करा</translation>
 <translation id="60923314841986378"><ph name="HOURS" /> तास शिल्लक</translation>
 <translation id="6108923351542677676">सेटअप प्रगती पथावर आहे...</translation>
 <translation id="6111020039983847643">डेटा वापरला</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">टॅब</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> मध्ये उघडा</translation>
 <translation id="666981079809192359">Chrome गोपनीयता सूचना</translation>
+<translation id="6671495933530132209">इमेज कॉपी करा</translation>
 <translation id="6676840375528380067">या डिव्हाइसवरून तुमचा Chrom डेटा साफ करायचा?</translation>
 <translation id="6689172468748959065">प्रोफाइल फोटो</translation>
 <translation id="6697492270171225480">जेव्हा एखादे पेज सापडत नाही तेव्हा त्यासारख्या पेजच्या सूचना दाखवा</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
index d0f98d2..31f39c41 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Buka dalam <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Notis Privasi Chrome</translation>
+<translation id="6671495933530132209">Salin imej</translation>
 <translation id="6676840375528380067">Kosongkan data Chrome anda daripada peranti ini?</translation>
 <translation id="6689172468748959065">Foto profil</translation>
 <translation id="6697492270171225480">Tunjukkan cadangan untuk halaman yang serupa apabila halaman tidak ditemui</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
index f2b5478..1bba3eb 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -756,6 +756,7 @@
 <translation id="6659594942844771486">တဲဘ်</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> တွင်ဖွင့်မည်</translation>
 <translation id="666981079809192359">Chrome ကိုယ်ပိုင်လွတ်လပ်ခွင့် သတိပေးချက်</translation>
+<translation id="6671495933530132209">ပုံကို ကူးယူရန်</translation>
 <translation id="6676840375528380067">ဤစက်မှ သင်၏ Chrome ဒေတာများကို ဖျက်လိုပါသလား။</translation>
 <translation id="6689172468748959065">ပရိုဖိုင် ဓာတ်ပုံများ</translation>
 <translation id="6697492270171225480">စာမျက်နှာ ရှာမတွေ့သည့်အခါ အလားတူစာမျက်နှာများအတွက် အကြံပြုချက်များ ပြရန်</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
index c6bc6d8a..2962289 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -756,6 +756,7 @@
 <translation id="6659594942844771486">ट्याब</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> मा खोल्नुहोस्</translation>
 <translation id="666981079809192359">Chrome गोपनीयता सूचना</translation>
+<translation id="6671495933530132209">छविको प्रतिलिपि गर्नुहोस्</translation>
 <translation id="6676840375528380067">यस यन्त्रबाट तपाईंको Chrome को डेटा हटाउने हो?</translation>
 <translation id="6689172468748959065">प्रोफाइल तस्बिरहरू</translation>
 <translation id="6697492270171225480">कुनै पृष्ठ फेला पार्न नसकिएको खण्डमा मिल्दाजुल्दा पृष्ठसम्बन्धी सुझावहरू देखाउनुहोस्</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
index 37d6180f..92be819 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tabblad</translation>
 <translation id="666731172850799929">Openen in <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Privacybeleid van Chrome</translation>
+<translation id="6671495933530132209">Afbeelding kopiëren</translation>
 <translation id="6676840375528380067">Je Chrome-gegevens van dit apparaat wissen?</translation>
 <translation id="6689172468748959065">Profielfoto's</translation>
 <translation id="6697492270171225480">Suggesties voor vergelijkbare pagina's weergeven wanneer een pagina niet wordt gevonden</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
index 451f783c..671b7c03 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -301,6 +301,7 @@
 <translation id="3282568296779691940">Logg på Chrome</translation>
 <translation id="3288003805934695103">Last inn siden på nytt</translation>
 <translation id="32895400574683172">Varsler er tillatt</translation>
+<translation id="3290926146403723641">For å utføre oppgaver på nettet via Google-assistenten sender Chrome det aktuelle nettstedets nettadresse og innhold samt relevante personopplysninger til Google.</translation>
 <translation id="3295530008794733555">Surf raskere. Bruk mindre data.</translation>
 <translation id="3298243779924642547">Forenklet</translation>
 <translation id="3303414029551471755">Vil du gå videre med å laste ned innholdet?</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Åpne i <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Merknad om personvern for Chrome</translation>
+<translation id="6671495933530132209">Kopiér bildet</translation>
 <translation id="6676840375528380067">Vil du fjerne Chrome-dataene dine fra denne enheten?</translation>
 <translation id="6689172468748959065">Profilbilder</translation>
 <translation id="6697492270171225480">Viser forslag for lignende sider når en side ikke kan finnes</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
index 9f73efc2..d7c4e137 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">YY</translation>
 <translation id="6064125863973209585">ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇଥିବା ଡାଉନ୍‌ଲୋଡ୍</translation>
 <translation id="6075798973483050474">ମୂଳ ପୃଷ୍ଠା ଏଡିଟ୍ କରନ୍ତୁ</translation>
+<translation id="6092062101542170135">ଜାରି ରଖିବା ପାଇଁ, Android ସେଟିଂସରେ NFC ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="60923314841986378"><ph name="HOURS" /> ଘଣ୍ଟା ବାକି ଅଛି</translation>
 <translation id="6108923351542677676">ସେଟ୍ ଅପ୍ ପ୍ରକ୍ରିୟା ଚାଲିଛି…</translation>
 <translation id="6111020039983847643">ବ୍ୟବହୃତ ଡାଟା</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
index c98c660..9c4c74d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ਟੈਬ</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> ਵਿੱਚ ਖੋਲ੍ਹੋ</translation>
 <translation id="666981079809192359">Chrome ਪਰਦੇਦਾਰੀ ਨੋਟਿਸ</translation>
+<translation id="6671495933530132209">ਚਿੱਤਰ ਕਾਪੀ ਕਰੋ</translation>
 <translation id="6676840375528380067">ਕੀ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਤੁਹਾਡਾ Chrome ਡਾਟਾ ਕਲੀਅਰ ਕਰਨਾ ਹੈ?</translation>
 <translation id="6689172468748959065">ਪ੍ਰੋਫਾਈਲ ਫ਼ੋਟੋਆਂ</translation>
 <translation id="6697492270171225480">ਜਦੋਂ ਕੋਈ ਪੰਨਾ ਮਿਲ ਨਾ ਰਿਹਾ ਹੋਵੇ ਤਾਂ ਮਿਲਦੇ-ਜੁਲਦੇ ਪੰਨਿਆਂ ਦੇ ਸੁਝਾਅ ਦਿਖਾਓ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
index 530085a..f89433b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Otwórz w <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Informacje na temat ochrony prywatności w Chrome</translation>
+<translation id="6671495933530132209">Kopiuj grafikę</translation>
 <translation id="6676840375528380067">Usunąć dane Chrome z tego urządzenia?</translation>
 <translation id="6689172468748959065">Zdjęcia profilowe</translation>
 <translation id="6697492270171225480">Gdy nie można odnaleźć strony, pokazuj sugestie podobnych stron</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
index 31ebb38..5d404881 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -758,6 +758,7 @@
 <translation id="6659594942844771486">Guia</translation>
 <translation id="666731172850799929">Abrir no <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Aviso de Privacidade do Chrome</translation>
+<translation id="6671495933530132209">Copiar imagem</translation>
 <translation id="6676840375528380067">Limpar seus dados do Chrome deste dispositivo?</translation>
 <translation id="6689172468748959065">Fotos do perfil</translation>
 <translation id="6697492270171225480">Mostrar sugestões de páginas semelhantes quando uma página não for encontrada</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
index 74f7ac3..7d99801 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Abrir no <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Aviso de privacidade do Chrome</translation>
+<translation id="6671495933530132209">Copiar imagem</translation>
 <translation id="6676840375528380067">Pretende limpar os dados do Chrome deste dispositivo?</translation>
 <translation id="6689172468748959065">Fotos do perfil</translation>
 <translation id="6697492270171225480">Mostrar sugestões de páginas semelhantes se não for possível encontrar uma página</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
index aaef959b..d9a4858 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Filă</translation>
 <translation id="666731172850799929">Deschide în <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Notificare privind confidențialitatea Chrome</translation>
+<translation id="6671495933530132209">Copiați imaginea</translation>
 <translation id="6676840375528380067">Ștergi datele tale Chrome de pe acest dispozitiv?</translation>
 <translation id="6689172468748959065">Fotografii de profil</translation>
 <translation id="6697492270171225480">Afișează sugestii pentru pagini similare atunci când o pagină nu poate fi găsită</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
index ce3f099..432bca2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Вкладка</translation>
 <translation id="666731172850799929">Открыть в <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Примечание о конфиденциальности Chrome</translation>
+<translation id="6671495933530132209">Копировать изображение</translation>
 <translation id="6676840375528380067">Удалить данные Chrome с этого устройства?</translation>
 <translation id="6689172468748959065">Фото профиля</translation>
 <translation id="6697492270171225480">Предлагать варианты, если страница, которую вы пытаетесь открыть, не найдена</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
index b86b957..9176d45 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ටැබ</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> තුළ විවෘත කරන්න</translation>
 <translation id="666981079809192359">Chrome රහස්‍යතා දැනුම්දීම</translation>
+<translation id="6671495933530132209">රූපය පිටපත් කරන්න</translation>
 <translation id="6676840375528380067">මෙම උපාංගයෙන් ඔබේ Chrome දත්ත හිස් කරන්න ද?</translation>
 <translation id="6689172468748959065">පැතිකඩ ඡායාරූප</translation>
 <translation id="6697492270171225480">පිටුවක් සොයා ගැනීමට නොහැකි විට සමාන පිටු සඳහා යෝජනා පෙන්වන්න</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
index a68c8d1..1acefa5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Otvoriť v aplikácii <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Oznámenie o ochrane súkromia prehliadača Chrome</translation>
+<translation id="6671495933530132209">Kopírovať obrázok</translation>
 <translation id="6676840375528380067">Chcete vymazať údaje Chromu z tohto zariadenia?</translation>
 <translation id="6689172468748959065">Profilové fotky</translation>
 <translation id="6697492270171225480">Zobraziť návrhy podobných stránok, keď sa stránka nedá nájsť</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
index e4bcbf68..2bad310 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tabulator</translation>
 <translation id="666731172850799929">Odpri v: <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Obvestilo o zasebnosti za Chrome</translation>
+<translation id="6671495933530132209">Kopiraj sliko</translation>
 <translation id="6676840375528380067">Ali želite izbrisati podatke v Chromu iz te naprave?</translation>
 <translation id="6689172468748959065">Profilne fotografije</translation>
 <translation id="6697492270171225480">Prikaz predlogov za podobne strani, ko strani ni mogoče najti</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
index 6ec867f9..83bc963c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">VV</translation>
 <translation id="6064125863973209585">Shkarkimet e përfunduara</translation>
 <translation id="6075798973483050474">Redakto faqen bazë</translation>
+<translation id="6092062101542170135">Për të vazhduar, aktivizo NFC-në te cilësimet e Android</translation>
 <translation id="60923314841986378"><ph name="HOURS" /> orë të mbetura</translation>
 <translation id="6108923351542677676">Konfigurimi në vazhdim...</translation>
 <translation id="6111020039983847643">të dhënat e përdorura</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">Skeda</translation>
 <translation id="666731172850799929">Hape në <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Njoftimi i privatësisë së Chrome</translation>
+<translation id="6671495933530132209">Kopjo imazhin</translation>
 <translation id="6676840375528380067">Të pastrohen të dhënat e tua të Chrome nga kjo pajisje?</translation>
 <translation id="6689172468748959065">Fotografitë e profilit</translation>
 <translation id="6697492270171225480">Lejo sugjerimet për faqet e ngjashme kur nuk mund të gjendet një faqe</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
index 45111e7..acbc2c2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Отвори у <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chrome обавештење о приватности</translation>
+<translation id="6671495933530132209">Копирај слику</translation>
 <translation id="6676840375528380067">Желите ли да обришете Chrome податке са овог уређаја?</translation>
 <translation id="6689172468748959065">Слике профила</translation>
 <translation id="6697492270171225480">Приказуј предлоге за сличне странице када нека страница не може да се пронађе</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
index f515bf0..0c1bd8e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Flik</translation>
 <translation id="666731172850799929">Öppna i <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Chromes sekretessmeddelande</translation>
+<translation id="6671495933530132209">Kopiera bild</translation>
 <translation id="6676840375528380067">Vill du rensa din data i Chrome från den här enheten?</translation>
 <translation id="6689172468748959065">Profilfoton</translation>
 <translation id="6697492270171225480">Visa förslag på liknande sidor om en sida inte hittas</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
index cf3359bd..77f594bc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Kichupo</translation>
 <translation id="666731172850799929">Fungua katika <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Ilani ya Faragha ya Chrome</translation>
+<translation id="6671495933530132209">Nakili picha</translation>
 <translation id="6676840375528380067">Ungependa kufuta data yako yote ya Chrome kwenye kifaa hiki?</translation>
 <translation id="6689172468748959065">Picha za wasifu</translation>
 <translation id="6697492270171225480">Onyesha mapendekezo ya kurasa zinazofanana na ukurasa huu wakati haupatikani</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
index 61c03fe9..b3b99f8c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -756,6 +756,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> இல் திற</translation>
 <translation id="666981079809192359">Chrome தனியுரிமை அறிக்கை</translation>
+<translation id="6671495933530132209">படத்தை நகலெடு</translation>
 <translation id="6676840375528380067">இந்தச் சாதனத்திலிருந்து உங்கள் Chrome தரவை அழிக்கவா?</translation>
 <translation id="6689172468748959065">சுயவிவரப் படங்கள்</translation>
 <translation id="6697492270171225480">பக்கத்தைக் கண்டறிய முடியாத போது, அதே மாதிரியான பக்கங்களுக்கான பரிந்துரைகளைக் காட்டும்</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
index 8d941b5..e016b03 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ట్యాబ్</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" />లో తెరువు</translation>
 <translation id="666981079809192359">Chrome గోప్యతా నోటీసు</translation>
+<translation id="6671495933530132209">చిత్రాన్ని కాపీ చేయి</translation>
 <translation id="6676840375528380067">ఈ పరికరం నుండి మీ Chrome డేటాని తీసివేయాలా?</translation>
 <translation id="6689172468748959065">ప్రొఫైల్ ఫోటోలు</translation>
 <translation id="6697492270171225480">పేజీ కనుగొనబడనప్పుడు అటువంటి పేజీల కోసం సూచనలను చూపుతుంది</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
index dd73c9d..a12935f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">แท็บ</translation>
 <translation id="666731172850799929">เปิดใน <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">ประกาศเกี่ยวกับนโยบายความเป็นส่วนตัวของ Chrome</translation>
+<translation id="6671495933530132209">คัดลอกรูปภาพ</translation>
 <translation id="6676840375528380067">ล้างข้อมูล Chrome ของคุณออกจากอุปกรณ์นี้ไหม</translation>
 <translation id="6689172468748959065">รูปโปรไฟล์</translation>
 <translation id="6697492270171225480">แสดงคำแนะนำหน้าที่คล้ายกันเมื่อไม่พบหน้าเว็บ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
index 9f7cf60..61d35ed2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Sekme</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> uygulamasında aç</translation>
 <translation id="666981079809192359">Chrome Gizlilik Uyarısı</translation>
+<translation id="6671495933530132209">Resmi kopyala</translation>
 <translation id="6676840375528380067">Chrome verileriniz bu cihazdan temizlensin mi?</translation>
 <translation id="6689172468748959065">Profil fotoğrafları</translation>
 <translation id="6697492270171225480">Bir sayfa bulunamadığında benzer sayfalar için önerileri göster</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
index ff9ced9..386838e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Вкладка</translation>
 <translation id="666731172850799929">Відкрити в програмі <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Примітка про конфіденційність Chrome</translation>
+<translation id="6671495933530132209">Копіювати зображення</translation>
 <translation id="6676840375528380067">Видалити дані Chrome із цього пристрою?</translation>
 <translation id="6689172468748959065">Фотографії профілів</translation>
 <translation id="6697492270171225480">Показувати пропозиції схожих сторінок, коли не вдається знайти сторінку</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
index 1010810..7d13471 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">ٹیب</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> میں کھولیں</translation>
 <translation id="666981079809192359">‏Chrome کی رازداری کا نوٹس</translation>
+<translation id="6671495933530132209">تصویر کاپی کریں</translation>
 <translation id="6676840375528380067">‏اس آلہ سے آپ کا Chrome ڈیٹا صاف کریں؟</translation>
 <translation id="6689172468748959065">پروفائل کی تصاویر</translation>
 <translation id="6697492270171225480">صفحہ نہ مل پانے کی صورت میں ملتے جلتے صفحات کے لیے تجاویز دکھائیں</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
index c15a9e9..9084fd5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929"><ph name="APP_NAME" /> ilovasida ochish</translation>
 <translation id="666981079809192359">Chrome maxfiylik siyosati</translation>
+<translation id="6671495933530132209">Rasmni nusxalash</translation>
 <translation id="6676840375528380067">Chrome maʼlumotlaringiz bu qurilmadan tozalansinmi?</translation>
 <translation id="6689172468748959065">Profil rasmlari</translation>
 <translation id="6697492270171225480">Sahifa topilmaganda, unga o‘xshash sahifalar taklif qilinsin</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
index a7b78ba..41ae118d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -668,6 +668,7 @@
 <translation id="605721222689873409">YY</translation>
 <translation id="6064125863973209585">Đã hoàn tất quá trình tải xuống</translation>
 <translation id="6075798973483050474">Chỉnh sửa trang chủ</translation>
+<translation id="6092062101542170135">Để tiếp tục, hãy bật NFC trong phần cài đặt Android</translation>
 <translation id="60923314841986378">Còn <ph name="HOURS" /> giờ</translation>
 <translation id="6108923351542677676">Đang thiết lập…</translation>
 <translation id="6111020039983847643">dữ liệu đã dùng</translation>
@@ -756,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">Mở trong <ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Thông báo quyền riêng tư của Chrome</translation>
+<translation id="6671495933530132209">Sao chép ảnh</translation>
 <translation id="6676840375528380067">Xóa dữ liệu Chrome của bạn khỏi thiết bị này?</translation>
 <translation id="6689172468748959065">Ảnh tiểu sử</translation>
 <translation id="6697492270171225480">Hiển thị phần đề xuất các trang tương tự khi không tìm thấy một trang</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
index 4438c259..824552a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">在 <ph name="APP_NAME" />中打开</translation>
 <translation id="666981079809192359">Chrome 隐私权声明</translation>
+<translation id="6671495933530132209">复制图片</translation>
 <translation id="6676840375528380067">从这部设备中清除您的 Chrome 数据?</translation>
 <translation id="6689172468748959065">个人资料照片</translation>
 <translation id="6697492270171225480">找不到相应网页时,显示有关类似网页的建议</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
index ed0a809..e008171 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -668,7 +668,7 @@
 <translation id="605721222689873409">YY</translation>
 <translation id="6064125863973209585">下載完成</translation>
 <translation id="6075798973483050474">編輯首頁</translation>
-<translation id="6092062101542170135">開啟 Android 設定中的 NFC 即可繼續</translation>
+<translation id="6092062101542170135">在 Android 設定中開啟 NFC 即可繼續</translation>
 <translation id="60923314841986378">尚餘 <ph name="HOURS" /> 小時</translation>
 <translation id="6108923351542677676">設定中…</translation>
 <translation id="6111020039983847643">數據用量</translation>
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">分頁</translation>
 <translation id="666731172850799929">在「<ph name="APP_NAME" />」中開啟</translation>
 <translation id="666981079809192359">Chrome 私隱聲明</translation>
+<translation id="6671495933530132209">複製圖片</translation>
 <translation id="6676840375528380067">要清除此裝置上的 Chrome 資料嗎?</translation>
 <translation id="6689172468748959065">個人檔案相片</translation>
 <translation id="6697492270171225480">找不到網頁時,顯示類似的網頁建議</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
index 566a06d..236c175 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Tab</translation>
 <translation id="666731172850799929">在「<ph name="APP_NAME" />」中開啟</translation>
 <translation id="666981079809192359">Chrome 隱私權聲明</translation>
+<translation id="6671495933530132209">複製圖片</translation>
 <translation id="6676840375528380067">要清除你在這個裝置上的 Chrome 資料嗎?</translation>
 <translation id="6689172468748959065">個人資料相片</translation>
 <translation id="6697492270171225480">找不到網頁時顯示類似的網頁建議</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
index 6010893..8f7f656 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -757,6 +757,7 @@
 <translation id="6659594942844771486">Ithebhu</translation>
 <translation id="666731172850799929">Vula ku-<ph name="APP_NAME" /></translation>
 <translation id="666981079809192359">Isaziso sobumfihlo se-Chrome</translation>
+<translation id="6671495933530132209">Kopisha isithombe</translation>
 <translation id="6676840375528380067">Sula idatha yakho ye-Chrome kusuka kule divayisi?</translation>
 <translation id="6689172468748959065">Izithombe zephrofayela</translation>
 <translation id="6697492270171225480">Bonisa iziphakamiso zamakhasi afanayo uma ikhasi lingatholakali</translation>
diff --git a/chrome/browser/ui/app_list/search/search_result_ranker/app_launch_event_logger_unittest.cc b/chrome/browser/ui/app_list/search/search_result_ranker/app_launch_event_logger_unittest.cc
index 9d975dd8..42d9be6 100644
--- a/chrome/browser/ui/app_list/search/search_result_ranker/app_launch_event_logger_unittest.cc
+++ b/chrome/browser/ui/app_list/search/search_result_ranker/app_launch_event_logger_unittest.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/containers/flat_map.h"
+#include "base/no_destructor.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "chrome/browser/ui/app_list/search/chrome_search_result.h"
@@ -21,6 +22,7 @@
 #include "extensions/common/extension_builder.h"
 #include "services/metrics/public/mojom/ukm_interface.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
 #include "url/url_util.h"
 
 namespace app_list {
@@ -30,16 +32,24 @@
 const char kCalculatorArcApp[] = "adeiokjnhlgkiokkojlphcelpojmlkpj";
 const char kPhotosPWAApp[] = "ncmjhecbjeaamljdfahankockkkdmedg";
 
-const GURL kPhotosPWAUrl = GURL("http://photos.google.com/");
-const GURL kMapsArcUrl = GURL("app://play/gbpfhehadcpcndihhameeacbdmbjbhgi");
-const GURL kCalculatorArcUrl =
-    GURL("app://play/adeiokjnhlgkiokkojlphcelpojmlkpj");
-
 const char kMapsPackageName[] = "com.google.android.apps.maps";
 const char kCalculatorPackageName[] = "com.google.android.calculator";
 
 namespace {
 
+const GURL& PhotosPWAUrl() {
+  static base::NoDestructor<GURL> url("http://photos.google.com/");
+  return *url;
+}
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL MapsArcUrl() {
+  return GURL("app://play/gbpfhehadcpcndihhameeacbdmbjbhgi");
+}
+GURL CalculatorArcUrl() {
+  return GURL("app://play/adeiokjnhlgkiokkojlphcelpojmlkpj");
+}
+
 bool TestIsWebstoreExtension(base::StringPiece id) {
   return (id == kGmailChromeApp);
 }
@@ -61,7 +71,7 @@
 
  protected:
   const GURL& GetLaunchWebURL(const extensions::Extension* extension) override {
-    return kPhotosPWAUrl;
+    return PhotosPWAUrl();
   }
 };
 
@@ -95,7 +105,7 @@
   const auto entries = test_ukm_recorder_.GetEntriesByName("AppListAppLaunch");
   ASSERT_EQ(1ul, entries.size());
   const auto* entry = entries.back();
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, kPhotosPWAUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, PhotosPWAUrl());
   test_ukm_recorder_.ExpectEntryMetric(entry, "AllClicksLast24Hours", 1);
   test_ukm_recorder_.ExpectEntryMetric(entry, "AllClicksLastHour", 1);
   test_ukm_recorder_.ExpectEntryMetric(entry, "AppType", 3);
@@ -106,7 +116,7 @@
       test_ukm_recorder_.GetEntriesByName("AppListAppClickData");
   ASSERT_EQ(1ul, click_entries.size());
   const auto* photos_entry = click_entries.back();
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(photos_entry, kPhotosPWAUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(photos_entry, PhotosPWAUrl());
   test_ukm_recorder_.ExpectEntryMetric(photos_entry, "AppLaunchId",
                                        entry->source_id);
   test_ukm_recorder_.ExpectEntryMetric(photos_entry, "AppType", 3);
@@ -163,7 +173,7 @@
   const auto entries = test_ukm_recorder_.GetEntriesByName("AppListAppLaunch");
   ASSERT_EQ(1ul, entries.size());
   const auto* entry = entries.back();
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, kMapsArcUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, MapsArcUrl());
   test_ukm_recorder_.ExpectEntryMetric(entry, "AppType", 2);
   test_ukm_recorder_.ExpectEntryMetric(entry, "LaunchedFrom", 1);
 }
@@ -214,7 +224,7 @@
   const auto entries = test_ukm_recorder_.GetEntriesByName("AppListAppLaunch");
   ASSERT_EQ(6ul, entries.size());
   const auto* entry = entries.back();
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, kPhotosPWAUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, PhotosPWAUrl());
   test_ukm_recorder_.ExpectEntryMetric(entry, "AllClicksLast24Hours", 6);
   test_ukm_recorder_.ExpectEntryMetric(entry, "AllClicksLastHour", 6);
   test_ukm_recorder_.ExpectEntryMetric(entry, "AppType", 3);
@@ -237,63 +247,63 @@
                   .GetSourceForSourceId(click_entries.at(17)->source_id)
                   ->url()] = click_entries.at(17);
 
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entries_map[kPhotosPWAUrl],
-                                             kPhotosPWAUrl);
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entries_map[kMapsArcUrl],
-                                             kMapsArcUrl);
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entries_map[kCalculatorArcUrl],
-                                             kCalculatorArcUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entries_map[PhotosPWAUrl()],
+                                             PhotosPWAUrl());
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entries_map[MapsArcUrl()],
+                                             MapsArcUrl());
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entries_map[CalculatorArcUrl()],
+                                             CalculatorArcUrl());
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "AppLaunchId", entry->source_id);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl], "AppLaunchId",
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()], "AppLaunchId",
                                        entry->source_id);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "AppLaunchId", entry->source_id);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "ClicksLast24Hours", 2);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()],
                                        "ClicksLast24Hours", 1);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "ClicksLast24Hours", 2);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "ClicksLastHour", 2);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()],
                                        "ClicksLastHour", 1);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "ClicksLastHour", 2);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "MostRecentlyUsedIndex", 1);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()],
                                        "MostRecentlyUsedIndex", 3);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "MostRecentlyUsedIndex", 0);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "TimeSinceLastClick", 0);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "TotalClicks", 2);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl], "TotalClicks",
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()], "TotalClicks",
                                        1);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "TotalClicks", 2);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()],
                                        "LastLaunchedFrom", 2);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()],
                                        "LastLaunchedFrom", 1);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "LastLaunchedFrom", 1);
 
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kPhotosPWAUrl], "ClickRank",
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[PhotosPWAUrl()], "ClickRank",
                                        1);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kMapsArcUrl], "ClickRank",
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[MapsArcUrl()], "ClickRank",
                                        3);
-  test_ukm_recorder_.ExpectEntryMetric(entries_map[kCalculatorArcUrl],
+  test_ukm_recorder_.ExpectEntryMetric(entries_map[CalculatorArcUrl()],
                                        "ClickRank", 1);
 }
 
@@ -316,7 +326,7 @@
   const auto entries = test_ukm_recorder_.GetEntriesByName("AppListAppLaunch");
   ASSERT_EQ(1ul, entries.size());
   const auto* entry = entries.back();
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, kPhotosPWAUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, PhotosPWAUrl());
   test_ukm_recorder_.ExpectEntryMetric(entry, "PositionIndex", 3);
   test_ukm_recorder_.ExpectEntryMetric(entry, "LaunchedFrom", 2);
 }
@@ -340,7 +350,7 @@
   const auto entries = test_ukm_recorder_.GetEntriesByName("AppListAppLaunch");
   ASSERT_EQ(1ul, entries.size());
   const auto* entry = entries.back();
-  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, kPhotosPWAUrl);
+  test_ukm_recorder_.ExpectEntrySourceHasUrl(entry, PhotosPWAUrl());
   test_ukm_recorder_.ExpectEntryMetric(entry, "PositionIndex", 3);
   test_ukm_recorder_.ExpectEntryMetric(entry, "LaunchedFrom", 4);
 }
diff --git a/chrome/browser/ui/tabs/tab_strip_model.cc b/chrome/browser/ui/tabs/tab_strip_model.cc
index 358637de..e494c21 100644
--- a/chrome/browser/ui/tabs/tab_strip_model.cc
+++ b/chrome/browser/ui/tabs/tab_strip_model.cc
@@ -668,6 +668,24 @@
                          selected_count - selected_pinned_count);
 }
 
+void TabStripModel::MoveGroupTo(const tab_groups::TabGroupId& group,
+                                int to_index) {
+  ReentrancyCheck reentrancy_check(&reentrancy_guard_);
+
+  DCHECK_NE(to_index, kNoTab);
+
+  std::vector<int> tabs_in_group = group_model_->GetTabGroup(group)->ListTabs();
+
+  int from_index = tabs_in_group.front();
+  if (to_index < from_index)
+    from_index = tabs_in_group.back();
+
+  for (size_t i = 0; i < tabs_in_group.size(); ++i)
+    MoveWebContentsAtImpl(from_index, to_index, false);
+
+  MoveTabGroup(group);
+}
+
 WebContents* TabStripModel::GetActiveWebContents() const {
   return GetWebContentsAt(active_index());
 }
diff --git a/chrome/browser/ui/tabs/tab_strip_model.h b/chrome/browser/ui/tabs/tab_strip_model.h
index d3ab78e5..3a034aa 100644
--- a/chrome/browser/ui/tabs/tab_strip_model.h
+++ b/chrome/browser/ui/tabs/tab_strip_model.h
@@ -285,6 +285,10 @@
   // index + selected-pinned tab-count (3 + 1).
   void MoveSelectedTabsTo(int index);
 
+  // Moves all tabs in |group| to |to_index|. This has no checks to make sure
+  // the position is valid for a group to move to.
+  void MoveGroupTo(const tab_groups::TabGroupId& group, int to_index);
+
   // Returns the currently active WebContents, or NULL if there is none.
   content::WebContents* GetActiveWebContents() const;
 
diff --git a/chrome/browser/ui/toolbar/location_bar_model_unittest.cc b/chrome/browser/ui/toolbar/location_bar_model_unittest.cc
index 1ea617a..ebc2d449 100644
--- a/chrome/browser/ui/toolbar/location_bar_model_unittest.cc
+++ b/chrome/browser/ui/toolbar/location_bar_model_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/macros.h"
+#include "base/no_destructor.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
@@ -35,6 +36,8 @@
 
 namespace {
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
 GURL GetViewSourceURL(const char* path) {
   GURL::Replacements replace_path;
   replace_path.SetPathStr(path);
@@ -46,53 +49,58 @@
   const std::string expected_formatted_full_url;
   const std::string expected_elided_url_for_display =
       expected_formatted_full_url;
-} test_items[] = {
-    {
-        GetViewSourceURL("http://www.google.com"),
-        "view-source:www.google.com",
-        "view-source:www.google.com",
-    },
-    {
-        GURL(chrome::kChromeUINewTabURL),
-        "",
-    },
-    {
-        GetViewSourceURL(chrome::kChromeUINewTabURL),
-        "view-source:" +
-            content::GetWebUIURLString(chrome::kChromeUINewTabHost),
-    },
-    {
-        GURL("chrome-search://local-ntp/local-ntp.html"),
-        "",
-    },
-    {
-        GURL("view-source:chrome-search://local-ntp/local-ntp.html"),
-        "view-source:chrome-search://local-ntp/local-ntp.html",
-    },
-    {
-        GURL("chrome-extension://fooooooooooooooooooooooooooooooo/bar.html"),
-        "chrome-extension://fooooooooooooooooooooooooooooooo/bar.html",
-    },
-    {
-        GURL(url::kAboutBlankURL),
-        url::kAboutBlankURL,
-    },
-    {
-        GURL("http://searchurl/?q=tractor+supply"),
-        "searchurl/?q=tractor+supply",
-    },
-    {
-        GURL("http://www.google.com/search?q=tractor+supply"),
-        "www.google.com/search?q=tractor+supply",
-        "google.com/search?q=tractor+supply",
-    },
-    {
-        GURL("https://m.google.ca/search?q=tractor+supply"),
-        "https://m.google.ca/search?q=tractor+supply",
-        "m.google.ca/search?q=tractor+supply",
-    },
 };
 
+const std::vector<TestItem>& TestItems() {
+  static base::NoDestructor<std::vector<TestItem>> items{{
+      {
+          GetViewSourceURL("http://www.google.com"),
+          "view-source:www.google.com",
+          "view-source:www.google.com",
+      },
+      {
+          GURL(chrome::kChromeUINewTabURL),
+          "",
+      },
+      {
+          GetViewSourceURL(chrome::kChromeUINewTabURL),
+          "view-source:" +
+              content::GetWebUIURLString(chrome::kChromeUINewTabHost),
+      },
+      {
+          GURL("chrome-search://local-ntp/local-ntp.html"),
+          "",
+      },
+      {
+          GURL("view-source:chrome-search://local-ntp/local-ntp.html"),
+          "view-source:chrome-search://local-ntp/local-ntp.html",
+      },
+      {
+          GURL("chrome-extension://fooooooooooooooooooooooooooooooo/bar.html"),
+          "chrome-extension://fooooooooooooooooooooooooooooooo/bar.html",
+      },
+      {
+          GURL(url::kAboutBlankURL),
+          url::kAboutBlankURL,
+      },
+      {
+          GURL("http://searchurl/?q=tractor+supply"),
+          "searchurl/?q=tractor+supply",
+      },
+      {
+          GURL("http://www.google.com/search?q=tractor+supply"),
+          "www.google.com/search?q=tractor+supply",
+          "google.com/search?q=tractor+supply",
+      },
+      {
+          GURL("https://m.google.ca/search?q=tractor+supply"),
+          "https://m.google.ca/search?q=tractor+supply",
+          "m.google.ca/search?q=tractor+supply",
+      },
+  }};
+  return *items;
+}
+
 }  // namespace
 
 // LocationBarModelTest
@@ -218,7 +226,7 @@
 
   AddTab(browser(), GURL(url::kAboutBlankURL));
 
-  for (const TestItem& test_item : test_items) {
+  for (const TestItem& test_item : TestItems()) {
     NavigateAndCheckText(
         test_item.url,
         base::ASCIIToUTF16(test_item.expected_formatted_full_url),
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 0c67302b..3175183b 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,6 +15,7 @@
 #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"
@@ -92,8 +93,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) {
-    window->SetProperty(ash::kBackdropWindowMode,
-                        ash::BackdropWindowMode::kAutoSemiOpaque);
+    ash::WindowBackdrop::Get(window)->SetBackdropType(
+        ash::WindowBackdrop::BackdropType::kSemiOpaque);
   }
   observed_window_.Add(window);
 }
diff --git a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
index 2f266125..7e5fa5cf 100644
--- a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
+++ b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
@@ -21,8 +21,10 @@
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "build/build_config.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/view_ids.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
@@ -815,8 +817,9 @@
 #define MAYBE_DropValidUrlFromOutside DropValidUrlFromOutside
 #endif
 // Scenario: drag URL from outside the browser and drop to the right frame.
-// Mostly focuses on covering the navigation path (the dragover and/or drop DOM
-// events are already covered via the DropTextFromOutside test above).
+// Mostly focuses on covering 1) the navigation path, 2) focus behavior.  This
+// test explicitly does not cover the dragover and/or drop DOM events - they are
+// already covered via the DropTextFromOutside test above.
 IN_PROC_BROWSER_TEST_P(DragAndDropBrowserTest, MAYBE_DropValidUrlFromOutside) {
   std::string frame_site = use_cross_site_subframe() ? "b.com" : "a.com";
   ASSERT_TRUE(NavigateToTestPage("a.com"));
@@ -826,6 +829,11 @@
   content::NavigationController& controller = web_contents->GetController();
   int initial_history_count = controller.GetEntryCount();
 
+  // Focus the omnibox.
+  chrome::FocusLocationBar(browser());
+  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
+  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER));
+
   // Drag a normal URL from outside the browser into/over the right frame.
   GURL dragged_url = embedded_test_server()->GetURL("d.com", "/title2.html");
   ASSERT_TRUE(SimulateDragEnterToRightFrame(dragged_url));
@@ -839,6 +847,10 @@
   nav_observer.Wait();
   EXPECT_EQ(dragged_url, web_contents->GetMainFrame()->GetLastCommittedURL());
   EXPECT_EQ(initial_history_count + 1, controller.GetEntryCount());
+
+  // Verify that the focus moved from the omnibox to the tab contents.
+  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
+  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER));
 }
 
 #if defined(OS_WIN) || defined(OS_LINUX) || defined(THREAD_SANITIZER)
diff --git a/chrome/browser/ui/views/ssl_client_certificate_selector_mac.mm b/chrome/browser/ui/views/ssl_client_certificate_selector_mac.mm
index fb87183..cafd960 100644
--- a/chrome/browser/ui/views/ssl_client_certificate_selector_mac.mm
+++ b/chrome/browser/ui/views/ssl_client_certificate_selector_mac.mm
@@ -34,7 +34,6 @@
 #include "net/ssl/ssl_platform_key_mac.h"
 #include "ui/base/buildflags.h"
 #include "ui/base/l10n/l10n_util_mac.h"
-#include "ui/views/widget/widget_observer.h"
 
 @interface SFChooseIdentityPanel (SystemPrivate)
 // A system-private interface that dismisses a panel whose sheet was started by
@@ -44,69 +43,10 @@
 - (void)_dismissWithCode:(NSInteger)code;
 @end
 
-// This is the main class that runs the certificate selector panel. It's in
-// Objective-C mainly because the only way to get a result out of that panel is
-// a callback of a target/selector pair.
-@interface SSLClientCertificateSelectorMac : NSObject
-
-- (instancetype)
-initWithBrowserContext:(const content::BrowserContext*)browserContext
-       certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo
-              delegate:
-                  (std::unique_ptr<content::ClientCertificateDelegate>)delegate;
-- (void)createForWebContents:(content::WebContents*)webContents
-                 clientCerts:(net::ClientCertIdentityList)inputClientCerts;
-
-- (void)setOverlayWindow:(views::Widget*)overlayWindow;
-
-- (void)closeSelectorSheetWithCode:(NSModalResponse)response;
-
-@end
-
-// A bridge to the C++ world. It performs the two tasks of being a
-// SSLClientAuthObserver and bridging to the SSL authentication system, and
-// being a WidgetObserver for the overlay window so that if it is closed the
-// cert selector is shut down.
-class SSLClientAuthObserverCocoaBridge : public SSLClientAuthObserver,
-                                         public views::WidgetObserver {
- public:
-  SSLClientAuthObserverCocoaBridge(
-      const content::BrowserContext* browser_context,
-      net::SSLCertRequestInfo* cert_request_info,
-      std::unique_ptr<content::ClientCertificateDelegate> delegate,
-      SSLClientCertificateSelectorMac* controller)
-      : SSLClientAuthObserver(browser_context,
-                              cert_request_info,
-                              std::move(delegate)),
-        controller_(controller) {}
-
-  void SetOverlayWindow(views::Widget* overlay_window) {
-    overlay_window->AddObserver(this);
-  }
-
-  // SSLClientAuthObserver implementation:
-  void OnCertSelectedByNotification() override {
-    [controller_ closeSelectorSheetWithCode:NSModalResponseStop];
-  }
-
-  // WidgetObserver:
-  void OnWidgetClosing(views::Widget* widget) override {
-    // Note that the SFChooseIdentityPanel takes a reference to its delegate in
-    // its -beginSheetForWindow:... method (bad SFChooseIdentityPanel!) so break
-    // the retain cycle by explicitly canceling the dialog.
-    [controller_ closeSelectorSheetWithCode:NSModalResponseAbort];
-  }
-
-  void OnWidgetDestroying(views::Widget* widget) override {
-    widget->RemoveObserver(this);
-  }
-
- private:
-  SSLClientCertificateSelectorMac* controller_;  // weak, owns us
-};
-
 namespace {
 
+class SSLClientCertificateSelectorDelegate;
+
 // These Clear[Window]TableViewDataSources... functions help work around a bug
 // in macOS where SFChooseIdentityPanel leaks a window and some views, including
 // an NSTableView. Future events may make cause the table view to query its
@@ -138,153 +78,19 @@
 
 }  // namespace
 
-@implementation SSLClientCertificateSelectorMac {
-  // The list of SecIdentityRefs offered to the user.
-  base::scoped_nsobject<NSMutableArray> _sec_identities;
-
-  // The corresponding list of ClientCertIdentities.
-  net::ClientCertIdentityList _cert_identities;
-
-  // A C++ object to bridge SSLClientAuthObserver notifications to us.
-  std::unique_ptr<SSLClientAuthObserverCocoaBridge> _observer;
-
-  base::scoped_nsobject<SFChooseIdentityPanel> _panel;
-
-  // Invisible overlay window used to block interaction with the tab underneath.
-  views::Widget* _overlayWindow;
-}
+// This is the main class that runs the certificate selector panel. It's in
+// Objective-C mainly because the only way to get a result out of that panel is
+// a callback of a target/selector pair.
+@interface SSLClientCertificateSelectorMac : NSObject
 
 - (instancetype)
-initWithBrowserContext:(const content::BrowserContext*)browserContext
-       certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo
-              delegate:(std::unique_ptr<content::ClientCertificateDelegate>)
-                           delegate {
-  DCHECK(browserContext);
-  DCHECK(certRequestInfo);
-  if ((self = [super init])) {
-    _observer = std::make_unique<SSLClientAuthObserverCocoaBridge>(
-        browserContext, certRequestInfo, std::move(delegate), self);
-  }
-  return self;
-}
+    initWithClientCerts:(net::ClientCertIdentityList)clientCerts
+               delegate:(base::WeakPtr<SSLClientCertificateSelectorDelegate>)
+                            delegate;
 
-// The selector sheet ended. There are four possibilities for the return code.
-//
-// These two return codes are actually generated by the SFChooseIdentityPanel,
-// although for testing purposes the OkAndCancelableForTesting implementation
-// will also generate them to simulate the user clicking buttons.
-//
-// - NSModalResponseOK/Cancel: The user clicked the "OK" or "Cancel" button; the
-//   SSL auth system needs to be told of this choice.
-//
-// These two return codes are generated by the SSLClientAuthObserverCocoaBridge
-// to force the SFChooseIdentityPanel to be closed for various reasons.
-//
-// - NSModalResponseAbort: The user closed the owning tab; the SSL auth system
-//   needs to be told of this cancellation.
-// - NSModalResponseStop: The SSL auth system already has an answer; just tear
-//   down the dialog.
-//
-// Note that there is a disagreement between the docs and the SDK header file as
-// to the type of the return code. It has empirically been determined to be an
-// int, not an NSInteger. rdar://45344010
-- (void)sheetDidEnd:(NSWindow*)sheet
-         returnCode:(int)returnCode
-            context:(void*)context {
-  if (returnCode == NSModalResponseAbort) {
-    _observer->CancelCertificateSelection();
-  } else if (returnCode == NSModalResponseOK ||
-             returnCode == NSModalResponseCancel) {
-    net::ClientCertIdentity* cert = nullptr;
-    if (returnCode == NSModalResponseOK) {
-      NSUInteger index = [_sec_identities indexOfObject:(id)[_panel identity]];
-      if (index != NSNotFound)
-        cert = _cert_identities[index].get();
-    }
+- (void)showSheetForWindow:(NSWindow*)window;
 
-    if (cert) {
-      _observer->CertificateSelected(
-          cert->certificate(),
-          CreateSSLPrivateKeyForSecIdentity(cert->certificate(),
-                                            cert->sec_identity_ref())
-              .get());
-    } else {
-      _observer->CertificateSelected(nullptr, nullptr);
-    }
-  } else {
-    DCHECK_EQ(NSModalResponseStop, returnCode);
-    // Do nothing else; do not call back to the SSL auth system.
-  }
-
-  // Stop observing the SSL authentication system. In theory this isn't needed
-  // as the CertificateSelected() and CancelCertificateSelection() calls both
-  // implicitly call StopObserving() and the SSL auth system calls
-  // StopObserving() before making the OnCertSelectedByNotification() callback.
-  // However, StopObserving() is idempotent so call it out of a deep paranoia
-  // born of many a dangling pointer.
-  _observer->StopObserving();
-
-  // See comment at definition; this works around a bug.
-  ClearWindowTableViewDataSources(sheet);
-
-  // Do not release SFChooseIdentityPanel here. Its -_okClicked: method, after
-  // calling out to this method, keeps accessing its ivars, and if panel_ is the
-  // last reference keeping it alive, it will crash.
-  _panel.autorelease();
-
-  _overlayWindow->Close();  // Asynchronously releases |self|.
-}
-
-- (void)createForWebContents:(content::WebContents*)webContents
-                 clientCerts:(net::ClientCertIdentityList)inputClientCerts {
-  _cert_identities = std::move(inputClientCerts);
-
-  _sec_identities.reset([[NSMutableArray alloc] init]);
-  for (const auto& cert : _cert_identities) {
-    DCHECK(cert->sec_identity_ref());
-    [_sec_identities addObject:(id)cert->sec_identity_ref()];
-  }
-
-  // Get the message to display:
-  NSString* message = l10n_util::GetNSStringF(
-      IDS_CLIENT_CERT_DIALOG_TEXT,
-      base::ASCIIToUTF16(
-          _observer->cert_request_info()->host_and_port.ToString()));
-
-  // Create and set up a system choose-identity panel.
-  _panel.reset([[SFChooseIdentityPanel alloc] init]);
-  [_panel setInformativeText:message];
-  [_panel setDefaultButtonTitle:l10n_util::GetNSString(IDS_OK)];
-  [_panel setAlternateButtonTitle:l10n_util::GetNSString(IDS_CANCEL)];
-  base::ScopedCFTypeRef<SecPolicyRef> sslPolicy;
-  if (net::x509_util::CreateSSLClientPolicy(sslPolicy.InitializeInto()) ==
-      noErr) {
-    [_panel setPolicies:(id)sslPolicy.get()];
-  }
-}
-
-- (void)closeSelectorSheetWithCode:(NSModalResponse)response {
-  // Closing the sheet using -[NSApp endSheet:] doesn't work, so use the private
-  // method. If the sheet is already closed then this is a message send to nil
-  // and thus a no-op.
-  [_panel _dismissWithCode:response];
-}
-
-- (void)showSheetForWindow:(NSWindow*)window {
-  NSString* title = l10n_util::GetNSString(IDS_CLIENT_CERT_DIALOG_TITLE);
-  [_panel beginSheetForWindow:window
-                modalDelegate:self
-               didEndSelector:@selector(sheetDidEnd:returnCode:context:)
-                  contextInfo:nil
-                   identities:_sec_identities
-                      message:title];
-  _observer->StartObserving();
-}
-
-- (void)setOverlayWindow:(views::Widget*)overlayWindow {
-  _overlayWindow = overlayWindow;
-  _observer->SetOverlayWindow(_overlayWindow);
-}
+- (void)closeSelectorSheetWithCode:(NSModalResponse)response;
 
 @end
 
@@ -321,25 +127,32 @@
 // OS-provided client certificate selector.
 class SSLClientCertificateSelectorDelegate
     : public views::WidgetDelegateView,
-      public chrome::OkAndCancelableForTesting {
+      public chrome::OkAndCancelableForTesting,
+      public SSLClientAuthObserver {
  public:
   SSLClientCertificateSelectorDelegate(
       content::WebContents* contents,
       net::SSLCertRequestInfo* cert_request_info,
       net::ClientCertIdentityList client_certs,
       std::unique_ptr<content::ClientCertificateDelegate> delegate)
-      : certificate_selector_([[SSLClientCertificateSelectorMac alloc]
-            initWithBrowserContext:contents->GetBrowserContext()
-                   certRequestInfo:cert_request_info
-                          delegate:std::move(delegate)]),
-        weak_factory_(this) {
+      : SSLClientAuthObserver(contents->GetBrowserContext(),
+                              cert_request_info,
+                              std::move(delegate)) {
+    certificate_selector_.reset([[SSLClientCertificateSelectorMac alloc]
+        initWithClientCerts:std::move(client_certs)
+                   delegate:weak_factory_.GetWeakPtr()]);
     views::Widget* overlay_window =
         constrained_window::ShowWebModalDialogWithOverlayViews(this, contents);
-    [certificate_selector_ setOverlayWindow:overlay_window];
-    [certificate_selector_ createForWebContents:contents
-                                    clientCerts:std::move(client_certs)];
     [certificate_selector_ showSheetForWindow:overlay_window->GetNativeWindow()
                                                   .GetNativeNSWindow()];
+    StartObserving();
+  }
+
+  ~SSLClientCertificateSelectorDelegate() override {
+    // Note that the SFChooseIdentityPanel takes a reference to its delegate
+    // (|certificate_selector_|) in its -beginSheetForWindow:... method. Break
+    // the retain cycle by explicitly canceling the dialog.
+    [certificate_selector_ closeSelectorSheetWithCode:NSModalResponseAbort];
   }
 
   // WidgetDelegate:
@@ -354,6 +167,11 @@
     [certificate_selector_ closeSelectorSheetWithCode:NSModalResponseCancel];
   }
 
+  // SSLClientAuthObserver implementation:
+  void OnCertSelectedByNotification() override {
+    [certificate_selector_ closeSelectorSheetWithCode:NSModalResponseStop];
+  }
+
   void SetDeallocClosureForTesting(base::OnceClosure dealloc_closure) {
     DeallocClosureCaller* caller = [[DeallocClosureCaller alloc]
         initWithDeallocClosure:std::move(dealloc_closure)];
@@ -369,6 +187,10 @@
                           weak_factory_.GetWeakPtr());
   }
 
+  void CloseWidgetWithReason(views::Widget::ClosedReason reason) {
+    GetWidget()->CloseWithReason(reason);
+  }
+
  private:
   void CloseSelector() {
     [certificate_selector_ closeSelectorSheetWithCode:NSModalResponseStop];
@@ -376,13 +198,155 @@
 
   base::scoped_nsobject<SSLClientCertificateSelectorMac> certificate_selector_;
 
-  base::WeakPtrFactory<SSLClientCertificateSelectorDelegate> weak_factory_;
+  base::WeakPtrFactory<SSLClientCertificateSelectorDelegate> weak_factory_{
+      this};
 
   DISALLOW_COPY_AND_ASSIGN(SSLClientCertificateSelectorDelegate);
 };
 
 }  // namespace
 
+@implementation SSLClientCertificateSelectorMac {
+  // The list of SecIdentityRefs offered to the user.
+  base::scoped_nsobject<NSMutableArray> _secIdentities;
+
+  // The corresponding list of ClientCertIdentities.
+  net::ClientCertIdentityList _certIdentities;
+
+  // A C++ object to report the client certificate selection to.
+  base::WeakPtr<SSLClientCertificateSelectorDelegate> _delegate;
+
+  base::scoped_nsobject<SFChooseIdentityPanel> _panel;
+}
+
+- (instancetype)
+    initWithClientCerts:(net::ClientCertIdentityList)clientCerts
+               delegate:(base::WeakPtr<SSLClientCertificateSelectorDelegate>)
+                            delegate {
+  if ((self = [super init])) {
+    _delegate = delegate;
+    _certIdentities = std::move(clientCerts);
+
+    _secIdentities.reset([[NSMutableArray alloc] init]);
+    for (const auto& cert : _certIdentities) {
+      DCHECK(cert->sec_identity_ref());
+      [_secIdentities addObject:(id)cert->sec_identity_ref()];
+    }
+  }
+  return self;
+}
+
+// The selector sheet ended. There are four possibilities for the return code.
+//
+// These two return codes are actually generated by the SFChooseIdentityPanel,
+// although for testing purposes the OkAndCancelableForTesting implementation
+// will also generate them to simulate the user clicking buttons.
+//
+// - NSModalResponseOK/Cancel: The user clicked the "OK" or "Cancel" button; the
+//   SSL auth system needs to be told of this choice.
+//
+// These two return codes are generated by the
+// SSLClientCertificateSelectorDelegate to force the SFChooseIdentityPanel to be
+// closed for various reasons.
+//
+// - NSModalResponseAbort: The user closed the owning tab; the SSL auth system
+//   needs to be told of this cancellation.
+// - NSModalResponseStop: The SSL auth system already has an answer; just tear
+//   down the dialog.
+//
+// Note that there is a disagreement between the docs and the SDK header file as
+// to the type of the return code. It has empirically been determined to be an
+// int, not an NSInteger. rdar://45344010
+- (void)sheetDidEnd:(NSWindow*)sheet
+         returnCode:(int)returnCode
+            context:(void*)context {
+  views::Widget::ClosedReason closedReason =
+      views::Widget::ClosedReason::kUnspecified;
+  if (_delegate) {
+    if (returnCode == NSModalResponseAbort) {
+      _delegate->CancelCertificateSelection();
+    } else if (returnCode == NSModalResponseOK ||
+               returnCode == NSModalResponseCancel) {
+      net::ClientCertIdentity* cert = nullptr;
+      if (returnCode == NSModalResponseOK) {
+        NSUInteger index = [_secIdentities indexOfObject:(id)[_panel identity]];
+        if (index != NSNotFound)
+          cert = _certIdentities[index].get();
+        closedReason = views::Widget::ClosedReason::kAcceptButtonClicked;
+      } else {
+        closedReason = views::Widget::ClosedReason::kCancelButtonClicked;
+      }
+
+      if (cert) {
+        _delegate->CertificateSelected(
+            cert->certificate(),
+            CreateSSLPrivateKeyForSecIdentity(cert->certificate(),
+                                              cert->sec_identity_ref())
+                .get());
+      } else {
+        _delegate->CertificateSelected(nullptr, nullptr);
+      }
+    } else {
+      DCHECK_EQ(NSModalResponseStop, returnCode);
+      _delegate->StopObserving();
+    }
+  } else {
+    // This should be impossible, assuming _dismissWithCode: synchronously calls
+    // this method. (SSLClientCertificateSelectorDelegate calls
+    // closeSelectorSheetWithCode: on destruction.)
+    NOTREACHED();
+  }
+
+  // See comment at definition; this works around a bug.
+  ClearWindowTableViewDataSources(sheet);
+
+  // Do not release SFChooseIdentityPanel here. Its -_okClicked: method, after
+  // calling out to this method, keeps accessing its ivars, and if panel_ is the
+  // last reference keeping it alive, it will crash.
+  _panel.autorelease();
+
+  if (_delegate) {
+    // This asynchronously releases |self|.
+    _delegate->CloseWidgetWithReason(closedReason);
+  }
+}
+
+- (void)showSheetForWindow:(NSWindow*)window {
+  // Get the message to display:
+  NSString* message = l10n_util::GetNSStringF(
+      IDS_CLIENT_CERT_DIALOG_TEXT,
+      base::ASCIIToUTF16(
+          _delegate->cert_request_info()->host_and_port.ToString()));
+
+  // Create and set up a system choose-identity panel.
+  _panel.reset([[SFChooseIdentityPanel alloc] init]);
+  [_panel setInformativeText:message];
+  [_panel setDefaultButtonTitle:l10n_util::GetNSString(IDS_OK)];
+  [_panel setAlternateButtonTitle:l10n_util::GetNSString(IDS_CANCEL)];
+  base::ScopedCFTypeRef<SecPolicyRef> sslPolicy;
+  if (net::x509_util::CreateSSLClientPolicy(sslPolicy.InitializeInto()) ==
+      noErr) {
+    [_panel setPolicies:(id)sslPolicy.get()];
+  }
+
+  NSString* title = l10n_util::GetNSString(IDS_CLIENT_CERT_DIALOG_TITLE);
+  [_panel beginSheetForWindow:window
+                modalDelegate:self
+               didEndSelector:@selector(sheetDidEnd:returnCode:context:)
+                  contextInfo:nil
+                   identities:_secIdentities
+                      message:title];
+}
+
+- (void)closeSelectorSheetWithCode:(NSModalResponse)response {
+  // Closing the sheet using -[NSApp endSheet:] doesn't work, so use the private
+  // method. If the sheet is already closed then this is a message send to nil
+  // and thus a no-op.
+  [_panel _dismissWithCode:response];
+}
+
+@end
+
 namespace chrome {
 
 base::OnceClosure ShowSSLClientCertificateSelector(
diff --git a/chrome/browser/ui/views/ssl_client_certificate_selector_mac_browsertest.mm b/chrome/browser/ui/views/ssl_client_certificate_selector_mac_browsertest.mm
index aed09ff..1b39c73 100644
--- a/chrome/browser/ui/views/ssl_client_certificate_selector_mac_browsertest.mm
+++ b/chrome/browser/ui/views/ssl_client_certificate_selector_mac_browsertest.mm
@@ -11,7 +11,6 @@
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
-#include "base/memory/weak_ptr.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/ssl/ssl_client_auth_metrics.h"
 #include "chrome/browser/ssl/ssl_client_certificate_selector.h"
@@ -37,46 +36,63 @@
 
 namespace {
 
-struct TestClientCertificateDelegateResults
-    : public base::SupportsWeakPtr<TestClientCertificateDelegateResults> {
-  bool destroyed = false;
-  bool continue_with_certificate_called = false;
-  scoped_refptr<net::X509Certificate> cert;
-  scoped_refptr<net::SSLPrivateKey> key;
+class TestClientCertificateDelegateResults {
+ public:
+  bool destroyed() const { return destroyed_; }
+  bool continue_with_certificate_called() const {
+    return continue_with_certificate_called_;
+  }
+
+  net::X509Certificate* cert() const { return cert_.get(); }
+  net::SSLPrivateKey* key() const { return key_.get(); }
+
+  void WaitForDelegateDestroyed() {
+    if (!destroyed_)
+      run_loop_.Run();
+    EXPECT_TRUE(destroyed_);
+  }
+
+  void OnDelegateDestroyed() {
+    destroyed_ = true;
+    run_loop_.Quit();
+  }
+
+  void ContinueWithCertificate(scoped_refptr<net::X509Certificate> cert,
+                               scoped_refptr<net::SSLPrivateKey> key) {
+    EXPECT_FALSE(continue_with_certificate_called_);
+    cert_ = std::move(cert);
+    key_ = std::move(key);
+    continue_with_certificate_called_ = true;
+  }
+
+ private:
+  bool destroyed_ = false;
+  bool continue_with_certificate_called_ = false;
+  scoped_refptr<net::X509Certificate> cert_;
+  scoped_refptr<net::SSLPrivateKey> key_;
+  base::RunLoop run_loop_;
 };
 
 class TestClientCertificateDelegate
     : public content::ClientCertificateDelegate {
  public:
   // Creates a ClientCertificateDelegate that sets |results->destroyed| to true
-  // on destruction. The |results| parameter is a WeakPtr so we avoid retaining
-  // a dangling pointer to a stack object that has since been deallocated.
+  // on destruction. The delegate must not outlive |results|.
   explicit TestClientCertificateDelegate(
-      base::WeakPtr<TestClientCertificateDelegateResults> results)
+      TestClientCertificateDelegateResults* results)
       : results_(results) {}
 
-  ~TestClientCertificateDelegate() override {
-    if (!results_) {
-      return;
-    }
-    results_->destroyed = true;
-  }
+  ~TestClientCertificateDelegate() override { results_->OnDelegateDestroyed(); }
 
   // content::ClientCertificateDelegate.
   void ContinueWithCertificate(scoped_refptr<net::X509Certificate> cert,
                                scoped_refptr<net::SSLPrivateKey> key) override {
-    if (!results_) {
-      return;
-    }
-    EXPECT_FALSE(results_->continue_with_certificate_called);
-    results_->cert = cert;
-    results_->key = key;
-    results_->continue_with_certificate_called = true;
+    results_->ContinueWithCertificate(std::move(cert), std::move(key));
     // TODO(mattm): Add a test of selecting the 2nd certificate (if possible).
   }
 
  private:
-  base::WeakPtr<TestClientCertificateDelegateResults> results_;
+  TestClientCertificateDelegateResults* results_;
 
   DISALLOW_COPY_AND_ASSIGN(TestClientCertificateDelegate);
 };
@@ -154,21 +170,19 @@
       chrome::ShowSSLClientCertificateSelector(
           web_contents, auth_requestor_->cert_request_info_.get(),
           GetTestCertificateList(),
-          std::make_unique<TestClientCertificateDelegate>(results.AsWeakPtr()));
+          std::make_unique<TestClientCertificateDelegate>(&results));
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
 
   WebContentsModalDialogManager::TestApi test_api(
       web_contents_modal_dialog_manager);
   test_api.CloseAllDialogs();
-  base::RunLoop().RunUntilIdle();
+  results.WaitForDelegateDestroyed();
   EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive());
 
   histograms.ExpectUniqueSample(kClientCertSelectHistogramName,
                                 ClientCertSelectionResult::kUserCloseTab, 1);
-
-  EXPECT_TRUE(results.destroyed);
-  EXPECT_FALSE(results.continue_with_certificate_called);
+  EXPECT_FALSE(results.continue_with_certificate_called());
 }
 
 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMacTest,
@@ -185,35 +199,21 @@
       chrome::ShowSSLClientCertificateSelector(
           web_contents, auth_requestor_->cert_request_info_.get(),
           GetTestCertificateList(),
-          std::make_unique<TestClientCertificateDelegate>(results.AsWeakPtr()));
+          std::make_unique<TestClientCertificateDelegate>(&results));
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
 
   // Cancel the dialog without selecting a certificate.
   std::move(cancellation_callback).Run();
 
-  base::RunLoop().RunUntilIdle();
+  results.WaitForDelegateDestroyed();
   EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive());
 
   // The user did not close the tab, so there should be zero samples reported
   // for ClientCertSelectionResult::kUserCloseTab.
+  histograms.ExpectTotalCount(kClientCertSelectHistogramName, 0);
 
-  // A note on object lifetimes:
-  //
-  // The earlier call to ShowSSLClientCertificateSelector() created a
-  // self-owning (and self-deleting) SSLClientAuthObserver, which also owns the
-  // TestClientCertificateDelegate in this test.
-  //
-  // At this point, the TestClientCertificateDelegate's destructor has not
-  // executed because no SSLClientAuthObserver methods that trigger
-  // self-deletion have been called, e.g.  ContinueWithCertificate().
-  //
-  // Since ~TestClientCertificateDelegate() must write to |results| to indicate
-  // destruction occurred, it must have some way to know whether |results|
-  // still exists. This is why we are using a WeakPtr to |results|.
-
-  EXPECT_FALSE(results.destroyed);
-  EXPECT_FALSE(results.continue_with_certificate_called);
+  EXPECT_FALSE(results.continue_with_certificate_called());
 }
 
 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMacTest, Cancel) {
@@ -229,23 +229,22 @@
       chrome::ShowSSLClientCertificateSelectorMacForTesting(
           web_contents, auth_requestor_->cert_request_info_.get(),
           GetTestCertificateList(),
-          std::make_unique<TestClientCertificateDelegate>(results.AsWeakPtr()),
+          std::make_unique<TestClientCertificateDelegate>(&results),
           base::DoNothing());
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
 
   ok_and_cancelable->ClickCancelButton();
-  base::RunLoop().RunUntilIdle();
+  results.WaitForDelegateDestroyed();
   EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive());
 
   histograms.ExpectUniqueSample(kClientCertSelectHistogramName,
                                 ClientCertSelectionResult::kUserCancel, 1);
 
   // ContinueWithCertificate(nullptr, nullptr) should have been called.
-  EXPECT_TRUE(results.destroyed);
-  EXPECT_TRUE(results.continue_with_certificate_called);
-  EXPECT_FALSE(results.cert);
-  EXPECT_FALSE(results.key);
+  EXPECT_TRUE(results.continue_with_certificate_called());
+  EXPECT_FALSE(results.cert());
+  EXPECT_FALSE(results.key());
 }
 
 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMacTest, Accept) {
@@ -261,28 +260,27 @@
       chrome::ShowSSLClientCertificateSelectorMacForTesting(
           web_contents, auth_requestor_->cert_request_info_.get(),
           GetTestCertificateList(),
-          std::make_unique<TestClientCertificateDelegate>(results.AsWeakPtr()),
+          std::make_unique<TestClientCertificateDelegate>(&results),
           base::DoNothing());
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
 
   ok_and_cancelable->ClickOkButton();
-  base::RunLoop().RunUntilIdle();
+  results.WaitForDelegateDestroyed();
   EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive());
 
   // The first cert in the list should have been selected.
-  EXPECT_TRUE(results.destroyed);
-  EXPECT_TRUE(results.continue_with_certificate_called);
-  EXPECT_EQ(client_cert1_, results.cert);
-  ASSERT_TRUE(results.key);
+  EXPECT_TRUE(results.continue_with_certificate_called());
+  EXPECT_EQ(client_cert1_, results.cert());
+  ASSERT_TRUE(results.key());
 
   histograms.ExpectUniqueSample(kClientCertSelectHistogramName,
                                 ClientCertSelectionResult::kUserSelect, 1);
 
   // The test keys are RSA keys.
   EXPECT_EQ(net::SSLPrivateKey::DefaultAlgorithmPreferences(EVP_PKEY_RSA, true),
-            results.key->GetAlgorithmPreferences());
-  TestSSLPrivateKeyMatches(results.key.get(), pkcs8_key1_);
+            results.key()->GetAlgorithmPreferences());
+  TestSSLPrivateKeyMatches(results.key(), pkcs8_key1_);
 }
 
 // Test that switching to another tab correctly hides the sheet.
@@ -304,7 +302,7 @@
       chrome::ShowSSLClientCertificateSelector(
           web_contents, auth_requestor_->cert_request_info_.get(),
           GetTestCertificateList(),
-          std::make_unique<TestClientCertificateDelegate>(results.AsWeakPtr()));
+          std::make_unique<TestClientCertificateDelegate>(&results));
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
 
@@ -327,19 +325,20 @@
   EXPECT_EQ(1.0, [sheet_window alphaValue]);
   EXPECT_FALSE([overlay_window ignoresMouseEvents]);
 
-  EXPECT_FALSE(results.destroyed);
-  EXPECT_FALSE(results.continue_with_certificate_called);
+  EXPECT_FALSE(results.destroyed());
+  EXPECT_FALSE(results.continue_with_certificate_called());
 
   // Close the tab. Delegate should be destroyed without continuing.
   chrome::CloseTab(browser());
-  EXPECT_TRUE(results.destroyed);
-  EXPECT_FALSE(results.continue_with_certificate_called);
+  results.WaitForDelegateDestroyed();
+  EXPECT_FALSE(results.continue_with_certificate_called());
 }
 
 // Test that we can't trigger the crash from https://crbug.com/653093
 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMacTest,
                        WorkaroundTableViewCrash) {
   base::RunLoop run_loop;
+  TestClientCertificateDelegateResults results;
 
   @autoreleasepool {
     content::WebContents* web_contents =
@@ -347,7 +346,9 @@
     chrome::OkAndCancelableForTesting* ok_and_cancelable =
         chrome::ShowSSLClientCertificateSelectorMacForTesting(
             web_contents, auth_requestor_->cert_request_info_.get(),
-            GetTestCertificateList(), nullptr, run_loop.QuitClosure());
+            GetTestCertificateList(),
+            std::make_unique<TestClientCertificateDelegate>(&results),
+            run_loop.QuitClosure());
     base::RunLoop().RunUntilIdle();
 
     ok_and_cancelable->ClickOkButton();
@@ -370,4 +371,6 @@
                   userInfo:@{
                     @"NSScrollerStyle" : @(NSScrollerStyleOverlay)
                   }];
+
+  results.WaitForDelegateDestroyed();
 }
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
index b8734eb..f36a4fd 100644
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
@@ -331,10 +331,25 @@
   model_->delegate()->AddTabAt(GURL(), tabs.back() + 1, true, group);
 }
 
+void BrowserTabStripController::AddTabToGroup(
+    int model_index,
+    const tab_groups::TabGroupId& group) {
+  model_->AddToExistingGroup({model_index}, group);
+}
+
+void BrowserTabStripController::RemoveTabFromGroup(int model_index) {
+  model_->RemoveFromGroup({model_index});
+}
+
 void BrowserTabStripController::MoveTab(int start_index, int final_index) {
   model_->MoveWebContentsAt(start_index, final_index, false);
 }
 
+void BrowserTabStripController::MoveGroup(const tab_groups::TabGroupId& group,
+                                          int final_index) {
+  model_->MoveGroupTo(group, final_index);
+}
+
 void BrowserTabStripController::ShowContextMenuForTab(
     Tab* tab,
     const gfx::Point& p,
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
index 67c4b15..fab2bdc 100644
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
@@ -66,7 +66,11 @@
   void CloseTab(int model_index, CloseTabSource source) override;
   void UngroupAllTabsInGroup(const tab_groups::TabGroupId& group) override;
   void AddNewTabInGroup(const tab_groups::TabGroupId& group) override;
+  void AddTabToGroup(int model_index,
+                     const tab_groups::TabGroupId& group) override;
+  void RemoveTabFromGroup(int model_index) override;
   void MoveTab(int start_index, int final_index) override;
+  void MoveGroup(const tab_groups::TabGroupId& group, int final_index) override;
   void ShowContextMenuForTab(Tab* tab,
                              const gfx::Point& p,
                              ui::MenuSourceType source_type) override;
diff --git a/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.cc
index e8227b4..3742d75 100644
--- a/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.cc
+++ b/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.cc
@@ -49,6 +49,8 @@
   tab_groups_.insert(tab_groups_.begin() + to_index, prev_group);
   tab_strip_->MoveTab(from_index, to_index, TabRendererData());
 }
+void FakeBaseTabStripController::MoveGroup(const tab_groups::TabGroupId& group,
+                                           int to_index) {}
 
 void FakeBaseTabStripController::RemoveTab(int index) {
   num_tabs_--;
@@ -65,6 +67,38 @@
     tab_strip_->SetSelection(selection_model_);
 }
 
+base::string16 FakeBaseTabStripController::GetGroupTitle(
+    const tab_groups::TabGroupId& group_id) const {
+  return fake_group_data_.title();
+}
+
+tab_groups::TabGroupColorId FakeBaseTabStripController::GetGroupColorId(
+    const tab_groups::TabGroupId& group_id) const {
+  return fake_group_data_.color();
+}
+
+void FakeBaseTabStripController::SetVisualDataForGroup(
+    const tab_groups::TabGroupId& group,
+    const tab_groups::TabGroupVisualData& visual_data) {
+  fake_group_data_ = visual_data;
+}
+
+void FakeBaseTabStripController::UngroupAllTabsInGroup(
+    const tab_groups::TabGroupId& group) {}
+
+void FakeBaseTabStripController::AddNewTabInGroup(
+    const tab_groups::TabGroupId& group) {}
+
+void FakeBaseTabStripController::AddTabToGroup(
+    int model_index,
+    const tab_groups::TabGroupId& group) {
+  MoveTabIntoGroup(model_index, group);
+}
+
+void FakeBaseTabStripController::RemoveTabFromGroup(int model_index) {
+  MoveTabIntoGroup(model_index, base::nullopt);
+}
+
 void FakeBaseTabStripController::MoveTabIntoGroup(
     int index,
     base::Optional<tab_groups::TabGroupId> new_group) {
@@ -91,27 +125,6 @@
     tab_strip_->OnGroupContentsChanged(new_group.value());
   }
 }
-base::string16 FakeBaseTabStripController::GetGroupTitle(
-    const tab_groups::TabGroupId& group_id) const {
-  return fake_group_data_.title();
-}
-
-tab_groups::TabGroupColorId FakeBaseTabStripController::GetGroupColorId(
-    const tab_groups::TabGroupId& group_id) const {
-  return fake_group_data_.color();
-}
-
-void FakeBaseTabStripController::SetVisualDataForGroup(
-    const tab_groups::TabGroupId& group,
-    const tab_groups::TabGroupVisualData& visual_data) {
-  fake_group_data_ = visual_data;
-}
-
-void FakeBaseTabStripController::UngroupAllTabsInGroup(
-    const tab_groups::TabGroupId& group) {}
-
-void FakeBaseTabStripController::AddNewTabInGroup(
-    const tab_groups::TabGroupId& group) {}
 
 std::vector<int> FakeBaseTabStripController::ListTabsInGroup(
     const tab_groups::TabGroupId& group) const {
diff --git a/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.h b/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.h
index e1ab6d30..d960f6a7 100644
--- a/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.h
+++ b/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.h
@@ -47,6 +47,7 @@
   bool BeforeCloseTab(int index, CloseTabSource source) override;
   void CloseTab(int index, CloseTabSource source) override;
   void MoveTab(int from_index, int to_index) override;
+  void MoveGroup(const tab_groups::TabGroupId&, int to_index) override;
   void ShowContextMenuForTab(Tab* tab,
                              const gfx::Point& p,
                              ui::MenuSourceType source_type) override;
@@ -69,6 +70,9 @@
       const tab_groups::TabGroupId& group) const override;
   void UngroupAllTabsInGroup(const tab_groups::TabGroupId& group) override;
   void AddNewTabInGroup(const tab_groups::TabGroupId& group) override;
+  void AddTabToGroup(int model_index,
+                     const tab_groups::TabGroupId& group) override;
+  void RemoveTabFromGroup(int model_index) override;
   bool IsFrameCondensed() const override;
   bool HasVisibleBackgroundTabShapes() const override;
   bool EverHasVisibleBackgroundTabShapes() const override;
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
index 861e7386..c9dc981e 100644
--- a/chrome/browser/ui/views/tabs/tab.cc
+++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -449,11 +449,11 @@
       }
     } else {
       if (event.key_code() == ui::VKEY_RIGHT) {
-        controller()->MoveTabRight(this);
+        controller()->ShiftTabRight(this);
         return true;
       }
       if (event.key_code() == ui::VKEY_LEFT) {
-        controller()->MoveTabLeft(this);
+        controller()->ShiftTabLeft(this);
         return true;
       }
     }
diff --git a/chrome/browser/ui/views/tabs/tab_controller.h b/chrome/browser/ui/views/tabs/tab_controller.h
index 0d5ef06..21e1406 100644
--- a/chrome/browser/ui/views/tabs/tab_controller.h
+++ b/chrome/browser/ui/views/tabs/tab_controller.h
@@ -60,11 +60,11 @@
   // Closes the tab.
   virtual void CloseTab(Tab* tab, CloseTabSource source) = 0;
 
-  // Attempts to move the specified tab to the right.
-  virtual void MoveTabRight(Tab* tab) = 0;
+  // Attempts to shift the specified tab to the right by one index.
+  virtual void ShiftTabRight(Tab* tab) = 0;
 
-  // Attempts to move the specified tab to the left.
-  virtual void MoveTabLeft(Tab* tab) = 0;
+  // Attempts to shift the specified tab to the left by one index.
+  virtual void ShiftTabLeft(Tab* tab) = 0;
 
   // Attempts to move the specified tab to the beginning of the tabstrip (or the
   // beginning of the unpinned tab region if the tab is not pinned).
diff --git a/chrome/browser/ui/views/tabs/tab_group_header.cc b/chrome/browser/ui/views/tabs/tab_group_header.cc
index e3dc4bc..a0caf4f7 100644
--- a/chrome/browser/ui/views/tabs/tab_group_header.cc
+++ b/chrome/browser/ui/views/tabs/tab_group_header.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/tabs/tab_style.h"
 #include "chrome/browser/ui/views/tabs/tab_controller.h"
@@ -107,7 +108,23 @@
     return true;
   }
 
-  // TODO(connily): Handle moving the entire group left/right, similar to tabs.
+  constexpr int kModifiedFlag =
+#if defined(OS_MACOSX)
+      ui::EF_COMMAND_DOWN;
+#else
+      ui::EF_CONTROL_DOWN;
+#endif
+
+  if (event.type() == ui::ET_KEY_PRESSED && (event.flags() & kModifiedFlag)) {
+    if (event.key_code() == ui::VKEY_RIGHT) {
+      tab_strip_->ShiftGroupRight(group().value());
+      return true;
+    }
+    if (event.key_code() == ui::VKEY_LEFT) {
+      tab_strip_->ShiftGroupLeft(group().value());
+      return true;
+    }
+  }
 
   return false;
 }
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 884a3c1d..8a8cb49d 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -124,6 +124,9 @@
 int g_drop_indicator_width = 0;
 int g_drop_indicator_height = 0;
 
+// The offset in indices when shifting a tab or group in the given direction.
+enum ShiftOffset { kLeft = -1, kRight = 1 };
+
 // Listens in on the browser event stream (as a pre target event handler) and
 // hides an associated hover card on any keypress.
 class TabHoverCardEventSniffer : public ui::EventHandler {
@@ -1303,6 +1306,14 @@
   // The group_views_ mapping is erased in OnGroupCloseAnimationCompleted().
 }
 
+void TabStrip::ShiftGroupLeft(const tab_groups::TabGroupId& group) {
+  ShiftGroupRelative(group, -1);
+}
+
+void TabStrip::ShiftGroupRight(const tab_groups::TabGroupId& group) {
+  ShiftGroupRelative(group, 1);
+}
+
 bool TabStrip::ShouldTabBeVisible(const Tab* tab) const {
   // Detached tabs should always be invisible (as they close).
   if (tab->detached())
@@ -1606,12 +1617,12 @@
   controller_->CloseTab(model_index, source);
 }
 
-void TabStrip::MoveTabLeft(Tab* tab) {
-  MoveTabRelative(tab, -1);
+void TabStrip::ShiftTabLeft(Tab* tab) {
+  ShiftTabRelative(tab, ShiftOffset::kLeft);
 }
 
-void TabStrip::MoveTabRight(Tab* tab) {
-  MoveTabRelative(tab, 1);
+void TabStrip::ShiftTabRight(Tab* tab) {
+  ShiftTabRelative(tab, ShiftOffset::kRight);
 }
 
 void TabStrip::MoveTabFirst(Tab* tab) {
@@ -1628,10 +1639,23 @@
       ++target_index;
   }
 
-  if (target_index == start_index || !IsValidModelIndex(target_index))
+  if (!IsValidModelIndex(target_index))
     return;
 
+  if (target_index == start_index) {
+    // Even if the tab is already at the front, it may be able to "move" out of
+    // its current group.
+    if (tab->group().has_value())
+      controller_->RemoveTabFromGroup(target_index);
+    return;
+  }
+
   controller_->MoveTab(start_index, target_index);
+
+  // The tab may unintentionally land in the first group in the tab strip, so we
+  // remove the group to ensure consistent behavior.
+  if (tab->group().has_value())
+    controller_->RemoveTabFromGroup(target_index);
 }
 
 void TabStrip::MoveTabLast(Tab* tab) {
@@ -1652,10 +1676,23 @@
     target_index = tab_count() - 1;
   }
 
-  if (target_index == start_index || !IsValidModelIndex(target_index))
+  if (!IsValidModelIndex(target_index))
     return;
 
+  if (target_index == start_index) {
+    // Even if the tab is already at the back, it may be able to "move" out of
+    // its current group.
+    if (tab->group().has_value())
+      controller_->RemoveTabFromGroup(target_index);
+    return;
+  }
+
   controller_->MoveTab(start_index, target_index);
+
+  // The tab may unintentionally land in the last group in the tab strip, so we
+  // remove the group to ensure consistent behavior.
+  if (tab->group().has_value())
+    controller_->RemoveTabFromGroup(target_index);
 }
 
 void TabStrip::ShowContextMenuForTab(Tab* tab,
@@ -2898,22 +2935,74 @@
   separator_color_ = get_blend(inactive_fg, kTabSeparatorContrast).color;
 }
 
-void TabStrip::MoveTabRelative(Tab* tab, int offset) {
-  DCHECK_NE(offset, 0);
+void TabStrip::ShiftTabRelative(Tab* tab, int offset) {
+  DCHECK(offset == ShiftOffset::kLeft || offset == ShiftOffset::kRight);
   const int start_index = GetModelIndexOf(tab);
   const int target_index = start_index + offset;
 
+  if (!IsValidModelIndex(start_index))
+    return;
+
   if (tab->closing())
     return;
 
+  if (!IsValidModelIndex(target_index) ||
+      controller_->IsTabPinned(start_index) !=
+          controller_->IsTabPinned(target_index)) {
+    // Even if we've reached the boundary of where the tab could go, it may
+    // still be able to "move" out of its current group.
+    if (tab->group().has_value())
+      controller_->RemoveTabFromGroup(start_index);
+    return;
+  }
+
+  // If the tab is at a group boundary, instead of actually moving the tab just
+  // change its group membership.
+  base::Optional<tab_groups::TabGroupId> target_group =
+      tab_at(target_index)->group();
+  if (tab->group() != target_group) {
+    if (tab->group().has_value())
+      controller_->RemoveTabFromGroup(start_index);
+    else if (target_group.has_value())
+      controller_->AddTabToGroup(start_index, target_group.value());
+
+    return;
+  }
+
+  controller_->MoveTab(start_index, target_index);
+}
+
+void TabStrip::ShiftGroupRelative(const tab_groups::TabGroupId& group,
+                                  int offset) {
+  DCHECK(offset == ShiftOffset::kLeft || offset == ShiftOffset::kRight);
+  std::vector<int> tabs_in_group = controller_->ListTabsInGroup(group);
+
+  const int start_index = tabs_in_group.front();
+  int target_index = start_index + offset;
+
+  if (offset > 0)
+    target_index += tabs_in_group.size() - 1;
+
   if (!IsValidModelIndex(start_index) || !IsValidModelIndex(target_index))
     return;
 
+  // Avoid moving into the middle of another group by accounting for its size.
+  base::Optional<tab_groups::TabGroupId> target_group =
+      tab_at(target_index)->group();
+  if (target_group.has_value()) {
+    target_index +=
+        offset *
+        (controller_->ListTabsInGroup(target_group.value()).size() - 1);
+  }
+
+  if (!IsValidModelIndex(target_index))
+    return;
+
   if (controller_->IsTabPinned(start_index) !=
       controller_->IsTabPinned(target_index))
     return;
 
-  controller_->MoveTab(start_index, target_index);
+  controller_->MoveGroup(group, target_index);
 }
 
 void TabStrip::ResizeLayoutTabs() {
diff --git a/chrome/browser/ui/views/tabs/tab_strip.h b/chrome/browser/ui/views/tabs/tab_strip.h
index 7e7f437..97932cc 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.h
+++ b/chrome/browser/ui/views/tabs/tab_strip.h
@@ -192,6 +192,12 @@
   // associated view mappings are erased in OnGroupCloseAnimationCompleted().
   void OnGroupClosed(const tab_groups::TabGroupId& group);
 
+  // Attempts to move the specified group to the left.
+  void ShiftGroupLeft(const tab_groups::TabGroupId& group);
+
+  // Attempts to move the specified group to the right.
+  void ShiftGroupRight(const tab_groups::TabGroupId& group);
+
   // Returns true if the tab is not partly or fully clipped (due to overflow),
   // and the tab couldn't become partly clipped due to changing the selected tab
   // (for example, if currently the strip has the last tab selected, and
@@ -266,8 +272,8 @@
   void ToggleSelected(Tab* tab) override;
   void AddSelectionFromAnchorTo(Tab* tab) override;
   void CloseTab(Tab* tab, CloseTabSource source) override;
-  void MoveTabLeft(Tab* tab) override;
-  void MoveTabRight(Tab* tab) override;
+  void ShiftTabLeft(Tab* tab) override;
+  void ShiftTabRight(Tab* tab) override;
   void MoveTabFirst(Tab* tab) override;
   void MoveTabLast(Tab* tab) override;
   void ShowContextMenuForTab(Tab* tab,
@@ -525,9 +531,13 @@
   // Computes and stores values derived from contrast ratios.
   void UpdateContrastRatioValues();
 
-  // Determines whether a tab can be moved by |offset| positions and moves it if
-  // possible.
-  void MoveTabRelative(Tab* tab, int offset);
+  // Determines whether a tab can be shifted by one in the direction of |offset|
+  // and moves it if possible.
+  void ShiftTabRelative(Tab* tab, int offset);
+
+  // Determines whether a group can be shifted by one in the direction of
+  // |offset| and moves it if possible.
+  void ShiftGroupRelative(const tab_groups::TabGroupId& group, int offset);
 
   // -- Tab Resize Layout -----------------------------------------------------
 
diff --git a/chrome/browser/ui/views/tabs/tab_strip_browsertest.cc b/chrome/browser/ui/views/tabs/tab_strip_browsertest.cc
index 78064c2d..07a0b30 100644
--- a/chrome/browser/ui/views/tabs/tab_strip_browsertest.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip_browsertest.cc
@@ -31,6 +31,10 @@
     return tab_strip_model()->GetTabGroupForTab(tab_index).value();
   }
 
+  void AddTabToExistingGroup(int tab_index, tab_groups::TabGroupId group) {
+    tab_strip_model()->AddToExistingGroup({tab_index}, group);
+  }
+
   std::vector<content::WebContents*> GetWebContentses() {
     std::vector<content::WebContents*> contentses;
     for (int i = 0; i < tab_strip()->tab_count(); ++i)
@@ -73,64 +77,152 @@
   EXPECT_EQ(groups[0], group);
 }
 
-IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabLeft_Success) {
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabLeft_Success) {
   AppendTab();
   AppendTab();
 
   const auto expected = GetWebContentsesInOrder({1, 0, 2});
-  tab_strip()->MoveTabLeft(tab_strip()->tab_at(1));
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(1));
   EXPECT_EQ(expected, GetWebContentses());
 }
 
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabLeft_AddsToGroup) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(1);
+
+  // Instead of moving, the tab should be added to the group.
+  const auto expected = GetWebContentsesInOrder({0, 1, 2});
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(2));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(2)->group().value(), group);
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabLeft_RemovesFromGroup) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(1);
+
+  // Instead of moving, the tab should be removed from the group.
+  const auto expected = GetWebContentsesInOrder({0, 1, 2});
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(1));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(1)->group(), base::nullopt);
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabLeft_ShiftsBetweenGroups) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(0);
+  AddTabToNewGroup(1);
+
+  // Instead of moving, the tab should be removed from its old group, then added
+  // to the new group.
+  const auto expected = GetWebContentsesInOrder({0, 1, 2});
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(1));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(1)->group(), base::nullopt);
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(1));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(1)->group().value(), group);
+}
+
 IN_PROC_BROWSER_TEST_F(TabStripBrowsertest,
-                       MoveTabLeft_Failure_EdgeOfTabstrip) {
+                       ShiftTabLeft_Failure_EdgeOfTabstrip) {
   AppendTab();
   AppendTab();
 
   const auto contentses = GetWebContentses();
-  tab_strip()->MoveTabLeft(tab_strip()->tab_at(0));
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(0));
   // No change expected.
   EXPECT_EQ(contentses, GetWebContentses());
 }
 
-IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabLeft_Failure_Pinned) {
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabLeft_Failure_Pinned) {
   AppendTab();
   AppendTab();
   tab_strip_model()->SetTabPinned(0, true);
 
   const auto contentses = GetWebContentses();
-  tab_strip()->MoveTabLeft(tab_strip()->tab_at(1));
+  tab_strip()->ShiftTabLeft(tab_strip()->tab_at(1));
   // No change expected.
   EXPECT_EQ(contentses, GetWebContentses());
 }
 
-IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabRight_Success) {
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabRight_Success) {
   AppendTab();
   AppendTab();
 
   const auto expected = GetWebContentsesInOrder({1, 0, 2});
-  tab_strip()->MoveTabRight(tab_strip()->tab_at(0));
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(0));
   EXPECT_EQ(expected, GetWebContentses());
 }
 
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabRight_AddsToGroup) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(1);
+
+  // Instead of moving, the tab should be added to the group.
+  const auto expected = GetWebContentsesInOrder({0, 1, 2});
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(0));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(0)->group().value(), group);
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabRight_RemovesFromGroup) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(1);
+
+  // Instead of moving, the tab should be removed from the group.
+  const auto expected = GetWebContentsesInOrder({0, 1, 2});
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(1));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(1)->group(), base::nullopt);
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabRight_ShiftsBetweenGroups) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(0);
+  tab_groups::TabGroupId group = AddTabToNewGroup(1);
+
+  // Instead of moving, the tab should be removed from its old group, then added
+  // to the new group.
+  const auto expected = GetWebContentsesInOrder({0, 1, 2});
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(0));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(0)->group(), base::nullopt);
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(0));
+  EXPECT_EQ(expected, GetWebContentses());
+  EXPECT_EQ(tab_strip()->tab_at(0)->group().value(), group);
+}
+
 IN_PROC_BROWSER_TEST_F(TabStripBrowsertest,
-                       MoveTabRight_Failure_EdgeOfTabstrip) {
+                       ShiftTabRight_Failure_EdgeOfTabstrip) {
   AppendTab();
   AppendTab();
 
   const auto contentses = GetWebContentses();
-  tab_strip()->MoveTabRight(tab_strip()->tab_at(2));
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(2));
   // No change expected.
   EXPECT_EQ(contentses, GetWebContentses());
 }
 
-IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabRight_Failure_Pinned) {
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftTabRight_Failure_Pinned) {
   AppendTab();
   AppendTab();
   tab_strip_model()->SetTabPinned(0, true);
 
   const auto contentses = GetWebContentses();
-  tab_strip()->MoveTabRight(tab_strip()->tab_at(0));
+  tab_strip()->ShiftTabRight(tab_strip()->tab_at(0));
   // No change expected.
   EXPECT_EQ(contentses, GetWebContentses());
 }
@@ -156,6 +248,30 @@
   EXPECT_EQ(expected, GetWebContentses());
 }
 
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabFirst_DoesNotAddToGroup) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(0);
+
+  tab_strip()->MoveTabFirst(tab_strip()->tab_at(1));
+  EXPECT_EQ(tab_strip()->tab_at(0)->group(), base::nullopt);
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabFirst_RemovesFromGroup) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(0);
+  AddTabToNewGroup(1);
+
+  tab_strip()->MoveTabFirst(tab_strip()->tab_at(0));
+  EXPECT_EQ(tab_strip()->tab_at(0)->group(), base::nullopt);
+
+  tab_strip()->MoveTabFirst(tab_strip()->tab_at(1));
+  EXPECT_EQ(tab_strip()->tab_at(0)->group(), base::nullopt);
+}
+
 IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabFirst_NoPinnedTabs_Failure) {
   AppendTab();
   AppendTab();
@@ -227,6 +343,30 @@
   EXPECT_EQ(expected, GetWebContentses());
 }
 
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabLast_DoesNotAddToGroup) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(2);
+
+  tab_strip()->MoveTabLast(tab_strip()->tab_at(1));
+  EXPECT_EQ(tab_strip()->tab_at(2)->group(), base::nullopt);
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabLast_RemovesFromGroup) {
+  AppendTab();
+  AppendTab();
+
+  AddTabToNewGroup(1);
+  AddTabToNewGroup(2);
+
+  tab_strip()->MoveTabLast(tab_strip()->tab_at(2));
+  EXPECT_EQ(tab_strip()->tab_at(2)->group(), base::nullopt);
+
+  tab_strip()->MoveTabLast(tab_strip()->tab_at(1));
+  EXPECT_EQ(tab_strip()->tab_at(2)->group(), base::nullopt);
+}
+
 IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, MoveTabLast_NoPinnedTabs_Failure) {
   AppendTab();
   AppendTab();
@@ -261,3 +401,101 @@
   // No changes expected.
   EXPECT_EQ(contentses, GetWebContentses());
 }
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftGroupLeft_Success) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(1);
+  AddTabToExistingGroup(2, group);
+
+  const auto expected = GetWebContentsesInOrder({1, 2, 0});
+  tab_strip()->ShiftGroupLeft(group);
+  EXPECT_EQ(expected, GetWebContentses());
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftGroupLeft_OtherGroup) {
+  AppendTab();
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group1 = AddTabToNewGroup(2);
+  AddTabToExistingGroup(3, group1);
+
+  tab_groups::TabGroupId group2 = AddTabToNewGroup(0);
+  AddTabToExistingGroup(1, group2);
+
+  const auto expected = GetWebContentsesInOrder({2, 3, 0, 1});
+  tab_strip()->ShiftGroupLeft(group1);
+  EXPECT_EQ(expected, GetWebContentses());
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest,
+                       ShiftGroupLeft_Failure_EdgeOfTabstrip) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(0);
+  AddTabToExistingGroup(1, group);
+
+  const auto contentses = GetWebContentses();
+  tab_strip()->ShiftGroupLeft(group);
+  // No change expected.
+  EXPECT_EQ(contentses, GetWebContentses());
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftGroupLeft_Failure_Pinned) {
+  AppendTab();
+  AppendTab();
+  tab_strip_model()->SetTabPinned(0, true);
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(1);
+  AddTabToExistingGroup(2, group);
+
+  const auto contentses = GetWebContentses();
+  tab_strip()->ShiftGroupLeft(group);
+  // No change expected.
+  EXPECT_EQ(contentses, GetWebContentses());
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftGroupRight_Success) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(0);
+  AddTabToExistingGroup(1, group);
+
+  const auto expected = GetWebContentsesInOrder({2, 0, 1});
+  tab_strip()->ShiftGroupRight(group);
+  EXPECT_EQ(expected, GetWebContentses());
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest, ShiftGroupRight_OtherGroup) {
+  AppendTab();
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group1 = AddTabToNewGroup(0);
+  AddTabToExistingGroup(1, group1);
+
+  tab_groups::TabGroupId group2 = AddTabToNewGroup(2);
+  AddTabToExistingGroup(3, group2);
+
+  const auto expected = GetWebContentsesInOrder({2, 3, 0, 1});
+  tab_strip()->ShiftGroupRight(group1);
+  EXPECT_EQ(expected, GetWebContentses());
+}
+
+IN_PROC_BROWSER_TEST_F(TabStripBrowsertest,
+                       ShiftGroupRight_Failure_EdgeOfTabstrip) {
+  AppendTab();
+  AppendTab();
+
+  tab_groups::TabGroupId group = AddTabToNewGroup(1);
+  AddTabToExistingGroup(2, group);
+
+  const auto contentses = GetWebContentses();
+  tab_strip()->ShiftGroupRight(group);
+  // No change expected.
+  EXPECT_EQ(contentses, GetWebContentses());
+}
diff --git a/chrome/browser/ui/views/tabs/tab_strip_controller.h b/chrome/browser/ui/views/tabs/tab_strip_controller.h
index c0bc7f41..60ef9d2 100644
--- a/chrome/browser/ui/views/tabs/tab_strip_controller.h
+++ b/chrome/browser/ui/views/tabs/tab_strip_controller.h
@@ -88,10 +88,22 @@
   // Adds a new tab to end of the tab group.
   virtual void AddNewTabInGroup(const tab_groups::TabGroupId& group) = 0;
 
+  // Adds a tab to an existing tab group.
+  virtual void AddTabToGroup(int model_index,
+                             const tab_groups::TabGroupId& group) = 0;
+
+  // Removes a tab from its tab group.
+  virtual void RemoveTabFromGroup(int model_index) = 0;
+
   // Moves the tab at |start_index| so that it is now at |final_index|, sliding
   // any tabs in between left or right as appropriate.
   virtual void MoveTab(int start_index, int final_index) = 0;
 
+  // Moves all the tabs in |group| so that it is now at |final_index|, sliding
+  // any tabs in between left or right as appropriate.
+  virtual void MoveGroup(const tab_groups::TabGroupId& group,
+                         int final_index) = 0;
+
   // Shows a context menu for the tab at the specified point in screen coords.
   virtual void ShowContextMenuForTab(Tab* tab,
                                      const gfx::Point& p,
diff --git a/chrome/browser/ui/views/tabs/tab_unittest.cc b/chrome/browser/ui/views/tabs/tab_unittest.cc
index 3bef479..b5a81c99 100644
--- a/chrome/browser/ui/views/tabs/tab_unittest.cc
+++ b/chrome/browser/ui/views/tabs/tab_unittest.cc
@@ -57,8 +57,8 @@
   void ToggleSelected(Tab* tab) override {}
   void AddSelectionFromAnchorTo(Tab* tab) override {}
   void CloseTab(Tab* tab, CloseTabSource source) override {}
-  void MoveTabRight(Tab* tab) override {}
-  void MoveTabLeft(Tab* tab) override {}
+  void ShiftTabRight(Tab* tab) override {}
+  void ShiftTabLeft(Tab* tab) override {}
   void MoveTabFirst(Tab* tab) override {}
   void MoveTabLast(Tab* tab) override {}
   void ShowContextMenuForTab(Tab* tab,
diff --git a/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc b/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc
index ce6ec37..03df777e 100644
--- a/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc
+++ b/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc
@@ -67,10 +67,16 @@
   waiter.Wait();
 }
 
-}  // namespace
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL FooUrl() {
+  return GURL("https://foo.example");
+}
+GURL BarUrl() {
+  return GURL("https://bar.example");
+}
 
-const GURL kFooUrl = GURL("https://foo.example");
-const GURL kBarUrl = GURL("https://bar.example");
+}  // namespace
 
 class WebAppUiManagerImplBrowserTest : public InProcessBrowserTest {
  protected:
@@ -97,7 +103,7 @@
   // Zero apps on start:
   EXPECT_EQ(0u, ui_manager().GetNumWindowsForApp(AppId()));
 
-  AppId foo_app_id = InstallWebApp(kFooUrl);
+  AppId foo_app_id = InstallWebApp(FooUrl());
   LaunchWebApp(foo_app_id);
   EXPECT_EQ(1u, ui_manager().GetNumWindowsForApp(foo_app_id));
 
@@ -107,11 +113,11 @@
 
 IN_PROC_BROWSER_TEST_F(WebAppUiManagerImplBrowserTest,
                        GetNumWindowsForApp_AppWindowsRemoved) {
-  AppId foo_app_id = InstallWebApp(kFooUrl);
+  AppId foo_app_id = InstallWebApp(FooUrl());
   auto* foo_window1 = LaunchWebApp(foo_app_id);
   auto* foo_window2 = LaunchWebApp(foo_app_id);
 
-  AppId bar_app_id = InstallWebApp(kBarUrl);
+  AppId bar_app_id = InstallWebApp(BarUrl());
   LaunchWebApp(bar_app_id);
 
   EXPECT_EQ(2u, ui_manager().GetNumWindowsForApp(foo_app_id));
@@ -130,8 +136,8 @@
 
 IN_PROC_BROWSER_TEST_F(WebAppUiManagerImplBrowserTest,
                        NotifyOnAllAppWindowsClosed_NoOpenedWindows) {
-  AppId foo_app_id = InstallWebApp(kFooUrl);
-  AppId bar_app_id = InstallWebApp(kBarUrl);
+  AppId foo_app_id = InstallWebApp(FooUrl());
+  AppId bar_app_id = InstallWebApp(BarUrl());
   LaunchWebApp(bar_app_id);
 
   base::RunLoop run_loop;
@@ -144,8 +150,8 @@
 // app window.
 IN_PROC_BROWSER_TEST_F(WebAppUiManagerImplBrowserTest,
                        NotifyOnAllAppWindowsClosed_MultipleOpenedWindows) {
-  AppId foo_app_id = InstallWebApp(kFooUrl);
-  AppId bar_app_id = InstallWebApp(kBarUrl);
+  AppId foo_app_id = InstallWebApp(FooUrl());
+  AppId bar_app_id = InstallWebApp(BarUrl());
 
   // Test that NotifyOnAllAppWindowsClosed can be called more than once for
   // the same app.
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 4c3586a..09cb31f 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,6 +5,7 @@
 #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"
@@ -58,8 +59,8 @@
 
   // Remove the black backdrop behind the dialog window which appears in tablet
   // and full-screen mode.
-  window->SetProperty(ash::kBackdropWindowMode,
-                      ash::BackdropWindowMode::kDisabled);
+  ash::WindowBackdrop::Get(window)->SetBackdropMode(
+      ash::WindowBackdrop::BackdropMode::kDisabled);
 }
 
 // static
diff --git a/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc b/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc
index d511af87..2a6460a 100644
--- a/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc
+++ b/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc
@@ -34,15 +34,15 @@
                         : feed_internals::mojom::Time::New(time.ToJsTime());
 }
 
-std::string TriggerTypeToString(feed::FeedSchedulerHost::TriggerType* trigger) {
+std::string TriggerTypeToString(feed::TriggerType* trigger) {
   if (trigger == nullptr)
     return "Not set";
   switch (*trigger) {
-    case feed::FeedSchedulerHost::TriggerType::kNtpShown:
+    case feed::TriggerType::kNtpShown:
       return "NTP Shown";
-    case feed::FeedSchedulerHost::TriggerType::kForegrounded:
+    case feed::TriggerType::kForegrounded:
       return "Foregrounded";
-    case feed::FeedSchedulerHost::TriggerType::kFixedTimer:
+    case feed::TriggerType::kFixedTimer:
       return "Fixed Timer";
   }
 }
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
index 42c7a310..282609d 100644
--- a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -1564,10 +1564,6 @@
 
 namespace {
 
-const GURL kAndroidUrl("https://android.com");
-const GURL kChromiumUrl("https://chromium.org");
-const GURL kGoogleUrl("https://google.com");
-
 constexpr char kUsbPolicySetting[] = R"(
     [
       {
@@ -1585,6 +1581,18 @@
       }
     ])";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL AndroidUrl() {
+  return GURL("https://android.com");
+}
+GURL ChromiumUrl() {
+  return GURL("https://chromium.org");
+}
+GURL GoogleUrl() {
+  return GURL("https://google.com");
+}
+
 }  // namespace
 
 class SiteSettingsHandlerChooserExceptionTest : public SiteSettingsHandlerTest {
@@ -1627,9 +1635,9 @@
         base::DoNothing::Once<std::vector<device::mojom::UsbDeviceInfoPtr>>());
     base::RunLoop().RunUntilIdle();
 
-    const auto kAndroidOrigin = url::Origin::Create(kAndroidUrl);
-    const auto kChromiumOrigin = url::Origin::Create(kChromiumUrl);
-    const auto kGoogleOrigin = url::Origin::Create(kGoogleUrl);
+    const auto kAndroidOrigin = url::Origin::Create(AndroidUrl());
+    const auto kChromiumOrigin = url::Origin::Create(ChromiumUrl());
+    const auto kGoogleOrigin = url::Origin::Create(GoogleUrl());
 
     // Add the user granted permissions for testing.
     // These two persistent device permissions should be lumped together with
@@ -1670,8 +1678,8 @@
         base::DoNothing::Once<std::vector<device::mojom::UsbDeviceInfoPtr>>());
     base::RunLoop().RunUntilIdle();
 
-    const auto kAndroidOrigin = url::Origin::Create(kAndroidUrl);
-    const auto kChromiumOrigin = url::Origin::Create(kChromiumUrl);
+    const auto kAndroidOrigin = url::Origin::Create(AndroidUrl());
+    const auto kChromiumOrigin = url::Origin::Create(ChromiumUrl());
     chooser_context->GrantDevicePermission(kChromiumOrigin, kAndroidOrigin,
                                            *off_the_record_device_);
 
@@ -1836,10 +1844,10 @@
   const std::string kUsbChooserGroupName =
       site_settings::ContentSettingsTypeToGroupName(
           ContentSettingsType::USB_CHOOSER_DATA);
-  const auto kAndroidOrigin = url::Origin::Create(kAndroidUrl);
-  const auto kChromiumOrigin = url::Origin::Create(kChromiumUrl);
-  const std::string kAndroidOriginStr = kAndroidUrl.GetOrigin().spec();
-  const std::string kChromiumOriginStr = kChromiumUrl.GetOrigin().spec();
+  const auto kAndroidOrigin = url::Origin::Create(AndroidUrl());
+  const auto kChromiumOrigin = url::Origin::Create(ChromiumUrl());
+  const std::string kAndroidOriginStr = AndroidUrl().GetOrigin().spec();
+  const std::string kChromiumOriginStr = ChromiumUrl().GetOrigin().spec();
 
   {
     const base::Value& exceptions = GetChooserExceptionListFromWebUiCallData(
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 7e3af1e..efd87ecb 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,6 +7,7 @@
 #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"
@@ -70,8 +71,8 @@
 
   // TODO(crbug.com/1016828): Remove/update this after the dialog behavior on
   // Chrome OS is defined.
-  dialog->dialog_window()->SetProperty(
-      ash::kBackdropWindowMode, ash::BackdropWindowMode::kAutoSemiOpaque);
+  ash::WindowBackdrop::Get(dialog->dialog_window())
+      ->SetBackdropType(ash::WindowBackdrop::BackdropType::kSemiOpaque);
 }
 
 void InlineLoginHandlerDialogChromeOS::AdjustWidgetInitParams(
diff --git a/chrome/browser/ui/webui/site_settings_helper_unittest.cc b/chrome/browser/ui/webui/site_settings_helper_unittest.cc
index f386d84..7f23d9b 100644
--- a/chrome/browser/ui/webui/site_settings_helper_unittest.cc
+++ b/chrome/browser/ui/webui/site_settings_helper_unittest.cc
@@ -236,9 +236,17 @@
 namespace {
 
 // Test GURLs
-const GURL kGoogleUrl("https://google.com");
-const GURL kChromiumUrl("https://chromium.org");
-const GURL kAndroidUrl("https://android.com");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL GoogleUrl() {
+  return GURL("https://google.com");
+}
+GURL ChromiumUrl() {
+  return GURL("https://chromium.org");
+}
+GURL AndroidUrl() {
+  return GURL("https://android.com");
+}
 
 void ExpectValidChooserExceptionObject(
     const base::Value& actual_exception_object,
@@ -331,8 +339,8 @@
 
   // Add a user permission for a requesting origin of |kGoogleOrigin| and an
   // embedding origin of |kChromiumOrigin|.
-  exception_details[std::make_pair(kGoogleUrl.GetOrigin(), kPreferenceSource)]
-      .insert(std::make_pair(kChromiumUrl.GetOrigin(), /*incognito=*/false));
+  exception_details[std::make_pair(GoogleUrl().GetOrigin(), kPreferenceSource)]
+      .insert(std::make_pair(ChromiumUrl().GetOrigin(), /*incognito=*/false));
 
   {
     auto exception = CreateChooserExceptionObject(
@@ -346,16 +354,16 @@
 
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ExpectValidSiteExceptionObject(/*actual_site_object=*/sites_list[0],
-                                   /*origin=*/kGoogleUrl,
-                                   /*embedding_origin=*/kChromiumUrl,
+                                   /*origin=*/GoogleUrl(),
+                                   /*embedding_origin=*/ChromiumUrl(),
                                    /*source=*/kPreferenceSource,
                                    /*incognito=*/false);
   }
 
   // Add a user permissions for a requesting and embedding origin pair of
   // |kAndroidOrigin| granted in an off the record profile.
-  exception_details[std::make_pair(kAndroidUrl.GetOrigin(), kPreferenceSource)]
-      .insert(std::make_pair(kAndroidUrl.GetOrigin(), /*incognito=*/true));
+  exception_details[std::make_pair(AndroidUrl().GetOrigin(), kPreferenceSource)]
+      .insert(std::make_pair(AndroidUrl().GetOrigin(), /*incognito=*/true));
 
   {
     auto exception = CreateChooserExceptionObject(
@@ -372,20 +380,20 @@
     // be first, followed by the origin pair (kGoogleOrigin, kChromiumOrigin).
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ExpectValidSiteExceptionObject(/*actual_site_object=*/sites_list[0],
-                                   /*origin=*/kAndroidUrl,
-                                   /*embedding_origin=*/kAndroidUrl,
+                                   /*origin=*/AndroidUrl(),
+                                   /*embedding_origin=*/AndroidUrl(),
                                    /*source=*/kPreferenceSource,
                                    /*incognito=*/true);
     ExpectValidSiteExceptionObject(/*actual_site_object=*/sites_list[1],
-                                   /*origin=*/kGoogleUrl,
-                                   /*embedding_origin=*/kChromiumUrl,
+                                   /*origin=*/GoogleUrl(),
+                                   /*embedding_origin=*/ChromiumUrl(),
                                    /*source=*/kPreferenceSource,
                                    /*incognito=*/false);
   }
 
   // Add a policy permission for a requesting origin of |kGoogleOrigin| with a
   // wildcard embedding origin.
-  exception_details[std::make_pair(kGoogleUrl.GetOrigin(), kPolicySource)]
+  exception_details[std::make_pair(GoogleUrl().GetOrigin(), kPolicySource)]
       .insert(std::make_pair(GURL::EmptyGURL(), /*incognito=*/false));
   {
     auto exception = CreateChooserExceptionObject(
@@ -404,18 +412,18 @@
     // sites.
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ExpectValidSiteExceptionObject(/*actual_site_object=*/sites_list[0],
-                                   /*origin=*/kGoogleUrl,
+                                   /*origin=*/GoogleUrl(),
                                    /*embedding_origin=*/GURL::EmptyGURL(),
                                    /*source=*/kPolicySource,
                                    /*incognito=*/false);
     ExpectValidSiteExceptionObject(/*actual_site_object=*/sites_list[1],
-                                   /*origin=*/kAndroidUrl,
-                                   /*embedding_origin=*/kAndroidUrl,
+                                   /*origin=*/AndroidUrl(),
+                                   /*embedding_origin=*/AndroidUrl(),
                                    /*source=*/kPreferenceSource,
                                    /*incognito=*/true);
     ExpectValidSiteExceptionObject(/*actual_site_object=*/sites_list[2],
-                                   /*origin=*/kGoogleUrl,
-                                   /*embedding_origin=*/kChromiumUrl,
+                                   /*origin=*/GoogleUrl(),
+                                   /*embedding_origin=*/ChromiumUrl(),
                                    /*source=*/kPreferenceSource,
                                    /*incognito=*/false);
   }
@@ -466,9 +474,9 @@
         base::DoNothing::Once<std::vector<device::mojom::UsbDeviceInfoPtr>>());
     base::RunLoop().RunUntilIdle();
 
-    const auto kAndroidOrigin = url::Origin::Create(kAndroidUrl);
-    const auto kChromiumOrigin = url::Origin::Create(kChromiumUrl);
-    const auto kGoogleOrigin = url::Origin::Create(kGoogleUrl);
+    const auto kAndroidOrigin = url::Origin::Create(AndroidUrl());
+    const auto kChromiumOrigin = url::Origin::Create(ChromiumUrl());
+    const auto kGoogleOrigin = url::Origin::Create(GoogleUrl());
 
     // Add the user granted permissions for testing.
     // These two persistent device permissions should be lumped together with
@@ -540,8 +548,8 @@
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ASSERT_EQ(sites_list.size(), 1u);
     ExpectValidSiteExceptionObject(sites_list[0],
-                                   /*origin=*/kGoogleUrl,
-                                   /*embedding_origin=*/kAndroidUrl,
+                                   /*origin=*/GoogleUrl(),
+                                   /*embedding_origin=*/AndroidUrl(),
                                    /*source=*/kPolicySource,
                                    /*incognito=*/false);
   }
@@ -558,8 +566,8 @@
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ASSERT_EQ(sites_list.size(), 1u);
     ExpectValidSiteExceptionObject(sites_list[0],
-                                   /*origin=*/kGoogleUrl,
-                                   /*embedding_origin=*/kGoogleUrl,
+                                   /*origin=*/GoogleUrl(),
+                                   /*embedding_origin=*/GoogleUrl(),
                                    /*source=*/kPolicySource,
                                    /*incognito=*/false);
   }
@@ -577,7 +585,7 @@
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ASSERT_EQ(sites_list.size(), 1u);
     ExpectValidSiteExceptionObject(sites_list[0],
-                                   /*origin=*/kAndroidUrl,
+                                   /*origin=*/AndroidUrl(),
                                    /*source=*/kPolicySource,
                                    /*incognito=*/false);
   }
@@ -602,12 +610,12 @@
     const auto& sites_list = exception.FindKey(kSites)->GetList();
     ASSERT_EQ(sites_list.size(), 2u);
     ExpectValidSiteExceptionObject(sites_list[0],
-                                   /*origin=*/kChromiumUrl,
+                                   /*origin=*/ChromiumUrl(),
                                    /*source=*/kPolicySource,
                                    /*incognito=*/false);
     ExpectValidSiteExceptionObject(sites_list[1],
-                                   /*origin=*/kAndroidUrl,
-                                   /*embedding_origin=*/kChromiumUrl,
+                                   /*origin=*/AndroidUrl(),
+                                   /*embedding_origin=*/ChromiumUrl(),
                                    /*source=*/kPreferenceSource,
                                    /*incognito=*/false);
   }
diff --git a/chrome/browser/updates/announcement_notification/BUILD.gn b/chrome/browser/updates/announcement_notification/BUILD.gn
new file mode 100644
index 0000000..c22b83ca
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/BUILD.gn
@@ -0,0 +1,32 @@
+# 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.
+
+source_set("announcement_notification") {
+  sources = [
+    "announcement_notification_delegate.cc",
+    "announcement_notification_delegate.h",
+    "announcement_notification_service.cc",
+    "announcement_notification_service.h",
+    "announcement_notification_service_factory.cc",
+    "announcement_notification_service_factory.h",
+    "empty_announcement_notification_service.cc",
+    "empty_announcement_notification_service.h",
+  ]
+
+  deps = [
+    "//base",
+    "//components/keyed_service/content",
+  ]
+}
+
+source_set("unit_tests") {
+  testonly = true
+  sources = [ "announcement_notification_service_unittest.cc" ]
+
+  deps = [
+    ":announcement_notification",
+    "//testing/gmock",
+    "//testing/gtest",
+  ]
+}
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_delegate.cc b/chrome/browser/updates/announcement_notification/announcement_notification_delegate.cc
new file mode 100644
index 0000000..8676555
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_delegate.cc
@@ -0,0 +1,20 @@
+// 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/updates/announcement_notification/announcement_notification_delegate.h"
+
+#include "base/logging.h"
+
+AnnouncementNotificationDelegate::AnnouncementNotificationDelegate() = default;
+
+AnnouncementNotificationDelegate::~AnnouncementNotificationDelegate() = default;
+
+void AnnouncementNotificationDelegate::ShowNotification() {
+  NOTIMPLEMENTED();
+}
+
+bool AnnouncementNotificationDelegate::IsFirstRun() {
+  NOTIMPLEMENTED();
+  return false;
+}
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_delegate.h b/chrome/browser/updates/announcement_notification/announcement_notification_delegate.h
new file mode 100644
index 0000000..c2e41f9
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_delegate.h
@@ -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.
+
+#ifndef CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_DELEGATE_H_
+#define CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_DELEGATE_H_
+
+#include <memory>
+#include <string>
+
+#include "base/macros.h"
+#include "chrome/browser/updates/announcement_notification/announcement_notification_service.h"
+
+// Default delegate for AnnouncementNotificationService that works on
+// non-Android platforms.
+class AnnouncementNotificationDelegate
+    : public AnnouncementNotificationService::Delegate {
+ public:
+  AnnouncementNotificationDelegate();
+  ~AnnouncementNotificationDelegate() override;
+
+ private:
+  // AnnouncementNotificationService::Delegate implementation.
+  void ShowNotification() override;
+  bool IsFirstRun() override;
+
+  DISALLOW_COPY_AND_ASSIGN(AnnouncementNotificationDelegate);
+};
+
+#endif  // CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_DELEGATE_H_
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_service.cc b/chrome/browser/updates/announcement_notification/announcement_notification_service.cc
new file mode 100644
index 0000000..f05962e7
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_service.cc
@@ -0,0 +1,129 @@
+// 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/updates/announcement_notification/announcement_notification_service.h"
+
+#include "base/bind.h"
+#include "base/metrics/field_trial_params.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/prefs/pref_service.h"
+
+namespace {
+
+// Default value for Finch parameter |kVersion|.
+const int kInvalidVersion = -1;
+
+}  // namespace
+
+class AnnouncementNotificationServiceImpl
+    : public AnnouncementNotificationService {
+ public:
+  AnnouncementNotificationServiceImpl(PrefService* pref_service,
+                                      std::unique_ptr<Delegate> delegate)
+      : pref_service_(pref_service),
+        delegate_(std::move(delegate)),
+        skip_first_run_(true),
+        skip_display_(false),
+        remote_version_(kInvalidVersion) {
+    if (!IsFeatureEnabled())
+      return;
+
+    DCHECK(delegate_);
+
+    // By default do nothing in first run.
+    skip_first_run_ = base::GetFieldTrialParamByFeatureAsBool(
+        kAnnouncementNotification, kSkipFirstRun, true);
+    skip_display_ = base::GetFieldTrialParamByFeatureAsBool(
+        kAnnouncementNotification, kSkipDisplay, false);
+    remote_version_ = base::GetFieldTrialParamByFeatureAsInt(
+        kAnnouncementNotification, kVersion, kInvalidVersion);
+  }
+
+  ~AnnouncementNotificationServiceImpl() override = default;
+
+ private:
+  // AnnouncementNotificationService implementation.
+  void MaybeShowNotification() override {
+    if (!IsFeatureEnabled())
+      return;
+
+    // No valid version Finch parameter.
+    if (!IsVersionValid(remote_version_))
+      return;
+
+    int current_version = pref_service_->GetInteger(kCurrentVersionPrefName);
+    pref_service_->SetInteger(kCurrentVersionPrefName, remote_version_);
+
+    if (remote_version_ > current_version) {
+      OnNewVersion();
+    }
+  }
+
+  bool IsFeatureEnabled() const {
+    return base::FeatureList::IsEnabled(kAnnouncementNotification);
+  }
+
+  bool IsVersionValid(int version) const { return version >= 0; }
+
+  void OnFirstRun() {
+    if (skip_first_run_)
+      return;
+    ShowNotification();
+  }
+
+  void OnNewVersion() {
+    // Skip first run if needed.
+    if (delegate_->IsFirstRun() && skip_first_run_)
+      return;
+
+    ShowNotification();
+  }
+
+  void ShowNotification() {
+    if (skip_display_)
+      return;
+
+    delegate_->ShowNotification();
+  }
+
+  PrefService* pref_service_;
+  std::unique_ptr<Delegate> delegate_;
+
+  // Whether to skip first Chrome launch. Parsed from Finch.
+  bool skip_first_run_;
+
+  // Don't show notification if true. Parsed from Finch.
+  bool skip_display_;
+
+  // The new notification version. Parsed from Finch.
+  int remote_version_;
+
+  base::WeakPtrFactory<AnnouncementNotificationServiceImpl> weak_ptr_factory_{
+      this};
+
+  DISALLOW_COPY_AND_ASSIGN(AnnouncementNotificationServiceImpl);
+};
+
+const base::Feature kAnnouncementNotification{
+    "AnnouncementNotificationService", base::FEATURE_DISABLED_BY_DEFAULT};
+
+// static
+void AnnouncementNotificationService::RegisterProfilePrefs(
+    PrefRegistrySimple* registry) {
+  DCHECK(registry);
+  registry->RegisterIntegerPref(kCurrentVersionPrefName, kInvalidVersion);
+}
+
+// static
+AnnouncementNotificationService* AnnouncementNotificationService::Create(
+    PrefService* pref_service,
+    std::unique_ptr<Delegate> delegate) {
+  return new AnnouncementNotificationServiceImpl(pref_service,
+                                                 std::move(delegate));
+}
+
+AnnouncementNotificationService::AnnouncementNotificationService() = default;
+
+AnnouncementNotificationService::~AnnouncementNotificationService() = default;
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_service.h b/chrome/browser/updates/announcement_notification/announcement_notification_service.h
new file mode 100644
index 0000000..49f8a2b
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_service.h
@@ -0,0 +1,72 @@
+// 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_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_SERVICE_H_
+#define CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_SERVICE_H_
+
+#include <memory>
+#include <string>
+
+#include "base/feature_list.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/optional.h"
+#include "components/keyed_service/core/keyed_service.h"
+
+class PrefRegistrySimple;
+class PrefService;
+
+// Whether to enable announcement notification system.
+extern const base::Feature kAnnouncementNotification;
+
+// The Finch parameter name for a boolean value that whether to show
+// notification on first run.
+constexpr char kSkipFirstRun[] = "skip_first_run";
+
+// The Finch parameter to control whether to skip notification display.
+constexpr char kSkipDisplay[] = "skip_display";
+
+// The Finch parameter to define the latest version number of the notification.
+constexpr char kVersion[] = "version";
+
+// Preference name to persist the current version sent from Finch parameter.
+constexpr char kCurrentVersionPrefName[] =
+    "announcement_notification_service_current_version";
+
+// Used to show a notification when the version defined in Finch parameter is
+// higher than the last version saved in the preference service.
+class AnnouncementNotificationService : public KeyedService {
+ public:
+  class Delegate {
+   public:
+    Delegate() = default;
+    virtual ~Delegate() = default;
+
+    // Show notification.
+    virtual void ShowNotification() = 0;
+
+    // Is Chrome first time to run.
+    virtual bool IsFirstRun() = 0;
+
+   private:
+    DISALLOW_COPY_AND_ASSIGN(Delegate);
+  };
+
+  static void RegisterProfilePrefs(PrefRegistrySimple* registry);
+  static AnnouncementNotificationService* Create(
+      PrefService* pref_service,
+      std::unique_ptr<Delegate> delegate);
+
+  AnnouncementNotificationService();
+  ~AnnouncementNotificationService() override;
+
+  // Show notification if needed based on a version number in Finch parameters
+  // and the version cached in PrefService.
+  virtual void MaybeShowNotification() = 0;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(AnnouncementNotificationService);
+};
+
+#endif  // CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_SERVICE_H_
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_service_factory.cc b/chrome/browser/updates/announcement_notification/announcement_notification_service_factory.cc
new file mode 100644
index 0000000..1d65dd53
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_service_factory.cc
@@ -0,0 +1,53 @@
+// 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/updates/announcement_notification/announcement_notification_service_factory.h"
+
+#include <memory>
+
+#include "chrome/browser/profiles/incognito_helpers.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/updates/announcement_notification/announcement_notification_delegate.h"
+#include "chrome/browser/updates/announcement_notification/announcement_notification_service.h"
+#include "chrome/browser/updates/announcement_notification/empty_announcement_notification_service.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+
+// static
+AnnouncementNotificationServiceFactory*
+AnnouncementNotificationServiceFactory::GetInstance() {
+  static base::NoDestructor<AnnouncementNotificationServiceFactory> instance;
+  return instance.get();
+}
+
+// static
+AnnouncementNotificationService*
+AnnouncementNotificationServiceFactory::GetForProfile(Profile* profile) {
+  return static_cast<AnnouncementNotificationService*>(
+      GetInstance()->GetServiceForBrowserContext(profile, true /* create */));
+}
+
+KeyedService* AnnouncementNotificationServiceFactory::BuildServiceInstanceFor(
+    content::BrowserContext* context) const {
+  if (context->IsOffTheRecord()) {
+    return new EmptyAnnouncementNotificationService();
+  }
+
+  PrefService* pref = Profile::FromBrowserContext(context)->GetPrefs();
+  return AnnouncementNotificationService::Create(
+      pref, std::make_unique<AnnouncementNotificationDelegate>());
+}
+
+content::BrowserContext*
+AnnouncementNotificationServiceFactory::GetBrowserContextToUse(
+    content::BrowserContext* context) const {
+  return chrome::GetBrowserContextOwnInstanceInIncognito(context);
+}
+
+AnnouncementNotificationServiceFactory::AnnouncementNotificationServiceFactory()
+    : BrowserContextKeyedServiceFactory(
+          "AnnouncementNotificationService",
+          BrowserContextDependencyManager::GetInstance()) {}
+
+AnnouncementNotificationServiceFactory::
+    ~AnnouncementNotificationServiceFactory() = default;
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_service_factory.h b/chrome/browser/updates/announcement_notification/announcement_notification_service_factory.h
new file mode 100644
index 0000000..aba902ea
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_service_factory.h
@@ -0,0 +1,37 @@
+// 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_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_SERVICE_FACTORY_H_
+#define CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_SERVICE_FACTORY_H_
+
+#include "base/macros.h"
+#include "base/no_destructor.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+
+class AnnouncementNotificationService;
+class Profile;
+
+// Factory to create FastTrackNotificationService.
+class AnnouncementNotificationServiceFactory
+    : public BrowserContextKeyedServiceFactory {
+ public:
+  static AnnouncementNotificationServiceFactory* GetInstance();
+  static AnnouncementNotificationService* GetForProfile(Profile* profile);
+
+ private:
+  friend class base::NoDestructor<AnnouncementNotificationServiceFactory>;
+
+  // BrowserContextKeyedServiceFactory implementation.
+  KeyedService* BuildServiceInstanceFor(
+      content::BrowserContext* context) const override;
+  content::BrowserContext* GetBrowserContextToUse(
+      content::BrowserContext* context) const override;
+
+  AnnouncementNotificationServiceFactory();
+  ~AnnouncementNotificationServiceFactory() override;
+
+  DISALLOW_COPY_AND_ASSIGN(AnnouncementNotificationServiceFactory);
+};
+
+#endif  // CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_ANNOUNCEMENT_NOTIFICATION_SERVICE_FACTORY_H_
diff --git a/chrome/browser/updates/announcement_notification/announcement_notification_service_unittest.cc b/chrome/browser/updates/announcement_notification/announcement_notification_service_unittest.cc
new file mode 100644
index 0000000..568f4fd
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/announcement_notification_service_unittest.cc
@@ -0,0 +1,145 @@
+// 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/updates/announcement_notification/announcement_notification_service.h"
+
+#include <memory>
+
+#include "base/memory/ptr_util.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/test/scoped_feature_list.h"
+#include "base/test/task_environment.h"
+#include "components/prefs/testing_pref_service.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::_;
+using testing::NiceMock;
+using testing::Return;
+
+namespace {
+
+class MockDelegate : public AnnouncementNotificationService::Delegate {
+ public:
+  MockDelegate() = default;
+  ~MockDelegate() override = default;
+  MOCK_METHOD0(ShowNotification, void());
+  MOCK_METHOD0(IsFirstRun, bool());
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockDelegate);
+};
+
+class AnnouncementNotificationServiceTest : public testing::Test {
+ public:
+  AnnouncementNotificationServiceTest() = default;
+  ~AnnouncementNotificationServiceTest() override = default;
+
+ protected:
+  AnnouncementNotificationService* service() {
+    DCHECK(service_) << "Call Init() first.";
+    return service_.get();
+  }
+
+  MockDelegate* delegate() { return delegate_; }
+
+  int CurrentVersionPref() {
+    return pref_service_->GetInteger(kCurrentVersionPrefName);
+  }
+
+  void Init(bool enable_feature,
+            bool skip_first_run,
+            int version,
+            int current_version) {
+    // Setup Finch config.
+    std::map<std::string, std::string> parameters = {
+        {kSkipFirstRun, skip_first_run ? "true" : "false"},
+        {kVersion, base::NumberToString(version)}};
+    if (enable_feature) {
+      scoped_feature_list_.InitAndEnableFeatureWithParameters(
+          kAnnouncementNotification, parameters);
+    } else {
+      scoped_feature_list_.InitAndDisableFeature(kAnnouncementNotification);
+    }
+
+    // Register pref.
+    pref_service_ = std::make_unique<TestingPrefServiceSimple>();
+    AnnouncementNotificationService::RegisterProfilePrefs(
+        pref_service_->registry());
+    pref_service_->SetInteger(kCurrentVersionPrefName, current_version);
+
+    // Setup test target objects.
+    auto delegate = std::make_unique<NiceMock<MockDelegate>>();
+    delegate_ = delegate.get();
+    service_ = base::WrapUnique<AnnouncementNotificationService>(
+        AnnouncementNotificationService::Create(pref_service_.get(),
+                                                std::move(delegate)));
+  }
+
+ private:
+  base::test::TaskEnvironment task_environment_;
+  base::test::ScopedFeatureList scoped_feature_list_;
+  std::unique_ptr<AnnouncementNotificationService> service_;
+  std::unique_ptr<TestingPrefServiceSimple> pref_service_;
+  MockDelegate* delegate_ = nullptr;
+  DISALLOW_COPY_AND_ASSIGN(AnnouncementNotificationServiceTest);
+};
+
+struct VersionTestParam {
+  bool enable_feature;
+  bool skip_first_run;
+  bool is_first_run;
+  int version;
+  int current_version;
+  bool show_notification_called;
+  int expected_version_pref;
+};
+
+class AnnouncementNotificationServiceVersionTest
+    : public AnnouncementNotificationServiceTest,
+      public ::testing::WithParamInterface<VersionTestParam> {
+ public:
+  AnnouncementNotificationServiceVersionTest() = default;
+  ~AnnouncementNotificationServiceVersionTest() override = default;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(AnnouncementNotificationServiceVersionTest);
+};
+
+const VersionTestParam kVersionTestParams[] = {
+    // First run. No current version in pref, has Finch parameter.
+    {true, false /*skip_first_run*/, true /*is_first_run*/, 1, -1, true, 1},
+    // Skip first run.
+    {true, true /*skip_first_run*/, true /*is_first_run*/, 2, -1, false, 2},
+    {true, true /*skip_first_run*/, false /*is_first_run*/, 2, -1, true, 2},
+    // DisableFeature
+    {false /*enable_feature*/, false, false, 1, -1, false, -1},
+    // Same version between Finch parameter and preference.
+    {true, false, false, 3 /*version*/, 3 /*current_version*/, false, 3},
+    // New version from Finch parameter.
+    {true, false, false, 4 /*version*/, 3 /*current_version*/, true, 4},
+    // OldVersion
+    {true, false, false, 2 /*version*/, 3 /*current_version*/, false, 2},
+    // No current version in pref, no Finch parameter.
+    {true, false, false, -1 /*version*/, -1 /*current_version*/, false, -1},
+    // Has current version in pref, no Finch parameter.
+    {true, false, false, -1 /*version*/, 10 /*current_version*/, false, 10},
+};
+
+TEST_P(AnnouncementNotificationServiceVersionTest, VersionTest) {
+  const auto& param = GetParam();
+  Init(param.enable_feature, param.skip_first_run, param.version,
+       param.current_version);
+  ON_CALL(*delegate(), IsFirstRun()).WillByDefault(Return(param.is_first_run));
+  EXPECT_CALL(*delegate(), ShowNotification())
+      .Times(param.show_notification_called ? 1 : 0);
+  service()->MaybeShowNotification();
+  EXPECT_EQ(CurrentVersionPref(), param.expected_version_pref);
+}
+
+INSTANTIATE_TEST_SUITE_P(All,
+                         AnnouncementNotificationServiceVersionTest,
+                         testing::ValuesIn(kVersionTestParams));
+
+}  // namespace
diff --git a/chrome/browser/updates/announcement_notification/empty_announcement_notification_service.cc b/chrome/browser/updates/announcement_notification/empty_announcement_notification_service.cc
new file mode 100644
index 0000000..07bb4404
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/empty_announcement_notification_service.cc
@@ -0,0 +1,15 @@
+// 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/updates/announcement_notification/empty_announcement_notification_service.h"
+
+EmptyAnnouncementNotificationService::EmptyAnnouncementNotificationService() =
+    default;
+
+EmptyAnnouncementNotificationService::~EmptyAnnouncementNotificationService() =
+    default;
+
+void EmptyAnnouncementNotificationService::MaybeShowNotification() {
+  // Do nothing.
+}
diff --git a/chrome/browser/updates/announcement_notification/empty_announcement_notification_service.h b/chrome/browser/updates/announcement_notification/empty_announcement_notification_service.h
new file mode 100644
index 0000000..f21ce13a
--- /dev/null
+++ b/chrome/browser/updates/announcement_notification/empty_announcement_notification_service.h
@@ -0,0 +1,25 @@
+// 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_UPDATES_ANNOUNCEMENT_NOTIFICATION_EMPTY_ANNOUNCEMENT_NOTIFICATION_SERVICE_H_
+#define CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_EMPTY_ANNOUNCEMENT_NOTIFICATION_SERVICE_H_
+
+#include "base/macros.h"
+#include "chrome/browser/updates/announcement_notification/announcement_notification_service.h"
+
+// Dummy AnnouncementNotificationService that does nothing.
+class EmptyAnnouncementNotificationService
+    : public AnnouncementNotificationService {
+ public:
+  EmptyAnnouncementNotificationService();
+  ~EmptyAnnouncementNotificationService() override;
+
+ private:
+  // AnnouncementNotificationService overrides.
+  void MaybeShowNotification() override;
+
+  DISALLOW_COPY_AND_ASSIGN(EmptyAnnouncementNotificationService);
+};
+
+#endif  // CHROME_BROWSER_UPDATES_ANNOUNCEMENT_NOTIFICATION_EMPTY_ANNOUNCEMENT_NOTIFICATION_SERVICE_H_
diff --git a/chrome/browser/usb/usb_chooser_context_unittest.cc b/chrome/browser/usb/usb_chooser_context_unittest.cc
index 56b9b968..7d586a4 100644
--- a/chrome/browser/usb/usb_chooser_context_unittest.cc
+++ b/chrome/browser/usb/usb_chooser_context_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind_helpers.h"
 #include "base/json/json_reader.h"
+#include "base/no_destructor.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
@@ -415,13 +416,6 @@
 
 namespace {
 
-// Test URLs
-const GURL kAnyDeviceUrl("https://anydevice.com");
-const GURL kVendorUrl("https://vendor.com");
-const GURL kProductVendorUrl("https://product.vendor.com");
-const GURL kGadgetUrl("https://gadget.com");
-const GURL kCoolUrl("https://cool.com");
-
 constexpr char kPolicySetting[] = R"(
     [
       {
@@ -439,14 +433,37 @@
       }
     ])";
 
-const GURL kPolicyOrigins[] = {kProductVendorUrl, kVendorUrl, kAnyDeviceUrl,
-                               kGadgetUrl, kCoolUrl};
+// Test URLs
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL AnyDeviceUrl() {
+  return GURL("https://anydevice.com");
+}
+GURL VendorUrl() {
+  return GURL("https://vendor.com");
+}
+GURL ProductVendorUrl() {
+  return GURL("https://product.vendor.com");
+}
+GURL GadgetUrl() {
+  return GURL("https://gadget.com");
+}
+GURL CoolUrl() {
+  return GURL("https://cool.com");
+}
+
+const std::vector<GURL>& PolicyOrigins() {
+  static base::NoDestructor<std::vector<GURL>> origins{
+      {ProductVendorUrl(), VendorUrl(), AnyDeviceUrl(), GadgetUrl(),
+       CoolUrl()}};
+  return *origins;
+}
 
 void ExpectNoPermissions(UsbChooserContext* store,
                          const device::mojom::UsbDeviceInfo& device_info) {
-  for (const auto& requesting_origin_url : kPolicyOrigins) {
+  for (const auto& requesting_origin_url : PolicyOrigins()) {
     const auto requesting_origin = url::Origin::Create(requesting_origin_url);
-    for (const auto& embedding_origin : kPolicyOrigins) {
+    for (const auto& embedding_origin : PolicyOrigins()) {
       EXPECT_FALSE(store->HasDevicePermission(
           requesting_origin, url::Origin::Create(embedding_origin),
           device_info));
@@ -461,7 +478,7 @@
     const device::mojom::UsbDeviceInfo& device_info) {
   // Ensure that only |kValidRequestingOrigin| as the requesting origin has
   // permission to access the device described by |device_info|.
-  for (const auto& embedding_origin_url : kPolicyOrigins) {
+  for (const auto& embedding_origin_url : PolicyOrigins()) {
     const auto embedding_origin = url::Origin::Create(embedding_origin_url);
     for (const auto& valid_requesting_origin : kValidRequestingOrigins) {
       EXPECT_TRUE(store->HasDevicePermission(
@@ -481,9 +498,9 @@
 
 TEST_F(UsbChooserContextTest,
        UsbAllowDevicesForUrlsPermissionForSpecificDevice) {
-  const std::vector<GURL> kValidRequestingOrigins = {kProductVendorUrl,
-                                                     kVendorUrl, kAnyDeviceUrl};
-  const std::vector<GURL> kInvalidRequestingOrigins = {kGadgetUrl, kCoolUrl};
+  const std::vector<GURL> kValidRequestingOrigins = {
+      ProductVendorUrl(), VendorUrl(), AnyDeviceUrl()};
+  const std::vector<GURL> kInvalidRequestingOrigins = {GadgetUrl(), CoolUrl()};
 
   UsbDeviceInfoPtr specific_device_info = device_manager_.CreateAndAddDevice(
       6353, 5678, "Google", "Gizmo", "ABC123");
@@ -501,9 +518,10 @@
 
 TEST_F(UsbChooserContextTest,
        UsbAllowDevicesForUrlsPermissionForVendorRelatedDevice) {
-  const std::vector<GURL> kValidRequestingOrigins = {kVendorUrl, kAnyDeviceUrl};
-  const std::vector<GURL> kInvalidRequestingOrigins = {kProductVendorUrl,
-                                                       kGadgetUrl, kCoolUrl};
+  const std::vector<GURL> kValidRequestingOrigins = {VendorUrl(),
+                                                     AnyDeviceUrl()};
+  const std::vector<GURL> kInvalidRequestingOrigins = {ProductVendorUrl(),
+                                                       GadgetUrl(), CoolUrl()};
 
   UsbDeviceInfoPtr vendor_related_device_info =
       device_manager_.CreateAndAddDevice(6353, 8765, "Google", "Widget",
@@ -523,10 +541,10 @@
 
 TEST_F(UsbChooserContextTest,
        UsbAllowDevicesForUrlsPermissionForUnrelatedDevice) {
-  const std::vector<GURL> kValidRequestingOrigins = {kAnyDeviceUrl};
-  const std::vector<GURL> kInvalidRequestingOrigins = {kProductVendorUrl,
-                                                       kVendorUrl, kCoolUrl};
-  const auto kGadgetOrigin = url::Origin::Create(kGadgetUrl);
+  const std::vector<GURL> kValidRequestingOrigins = {AnyDeviceUrl()};
+  const std::vector<GURL> kInvalidRequestingOrigins = {ProductVendorUrl(),
+                                                       VendorUrl(), CoolUrl()};
+  const auto kGadgetOrigin = url::Origin::Create(GadgetUrl());
   const auto kCoolOrigin = url::Origin::Create(kInvalidRequestingOrigins[2]);
 
   UsbDeviceInfoPtr unrelated_device_info = device_manager_.CreateAndAddDevice(
@@ -541,7 +559,7 @@
 
   EXPECT_TRUE(store->HasDevicePermission(kGadgetOrigin, kCoolOrigin,
                                          *unrelated_device_info));
-  for (const auto& embedding_origin_url : kPolicyOrigins) {
+  for (const auto& embedding_origin_url : PolicyOrigins()) {
     const auto embedding_origin = url::Origin::Create(embedding_origin_url);
     if (embedding_origin != kCoolOrigin) {
       EXPECT_FALSE(store->HasDevicePermission(kGadgetOrigin, embedding_origin,
@@ -554,9 +572,9 @@
 
 TEST_F(UsbChooserContextTest,
        UsbAllowDevicesForUrlsPermissionOverrulesUsbGuardPermission) {
-  const auto kProductVendorOrigin = url::Origin::Create(kProductVendorUrl);
-  const auto kGadgetOrigin = url::Origin::Create(kGadgetUrl);
-  const auto kCoolOrigin = url::Origin::Create(kCoolUrl);
+  const auto kProductVendorOrigin = url::Origin::Create(ProductVendorUrl());
+  const auto kGadgetOrigin = url::Origin::Create(GadgetUrl());
+  const auto kCoolOrigin = url::Origin::Create(CoolUrl());
 
   UsbDeviceInfoPtr specific_device_info = device_manager_.CreateAndAddDevice(
       6353, 5678, "Google", "Gizmo", "ABC123");
@@ -569,10 +587,10 @@
   ExpectNoPermissions(store, *unrelated_device_info);
 
   auto* map = HostContentSettingsMapFactory::GetForProfile(profile());
-  map->SetContentSettingDefaultScope(kProductVendorUrl, kProductVendorUrl,
+  map->SetContentSettingDefaultScope(ProductVendorUrl(), ProductVendorUrl(),
                                      ContentSettingsType::USB_GUARD,
                                      std::string(), CONTENT_SETTING_BLOCK);
-  map->SetContentSettingDefaultScope(kGadgetUrl, kCoolUrl,
+  map->SetContentSettingDefaultScope(GadgetUrl(), CoolUrl(),
                                      ContentSettingsType::USB_GUARD,
                                      std::string(), CONTENT_SETTING_BLOCK);
   EXPECT_FALSE(store->HasDevicePermission(
@@ -619,9 +637,9 @@
 
 TEST_F(DeviceLoginScreenWebUsbChooserContextTest,
        UserUsbChooserContextOnlyUsesUserPolicy) {
-  const std::vector<GURL> kValidRequestingOrigins = {kProductVendorUrl,
-                                                     kVendorUrl, kAnyDeviceUrl};
-  const std::vector<GURL> kInvalidRequestingOrigins = {kGadgetUrl, kCoolUrl};
+  const std::vector<GURL> kValidRequestingOrigins = {
+      ProductVendorUrl(), VendorUrl(), AnyDeviceUrl()};
+  const std::vector<GURL> kInvalidRequestingOrigins = {GadgetUrl(), CoolUrl()};
 
   UsbDeviceInfoPtr specific_device_info = device_manager_.CreateAndAddDevice(
       6353, 5678, "Google", "Gizmo", "ABC123");
@@ -646,9 +664,9 @@
 
 TEST_F(DeviceLoginScreenWebUsbChooserContextTest,
        SigninUsbChooserContextOnlyUsesDevicePolicy) {
-  const std::vector<GURL> kValidRequestingOrigins = {kProductVendorUrl,
-                                                     kVendorUrl, kAnyDeviceUrl};
-  const std::vector<GURL> kInvalidRequestingOrigins = {kGadgetUrl, kCoolUrl};
+  const std::vector<GURL> kValidRequestingOrigins = {
+      ProductVendorUrl(), VendorUrl(), AnyDeviceUrl()};
+  const std::vector<GURL> kInvalidRequestingOrigins = {GadgetUrl(), CoolUrl()};
 
   UsbDeviceInfoPtr specific_device_info = device_manager_.CreateAndAddDevice(
       6353, 5678, "Google", "Gizmo", "ABC123");
@@ -727,12 +745,12 @@
   profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
                              *base::JSONReader::ReadDeprecated(kPolicySetting));
 
-  const auto kVendorOrigin = url::Origin::Create(kVendorUrl);
+  const auto kVendorOrigin = url::Origin::Create(VendorUrl());
   auto objects = store->GetGrantedObjects(kVendorOrigin, kVendorOrigin);
   ASSERT_EQ(objects.size(), 1u);
 
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
@@ -752,7 +770,7 @@
 
   auto* store = GetChooserContext(profile());
 
-  const auto kVendorOrigin = url::Origin::Create(kVendorUrl);
+  const auto kVendorOrigin = url::Origin::Create(VendorUrl());
   store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
                                *persistent_device_info);
   store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
@@ -768,23 +786,23 @@
   // (vendor_id, product_id) representing the device IDs.  Wildcard IDs are
   // represented by a value of -1, so they appear first.
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kVendorUrl,
-                          /*embedding_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
+                          /*embedding_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_USER,
                           /*incognito=*/false,
                           /*vendor_id=*/1000,
                           /*product_id=*/1,
                           /*name=*/"Gizmo");
   ExpectChooserObjectInfo(objects[1].get(),
-                          /*requesting_origin=*/kVendorUrl,
-                          /*embedding_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
+                          /*embedding_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_USER,
                           /*incognito=*/false,
                           /*vendor_id=*/1000,
                           /*product_id=*/2,
                           /*name=*/"Gadget");
   ExpectChooserObjectInfo(objects[2].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
@@ -801,7 +819,7 @@
       6353, 5678, "Google", "Gizmo", "123ABC");
 
   auto* store = GetChooserContext(profile());
-  const auto kProductVendorOrigin = url::Origin::Create(kProductVendorUrl);
+  const auto kProductVendorOrigin = url::Origin::Create(ProductVendorUrl());
   store->GrantDevicePermission(kProductVendorOrigin, kProductVendorOrigin,
                                *persistent_device_info);
 
@@ -813,7 +831,7 @@
   // device policy will be replaced by the policy permission. The object should
   // still retain the name of the device.
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kProductVendorUrl,
+                          /*requesting_origin=*/ProductVendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
@@ -830,7 +848,7 @@
   profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
                              *base::JSONReader::ReadDeprecated(kPolicySetting));
 
-  const auto kVendorOrigin = url::Origin::Create(kVendorUrl);
+  const auto kVendorOrigin = url::Origin::Create(VendorUrl());
   store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
                                *persistent_device_info);
 
@@ -840,7 +858,7 @@
   // User granted permissions for a device that is also granted by a vendor
   // device policy will be replaced by the policy permission.
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
@@ -857,7 +875,7 @@
   profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
                              *base::JSONReader::ReadDeprecated(kPolicySetting));
 
-  const auto kAnyDeviceOrigin = url::Origin::Create(kAnyDeviceUrl);
+  const auto kAnyDeviceOrigin = url::Origin::Create(AnyDeviceUrl());
   store->GrantDevicePermission(kAnyDeviceOrigin, kAnyDeviceOrigin,
                                *persistent_device_info);
 
@@ -867,7 +885,7 @@
   // User granted permissions for a device that is also granted by a wildcard
   // vendor policy will be replaced by the policy permission.
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kAnyDeviceUrl,
+                          /*requesting_origin=*/AnyDeviceUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/kDeviceIdWildcard,
@@ -888,29 +906,29 @@
   // ordered by the tuple (vendor_id, product_id) representing the device IDs.
   // Wildcard IDs are represented by a value of -1, so they appear first.
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kAnyDeviceUrl,
+                          /*requesting_origin=*/AnyDeviceUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/kDeviceIdWildcard,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from any vendor");
   ExpectChooserObjectInfo(objects[1].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from Google Inc.");
   ExpectChooserObjectInfo(objects[2].get(),
-                          /*requesting_origin=*/kProductVendorUrl,
+                          /*requesting_origin=*/ProductVendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/5678,
                           /*name=*/"Unknown product 0x162E from Google Inc.");
   ExpectChooserObjectInfo(objects[3].get(),
-                          /*requesting_origin=*/kGadgetUrl,
-                          /*embedding_origin=*/kCoolUrl,
+                          /*requesting_origin=*/GadgetUrl(),
+                          /*embedding_origin=*/CoolUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6354,
@@ -969,29 +987,29 @@
                           /*product_id=*/2,
                           /*name=*/"Gadget");
   ExpectChooserObjectInfo(objects[2].get(),
-                          /*requesting_origin=*/kAnyDeviceUrl,
+                          /*requesting_origin=*/AnyDeviceUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/kDeviceIdWildcard,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from any vendor");
   ExpectChooserObjectInfo(objects[3].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from Google Inc.");
   ExpectChooserObjectInfo(objects[4].get(),
-                          /*requesting_origin=*/kProductVendorUrl,
+                          /*requesting_origin=*/ProductVendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/5678,
                           /*name=*/"Unknown product 0x162E from Google Inc.");
   ExpectChooserObjectInfo(objects[5].get(),
-                          /*requesting_origin=*/kGadgetUrl,
-                          /*embedding_origin=*/kCoolUrl,
+                          /*requesting_origin=*/GadgetUrl(),
+                          /*embedding_origin=*/CoolUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6354,
@@ -1012,7 +1030,7 @@
       mock_permission_observer_,
       OnChooserObjectPermissionChanged(ContentSettingsType::USB_GUARD,
                                        ContentSettingsType::USB_CHOOSER_DATA));
-  const auto kProductVendorOrigin = url::Origin::Create(kProductVendorUrl);
+  const auto kProductVendorOrigin = url::Origin::Create(ProductVendorUrl());
   store->GrantDevicePermission(kProductVendorOrigin, kProductVendorOrigin,
                                *persistent_device_info);
 
@@ -1024,29 +1042,29 @@
   }
 
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kAnyDeviceUrl,
+                          /*requesting_origin=*/AnyDeviceUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/kDeviceIdWildcard,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from any vendor");
   ExpectChooserObjectInfo(objects[1].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from Google Inc.");
   ExpectChooserObjectInfo(objects[2].get(),
-                          /*requesting_origin=*/kProductVendorUrl,
+                          /*requesting_origin=*/ProductVendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/5678,
                           /*name=*/"Product");
   ExpectChooserObjectInfo(objects[3].get(),
-                          /*requesting_origin=*/kGadgetUrl,
-                          /*embedding_origin=*/kCoolUrl,
+                          /*requesting_origin=*/GadgetUrl(),
+                          /*embedding_origin=*/CoolUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6354,
@@ -1070,7 +1088,7 @@
       mock_permission_observer_,
       OnChooserObjectPermissionChanged(ContentSettingsType::USB_GUARD,
                                        ContentSettingsType::USB_CHOOSER_DATA));
-  const auto kVendorOrigin = url::Origin::Create(kVendorUrl);
+  const auto kVendorOrigin = url::Origin::Create(VendorUrl());
   store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
                                *persistent_device_info);
 
@@ -1082,29 +1100,29 @@
   }
 
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kAnyDeviceUrl,
+                          /*requesting_origin=*/AnyDeviceUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/kDeviceIdWildcard,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from any vendor");
   ExpectChooserObjectInfo(objects[1].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from Google Inc.");
   ExpectChooserObjectInfo(objects[2].get(),
-                          /*requesting_origin=*/kProductVendorUrl,
+                          /*requesting_origin=*/ProductVendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/5678,
                           /*name=*/"Unknown product 0x162E from Google Inc.");
   ExpectChooserObjectInfo(objects[3].get(),
-                          /*requesting_origin=*/kGadgetUrl,
-                          /*embedding_origin=*/kCoolUrl,
+                          /*requesting_origin=*/GadgetUrl(),
+                          /*embedding_origin=*/CoolUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6354,
@@ -1125,7 +1143,7 @@
       mock_permission_observer_,
       OnChooserObjectPermissionChanged(ContentSettingsType::USB_GUARD,
                                        ContentSettingsType::USB_CHOOSER_DATA));
-  const auto kAnyDeviceOrigin = url::Origin::Create(kAnyDeviceUrl);
+  const auto kAnyDeviceOrigin = url::Origin::Create(AnyDeviceUrl());
   store->GrantDevicePermission(kAnyDeviceOrigin, kAnyDeviceOrigin,
                                *persistent_device_info);
 
@@ -1137,29 +1155,29 @@
   }
 
   ExpectChooserObjectInfo(objects[0].get(),
-                          /*requesting_origin=*/kAnyDeviceUrl,
+                          /*requesting_origin=*/AnyDeviceUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/kDeviceIdWildcard,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from any vendor");
   ExpectChooserObjectInfo(objects[1].get(),
-                          /*requesting_origin=*/kVendorUrl,
+                          /*requesting_origin=*/VendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/kDeviceIdWildcard,
                           /*name=*/"Devices from Google Inc.");
   ExpectChooserObjectInfo(objects[2].get(),
-                          /*requesting_origin=*/kProductVendorUrl,
+                          /*requesting_origin=*/ProductVendorUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6353,
                           /*product_id=*/5678,
                           /*name=*/"Unknown product 0x162E from Google Inc.");
   ExpectChooserObjectInfo(objects[3].get(),
-                          /*requesting_origin=*/kGadgetUrl,
-                          /*embedding_origin=*/kCoolUrl,
+                          /*requesting_origin=*/GadgetUrl(),
+                          /*embedding_origin=*/CoolUrl(),
                           /*source=*/content_settings::SETTING_SOURCE_POLICY,
                           /*incognito=*/false,
                           /*vendor_id=*/6354,
diff --git a/chrome/browser/web_applications/components/web_app_data_retriever_unittest.cc b/chrome/browser/web_applications/components/web_app_data_retriever_unittest.cc
index 2497749..2261c0cd 100644
--- a/chrome/browser/web_applications/components/web_app_data_retriever_unittest.cc
+++ b/chrome/browser/web_applications/components/web_app_data_retriever_unittest.cc
@@ -34,10 +34,19 @@
 
 namespace {
 
-const GURL kFooUrl("https://foo.example");
-const GURL kFooUrl2("https://foo.example/bar");
 const char kFooTitle[] = "Foo Title";
-const GURL kBarUrl("https://bar.example");
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL FooUrl() {
+  return GURL("https://foo.example");
+}
+GURL FooUrl2() {
+  return GURL("https://foo.example/bar");
+}
+GURL BarUrl() {
+  return GURL("https://bar.example");
+}
 
 }  // namespace
 
@@ -162,7 +171,7 @@
 TEST_F(WebAppDataRetrieverTest, GetWebApplicationInfo_AppUrlAbsent) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   WebApplicationInfo original_web_app_info;
   original_web_app_info.app_url = GURL();
@@ -179,16 +188,16 @@
 
   // If the WebApplicationInfo has no URL, we fallback to the last committed
   // URL.
-  EXPECT_EQ(kFooUrl, web_app_info()->app_url);
+  EXPECT_EQ(FooUrl(), web_app_info()->app_url);
 }
 
 TEST_F(WebAppDataRetrieverTest, GetWebApplicationInfo_AppUrlPresent) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   WebApplicationInfo original_web_app_info;
-  original_web_app_info.app_url = kBarUrl;
+  original_web_app_info.app_url = BarUrl();
 
   SetRendererWebApplicationInfo(original_web_app_info);
 
@@ -206,7 +215,7 @@
 TEST_F(WebAppDataRetrieverTest, GetWebApplicationInfo_TitleAbsentFromRenderer) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   const auto web_contents_title = base::UTF8ToUTF16(kFooTitle);
   web_contents_tester()->SetTitle(web_contents_title);
@@ -233,7 +242,7 @@
        GetWebApplicationInfo_TitleAbsentFromWebContents) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   web_contents_tester()->SetTitle(base::UTF8ToUTF16(""));
 
@@ -259,7 +268,7 @@
 TEST_F(WebAppDataRetrieverTest, GetWebApplicationInfo_ConnectionError) {
   // Do not set fake ChromeRenderFrame to simulate connection error.
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   base::RunLoop run_loop;
   WebAppDataRetriever retriever;
@@ -275,7 +284,7 @@
 TEST_F(WebAppDataRetrieverTest, GetWebApplicationInfo_WebContentsDestroyed) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   base::RunLoop run_loop;
   WebAppDataRetriever retriever;
@@ -293,7 +302,7 @@
        CheckInstallabilityAndRetrieveManifest_WebContentsDestroyed) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   {
     auto manifest = std::make_unique<blink::Manifest>();
@@ -320,7 +329,7 @@
 TEST_F(WebAppDataRetrieverTest, GetIcons_WebContentsDestroyed) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   const std::vector<GURL> icon_urls;
   bool skip_page_favicons = true;
@@ -340,7 +349,7 @@
 TEST_F(WebAppDataRetrieverTest, GetWebApplicationInfo_FrameNavigated) {
   SetFakeChromeRenderFrame();
 
-  web_contents_tester()->NavigateAndCommit(kFooUrl);
+  web_contents_tester()->NavigateAndCommit(FooUrl());
 
   base::RunLoop run_loop;
   WebAppDataRetriever retriever;
@@ -348,7 +357,7 @@
       web_contents(),
       base::BindOnce(&WebAppDataRetrieverTest::GetWebApplicationInfoCallback,
                      base::Unretained(this), run_loop.QuitClosure()));
-  web_contents_tester()->NavigateAndCommit(kFooUrl2);
+  web_contents_tester()->NavigateAndCommit(FooUrl2());
   run_loop.Run();
 
   EXPECT_EQ(nullptr, web_app_info());
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration_linux.cc b/chrome/browser/web_applications/components/web_app_file_handler_registration_linux.cc
index 7aef4c2..828b5de00 100644
--- a/chrome/browser/web_applications/components/web_app_file_handler_registration_linux.cc
+++ b/chrome/browser/web_applications/components/web_app_file_handler_registration_linux.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
+#include "chrome/browser/web_applications/components/app_registrar.h"
 #include "chrome/browser/web_applications/components/app_shortcut_manager.h"
 #include "chrome/browser/web_applications/components/web_app_provider_base.h"
 #include "chrome/browser/web_applications/components/web_app_shortcut.h"
@@ -26,6 +27,16 @@
       base::DoNothing());
 }
 
+void UpdateFileHandlerRegistrationInOs(const AppId& app_id, Profile* profile) {
+  // On Linux, file associations are managed through shortcuts in the app menu,
+  // so after enabling or disabling file handling for an app its shortcuts
+  // need to be recreated.
+  AppShortcutManager& shortcut_manager =
+      WebAppProviderBase::GetProviderBase(profile)->shortcut_manager();
+  shortcut_manager.GetShortcutInfoForApp(
+      app_id, base::BindOnce(&OnShortcutInfoReceived));
+}
+
 }  // namespace
 
 bool ShouldRegisterFileHandlersWithOs() {
@@ -37,14 +48,18 @@
                                 Profile* profile,
                                 const std::set<std::string>& file_extensions,
                                 const std::set<std::string>& mime_types) {
-  AppShortcutManager& shortcut_manager =
-      WebAppProviderBase::GetProviderBase(profile)->shortcut_manager();
-  shortcut_manager.GetShortcutInfoForApp(
-      app_id, base::BindOnce(OnShortcutInfoReceived));
+  UpdateFileHandlerRegistrationInOs(app_id, profile);
 }
 
 void UnregisterFileHandlersWithOs(const AppId& app_id, Profile* profile) {
-  // TODO(harrisjay): Add support for unregistering file handlers.
+  // If this was triggered as part of the uninstallation process, nothing more
+  // is needed. Uninstalling already cleans up shortcuts (and thus, file
+  // handlers).
+  auto* provider = WebAppProviderBase::GetProviderBase(profile);
+  if (!provider->registrar().IsInstalled(app_id))
+    return;
+
+  UpdateFileHandlerRegistrationInOs(app_id, profile);
 }
 
 }  // namespace web_app
diff --git a/chrome/browser/web_applications/components/web_app_icon_generator_unittest.cc b/chrome/browser/web_applications/components/web_app_icon_generator_unittest.cc
index 8f8eba1..b13e968 100644
--- a/chrome/browser/web_applications/components/web_app_icon_generator_unittest.cc
+++ b/chrome/browser/web_applications/components/web_app_icon_generator_unittest.cc
@@ -21,10 +21,6 @@
 
 namespace {
 
-const GURL kAppIconURL1("http://foo.com/1.png");
-const GURL kAppIconURL2("http://foo.com/2.png");
-const GURL kAppIconURL3("http://foo.com/3.png");
-
 const int kIconSizeSmallBetweenMediumAndLarge = 63;
 const int kIconSizeLargeBetweenMediumAndLarge = 96;
 
diff --git a/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc b/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc
index 2a0f2f8..af24febb 100644
--- a/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc
+++ b/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc
@@ -14,27 +14,42 @@
 namespace web_app {
 
 namespace {
-const GURL kAppIcon1("fav1.png");
-const GURL kAppIcon2("fav2.png");
-const GURL kAppIcon3("fav3.png");
+
 const char kAppShortName[] = "Test short name";
 const char kAppTitle[] = "Test title";
-const GURL kAppUrl("http://www.chromium.org/index.html");
-const GURL kAlternativeAppUrl("http://www.notchromium.org");
 const char kAlternativeAppTitle[] = "Different test title";
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL AppIcon1() {
+  return GURL("fav1.png");
+}
+GURL AppIcon2() {
+  return GURL("fav2.png");
+}
+GURL AppIcon3() {
+  return GURL("fav3.png");
+}
+GURL AppUrl() {
+  return GURL("http://www.chromium.org/index.html");
+}
+GURL AlternativeAppUrl() {
+  return GURL("http://www.notchromium.org");
+}
+
 }  // namespace
 
 TEST(WebAppInstallUtils, UpdateWebAppInfoFromManifest) {
   WebApplicationInfo web_app_info;
   web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle);
-  web_app_info.app_url = kAlternativeAppUrl;
+  web_app_info.app_url = AlternativeAppUrl();
   WebApplicationIconInfo info;
-  info.url = kAppIcon1;
+  info.url = AppIcon1();
   web_app_info.icon_infos.push_back(info);
 
   blink::Manifest manifest;
-  manifest.start_url = kAppUrl;
-  manifest.scope = kAppUrl.GetWithoutFilename();
+  manifest.start_url = AppUrl();
+  manifest.scope = AppUrl().GetWithoutFilename();
   manifest.short_name =
       base::NullableString16(base::UTF8ToUTF16(kAppShortName), false);
 
@@ -49,14 +64,14 @@
 
   UpdateWebAppInfoFromManifest(manifest, &web_app_info);
   EXPECT_EQ(base::UTF8ToUTF16(kAppShortName), web_app_info.title);
-  EXPECT_EQ(kAppUrl, web_app_info.app_url);
-  EXPECT_EQ(kAppUrl.GetWithoutFilename(), web_app_info.scope);
+  EXPECT_EQ(AppUrl(), web_app_info.app_url);
+  EXPECT_EQ(AppUrl().GetWithoutFilename(), web_app_info.scope);
   EXPECT_EQ(DisplayMode::kBrowser, web_app_info.display_mode);
 
   // The icon info from |web_app_info| should be left as is, since the manifest
   // doesn't have any icon information.
   EXPECT_EQ(1u, web_app_info.icon_infos.size());
-  EXPECT_EQ(kAppIcon1, web_app_info.icon_infos[0].url);
+  EXPECT_EQ(AppIcon1(), web_app_info.icon_infos[0].url);
 
   // Test that |manifest.name| takes priority over |manifest.short_name|, and
   // that icons provided by the manifest replace icons in |web_app_info|.
@@ -64,11 +79,11 @@
   manifest.display = DisplayMode::kMinimalUi;
 
   blink::Manifest::ImageResource icon;
-  icon.src = kAppIcon2;
+  icon.src = AppIcon2();
   icon.purpose = {blink::Manifest::ImageResource::Purpose::ANY,
                   blink::Manifest::ImageResource::Purpose::BADGE};
   manifest.icons.push_back(icon);
-  icon.src = kAppIcon3;
+  icon.src = AppIcon3();
   manifest.icons.push_back(icon);
   // Add an icon without purpose ANY (expect to be ignored).
   icon.purpose = {blink::Manifest::ImageResource::Purpose::BADGE};
@@ -79,8 +94,8 @@
   EXPECT_EQ(DisplayMode::kMinimalUi, web_app_info.display_mode);
 
   EXPECT_EQ(2u, web_app_info.icon_infos.size());
-  EXPECT_EQ(kAppIcon2, web_app_info.icon_infos[0].url);
-  EXPECT_EQ(kAppIcon3, web_app_info.icon_infos[1].url);
+  EXPECT_EQ(AppIcon2(), web_app_info.icon_infos[0].url);
+  EXPECT_EQ(AppIcon3(), web_app_info.icon_infos[1].url);
 
   // Check file handlers were updated
   EXPECT_EQ(1u, web_app_info.file_handlers.size());
@@ -97,7 +112,7 @@
   blink::Manifest manifest;
   for (int i = 0; i < 50; ++i) {
     blink::Manifest::ImageResource icon;
-    icon.src = kAppIcon1;
+    icon.src = AppIcon1();
     icon.purpose.push_back(blink::Manifest::ImageResource::Purpose::ANY);
     icon.sizes.push_back(gfx::Size(i, i));
     manifest.icons.push_back(std::move(icon));
@@ -113,7 +128,7 @@
   blink::Manifest manifest;
   for (int i = 1; i <= 20; ++i) {
     blink::Manifest::ImageResource icon;
-    icon.src = kAppIcon1;
+    icon.src = AppIcon1();
     icon.purpose.push_back(blink::Manifest::ImageResource::Purpose::ANY);
     const int size = i * 100;
     icon.sizes.push_back(gfx::Size(size, size));
diff --git a/chrome/browser/web_applications/extensions/bookmark_app_install_finalizer_unittest.cc b/chrome/browser/web_applications/extensions/bookmark_app_install_finalizer_unittest.cc
index 79885069..26fb1d20 100644
--- a/chrome/browser/web_applications/extensions/bookmark_app_install_finalizer_unittest.cc
+++ b/chrome/browser/web_applications/extensions/bookmark_app_install_finalizer_unittest.cc
@@ -38,8 +38,6 @@
 
 namespace {
 
-const GURL kWebAppUrl("https://foo.example");
-const GURL kAlternateWebAppUrl("https://bar.example");
 const char kWebAppTitle[] = "Foo Title";
 
 const char kSystemAppExtensionInstalErrorHistogramName[] =
@@ -47,6 +45,15 @@
 const char kSystemAppExtensionDisableReasonHistogramName[] =
     "Webapp.InstallResultExtensionDisabledReason.System.Profiles.Other";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL WebAppUrl() {
+  return GURL("https://foo.example");
+}
+GURL AlternateWebAppUrl() {
+  return GURL("https://bar.example");
+}
+
 }  // namespace
 
 class BookmarkAppInstallFinalizerTest : public ChromeRenderViewHostTestHarness {
@@ -199,7 +206,7 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest, BasicInstallSucceeds) {
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   base::RunLoop run_loop;
@@ -237,7 +244,7 @@
       }));
 
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   web_app::InstallFinalizer::FinalizeOptions options;
@@ -274,7 +281,7 @@
       }));
 
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   base::RunLoop run_loop;
@@ -356,7 +363,7 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest, DefaultInstalledSucceeds) {
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   web_app::InstallFinalizer::FinalizeOptions options;
@@ -383,7 +390,7 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest, PolicyInstalledSucceeds) {
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   web_app::InstallFinalizer::FinalizeOptions options;
@@ -410,7 +417,7 @@
 TEST_F(BookmarkAppInstallFinalizerTest, SystemInstalledSucceeds) {
   base::HistogramTester histograms;
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   web_app::InstallFinalizer::FinalizeOptions options;
@@ -454,7 +461,7 @@
       }));
 
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   web_app::InstallFinalizer::FinalizeOptions options;
@@ -491,7 +498,7 @@
       }));
 
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
   info->title = base::ASCIIToUTF16(kWebAppTitle);
 
   web_app::InstallFinalizer::FinalizeOptions options;
@@ -520,7 +527,7 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest, NoNetworkInstallForArc) {
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
 
   web_app::InstallFinalizer::FinalizeOptions options;
   options.install_source = WebappInstallSource::ARC;
@@ -544,12 +551,12 @@
 }
 
 TEST_F(BookmarkAppInstallFinalizerTest, UninstallExternalWebApp_Successful) {
-  InstallExternalApp(kWebAppUrl);
+  InstallExternalApp(WebAppUrl());
   ASSERT_EQ(1u, enabled_extensions().size());
 
   base::RunLoop run_loop;
   finalizer().UninstallExternalWebAppByUrl(
-      kWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+      WebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
       base::BindLambdaForTesting([&](bool uninstalled) {
         EXPECT_TRUE(uninstalled);
         EXPECT_EQ(0u, enabled_extensions().size());
@@ -559,15 +566,15 @@
 }
 
 TEST_F(BookmarkAppInstallFinalizerTest, UninstallExternalWebApp_Multiple) {
-  auto foo_app_id = InstallExternalApp(kWebAppUrl);
-  auto bar_app_id = InstallExternalApp(kAlternateWebAppUrl);
+  auto foo_app_id = InstallExternalApp(WebAppUrl());
+  auto bar_app_id = InstallExternalApp(AlternateWebAppUrl());
   ASSERT_EQ(2u, enabled_extensions().size());
 
   // Uninstall one app.
   {
     base::RunLoop run_loop;
     finalizer().UninstallExternalWebAppByUrl(
-        kWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+        WebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
         base::BindLambdaForTesting([&](bool uninstalled) {
           EXPECT_TRUE(uninstalled);
           run_loop.Quit();
@@ -582,7 +589,7 @@
   {
     base::RunLoop run_loop;
     finalizer().UninstallExternalWebAppByUrl(
-        kAlternateWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+        AlternateWebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
         base::BindLambdaForTesting([&](bool uninstalled) {
           EXPECT_TRUE(uninstalled);
           run_loop.Quit();
@@ -594,12 +601,12 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest,
        UninstallExternalWebApp_UninstalledExternalApp) {
-  auto app_id = InstallExternalApp(kWebAppUrl);
+  auto app_id = InstallExternalApp(WebAppUrl());
   SimulateExternalAppUninstalledByUser(app_id);
 
   base::RunLoop run_loop;
   finalizer().UninstallExternalWebAppByUrl(
-      kWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+      WebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
       base::BindLambdaForTesting([&](bool uninstalled) {
         EXPECT_FALSE(uninstalled);
         run_loop.Quit();
@@ -611,7 +618,7 @@
        UninstallExternalWebApp_FailsNeverInstalled) {
   base::RunLoop run_loop;
   finalizer().UninstallExternalWebAppByUrl(
-      kWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+      WebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
       base::BindLambdaForTesting([&](bool uninstalled) {
         EXPECT_FALSE(uninstalled);
         run_loop.Quit();
@@ -621,13 +628,13 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest,
        UninstallExternalWebApp_FailsAlreadyUninstalled) {
-  InstallExternalApp(kWebAppUrl);
+  InstallExternalApp(WebAppUrl());
 
   // Uninstall the app.
   {
     base::RunLoop run_loop;
     finalizer().UninstallExternalWebAppByUrl(
-        kWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+        WebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
         base::BindLambdaForTesting([&](bool uninstalled) {
           EXPECT_TRUE(uninstalled);
           run_loop.Quit();
@@ -639,7 +646,7 @@
   {
     base::RunLoop run_loop;
     finalizer().UninstallExternalWebAppByUrl(
-        kWebAppUrl, web_app::ExternalInstallSource::kExternalPolicy,
+        WebAppUrl(), web_app::ExternalInstallSource::kExternalPolicy,
         base::BindLambdaForTesting([&](bool uninstalled) {
           EXPECT_FALSE(uninstalled);
           run_loop.Quit();
@@ -650,7 +657,7 @@
 
 TEST_F(BookmarkAppInstallFinalizerTest, NotLocallyInstalled) {
   auto info = std::make_unique<WebApplicationInfo>();
-  info->app_url = kWebAppUrl;
+  info->app_url = WebAppUrl();
 
   web_app::InstallFinalizer::FinalizeOptions options;
   options.install_source = WebappInstallSource::INTERNAL_DEFAULT;
diff --git a/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc b/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc
index c6de1cfb..5ad09db 100644
--- a/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc
+++ b/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc
@@ -49,8 +49,6 @@
 
 namespace {
 
-const GURL kAppUrl("https://www.chromium.org/index.html");
-const GURL kAppScope("https://www.chromium.org/");
 const char kAppAlternativeScope[] = "http://www.chromium.org/new/";
 const char kAppDefaultScope[] = "http://www.chromium.org/";
 const char kAppTitle[] = "Test title";
@@ -64,6 +62,15 @@
 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM;
 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL AppUrl() {
+  return GURL("https://www.chromium.org/index.html");
+}
+GURL AppScope() {
+  return GURL("https://www.chromium.org/");
+}
+
 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) {
   SkBitmap bitmap;
   bitmap.allocN32Pixels(size, size);
@@ -214,7 +221,7 @@
     data_retriever()->SetManifest(std::move(manifest), is_installable);
 
     web_app::IconsMap icons_map;
-    icons_map[kAppUrl].push_back(
+    icons_map[AppUrl()].push_back(
         CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED));
     data_retriever()->SetIcons(std::move(icons_map));
   }
@@ -232,7 +239,7 @@
     manifest->start_url = app_url;
     manifest->name =
         base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
-    manifest->scope = GURL(kAppScope);
+    manifest->scope = GURL(AppScope());
     data_retriever()->SetManifest(std::move(manifest), is_installable);
 
     data_retriever()->SetIcons(web_app::IconsMap{});
@@ -303,7 +310,7 @@
 
 TEST_F(InstallManagerBookmarkAppTest, CreateBookmarkApp) {
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
   CreateDataRetrieverWithRendererWebAppInfo(std::move(web_app_info),
@@ -318,20 +325,20 @@
 
   EXPECT_EQ(kAppTitle, extension->name());
   EXPECT_EQ(kAppDescription, extension->description());
-  EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
+  EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
   EXPECT_FALSE(IconsInfo::GetIconResource(extension, kIconSizeSmall,
                                           ExtensionIconSet::MATCH_EXACTLY)
                    .empty());
   EXPECT_FALSE(
       AppBannerSettingsHelper::GetSingleBannerEvent(
-          web_contents(), kAppUrl, kAppUrl.spec(),
+          web_contents(), AppUrl(), AppUrl().spec(),
           AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN)
           .is_null());
 }
 
 TEST_F(InstallManagerBookmarkAppTest, CreateBookmarkAppDefaultApp) {
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
   CreateDataRetrieverWithRendererWebAppInfo(std::move(web_app_info),
@@ -348,7 +355,7 @@
 
 TEST_F(InstallManagerBookmarkAppTest, CreateBookmarkAppPolicyInstalled) {
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
   CreateDataRetrieverWithRendererWebAppInfo(std::move(web_app_info),
@@ -376,9 +383,9 @@
 TEST_P(InstallManagerBookmarkAppInstallableSiteTest,
        CreateBookmarkAppWithManifest) {
   auto manifest = std::make_unique<blink::Manifest>();
-  manifest->start_url = kAppUrl;
+  manifest->start_url = AppUrl();
   manifest->name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
-  manifest->scope = GURL(kAppScope);
+  manifest->scope = GURL(AppScope());
   manifest->theme_color = SK_ColorBLUE;
 
   const bool is_installable = GetParam() == web_app::ForInstallableSite::kYes;
@@ -389,22 +396,22 @@
   EXPECT_EQ(1u, registry()->enabled_extensions().size());
   EXPECT_TRUE(extension->from_bookmark());
   EXPECT_EQ(kAppTitle, extension->name());
-  EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
+  EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
   EXPECT_EQ(SK_ColorBLUE, AppThemeColorInfo::GetThemeColor(extension).value());
   EXPECT_FALSE(
       AppBannerSettingsHelper::GetSingleBannerEvent(
-          web_contents(), kAppUrl, kAppUrl.spec(),
+          web_contents(), AppUrl(), AppUrl().spec(),
           AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN)
           .is_null());
-  EXPECT_EQ(GURL(kAppScope), GetScopeURLFromBookmarkApp(extension));
+  EXPECT_EQ(GURL(AppScope()), GetScopeURLFromBookmarkApp(extension));
 }
 
 TEST_P(InstallManagerBookmarkAppInstallableSiteTest,
        CreateBookmarkAppWithManifestIcons) {
   auto manifest = std::make_unique<blink::Manifest>();
-  manifest->start_url = kAppUrl;
+  manifest->start_url = AppUrl();
   manifest->name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
-  manifest->scope = GURL(kAppScope);
+  manifest->scope = GURL(AppScope());
 
   blink::Manifest::ImageResource icon;
   icon.src = GURL(kAppIconURL1);
@@ -445,14 +452,14 @@
   EXPECT_EQ(1u, registry()->enabled_extensions().size());
   EXPECT_TRUE(extension->from_bookmark());
   EXPECT_EQ(kAppTitle, extension->name());
-  EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
-  EXPECT_EQ(GURL(kAppScope), GetScopeURLFromBookmarkApp(extension));
+  EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
+  EXPECT_EQ(GURL(AppScope()), GetScopeURLFromBookmarkApp(extension));
 }
 
 TEST_P(InstallManagerBookmarkAppInstallableSiteTest,
        CreateBookmarkAppWithManifestNoScope) {
   auto manifest = std::make_unique<blink::Manifest>();
-  manifest->start_url = kAppUrl;
+  manifest->start_url = AppUrl();
   manifest->scope = GURL(kAppDefaultScope);
   manifest->name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
 
@@ -472,7 +479,7 @@
 TEST_F(InstallManagerBookmarkAppTest,
        CreateBookmarkAppDefaultLauncherContainers) {
   {
-    CreateDataRetrieverWithLaunchContainer(kAppUrl, /*open_as_window=*/true,
+    CreateDataRetrieverWithLaunchContainer(AppUrl(), /*open_as_window=*/true,
                                            /*is_installable=*/true);
 
     const Extension* extension = InstallWebAppFromManifestWithFallback();
@@ -522,7 +529,7 @@
               GetLaunchContainer(ExtensionPrefs::Get(profile()), extension));
   }
   {
-    CreateDataRetrieverWithLaunchContainer(kAppUrl, /*open_as_window=*/false,
+    CreateDataRetrieverWithLaunchContainer(AppUrl(), /*open_as_window=*/false,
                                            /*is_installable=*/false);
 
     web_app::InstallManager::InstallParams params;
@@ -538,7 +545,7 @@
 
 TEST_F(InstallManagerBookmarkAppTest, CreateBookmarkAppWithoutManifest) {
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
 
@@ -552,7 +559,7 @@
 
   EXPECT_EQ(kAppTitle, extension->name());
   EXPECT_EQ(kAppDescription, extension->description());
-  EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
+  EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
   EXPECT_EQ(GURL(), GetScopeURLFromBookmarkApp(extension));
   EXPECT_FALSE(AppThemeColorInfo::GetThemeColor(extension));
 }
@@ -561,10 +568,10 @@
   CreateEmptyDataRetriever();
 
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
-  web_app_info->scope = kAppScope;
+  web_app_info->scope = AppScope();
   SetAppIcon(web_app_info.get(), kIconSizeTiny, SK_ColorRED);
 
   base::RunLoop run_loop;
@@ -591,8 +598,8 @@
   EXPECT_TRUE(extension->from_bookmark());
   EXPECT_EQ(kAppTitle, extension->name());
   EXPECT_EQ(kAppDescription, extension->description());
-  EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
-  EXPECT_EQ(kAppScope, GetScopeURLFromBookmarkApp(extension));
+  EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
+  EXPECT_EQ(AppScope(), GetScopeURLFromBookmarkApp(extension));
   EXPECT_FALSE(IconsInfo::GetIconResource(extension, kIconSizeTiny,
                                           ExtensionIconSet::MATCH_EXACTLY)
                    .empty());
@@ -616,10 +623,10 @@
   EXPECT_EQ(0u, registry()->enabled_extensions().size());
 
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
-  web_app_info->scope = GURL(kAppScope);
+  web_app_info->scope = GURL(AppScope());
   SetAppIcon(web_app_info.get(), kIconSizeSmall, SK_ColorRED);
 
   auto web_app_info2 = std::make_unique<WebApplicationInfo>(*web_app_info);
@@ -662,8 +669,8 @@
     EXPECT_TRUE(extension->from_bookmark());
     EXPECT_EQ(kAppTitle, extension->name());
     EXPECT_EQ(kAppDescription, extension->description());
-    EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
-    EXPECT_EQ(GURL(kAppScope), GetScopeURLFromBookmarkApp(extension));
+    EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
+    EXPECT_EQ(GURL(AppScope()), GetScopeURLFromBookmarkApp(extension));
     EXPECT_FALSE(extensions::IconsInfo::GetIconResource(
                      extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY)
                      .empty());
@@ -703,8 +710,8 @@
     EXPECT_TRUE(extension->from_bookmark());
     EXPECT_EQ(kAppTitle, extension->name());
     EXPECT_EQ(kAppDescription, extension->description());
-    EXPECT_EQ(kAppUrl, AppLaunchInfo::GetLaunchWebURL(extension));
-    EXPECT_EQ(GURL(kAppScope), GetScopeURLFromBookmarkApp(extension));
+    EXPECT_EQ(AppUrl(), AppLaunchInfo::GetLaunchWebURL(extension));
+    EXPECT_EQ(GURL(AppScope()), GetScopeURLFromBookmarkApp(extension));
     EXPECT_FALSE(extensions::IconsInfo::GetIconResource(
                      extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY)
                      .empty());
@@ -722,7 +729,7 @@
   const base::Optional<SkColor> theme_color = SK_ColorBLUE;  // 0xAABBCCDD;
 
   auto web_app_info = std::make_unique<WebApplicationInfo>();
-  web_app_info->app_url = kAppUrl;
+  web_app_info->app_url = AppUrl();
   web_app_info->title = base::UTF8ToUTF16(kAppTitle);
   web_app_info->description = base::UTF8ToUTF16(kAppDescription);
   web_app_info->theme_color = theme_color;
@@ -734,7 +741,7 @@
   EXPECT_EQ(kAppDescription,
             app_registrar()->GetAppDescription(extension->id()));
   EXPECT_EQ(theme_color, app_registrar()->GetAppThemeColor(extension->id()));
-  EXPECT_EQ(kAppUrl, app_registrar()->GetAppLaunchURL(extension->id()));
+  EXPECT_EQ(AppUrl(), app_registrar()->GetAppLaunchURL(extension->id()));
 }
 
 }  // namespace extensions
diff --git a/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc b/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc
index 85631c0..eada6a9 100644
--- a/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc
+++ b/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc
@@ -76,7 +76,11 @@
       base::Passed(std::move(callback)));
 }
 
-const GURL kWebAppUrl("https://foo.example");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL WebAppUrl() {
+  return GURL("https://foo.example");
+}
 
 // TODO(ortuno): Move this to ExternallyInstalledWebAppPrefs or replace with a
 // method in ExternallyInstalledWebAppPrefs once there is one.
@@ -394,7 +398,7 @@
 TEST_F(PendingAppInstallTaskTest,
        WebAppOrShortcutFromContents_InstallationSucceeds) {
   auto task = GetInstallationTaskWithTestMocks(
-      {kWebAppUrl, DisplayMode::kUndefined,
+      {WebAppUrl(), DisplayMode::kUndefined,
        ExternalInstallSource::kInternalDefault});
 
   base::RunLoop run_loop;
@@ -404,12 +408,12 @@
       base::BindLambdaForTesting([&](PendingAppInstallTask::Result result) {
         base::Optional<AppId> id =
             ExternallyInstalledWebAppPrefs(profile()->GetPrefs())
-                .LookupAppId(kWebAppUrl);
+                .LookupAppId(WebAppUrl());
 
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
         EXPECT_TRUE(result.app_id.has_value());
 
-        EXPECT_FALSE(IsPlaceholderApp(profile(), kWebAppUrl));
+        EXPECT_FALSE(IsPlaceholderApp(profile(), WebAppUrl()));
 
         EXPECT_EQ(result.app_id.value(), id.value());
 
@@ -433,7 +437,7 @@
 TEST_F(PendingAppInstallTaskTest,
        WebAppOrShortcutFromContents_InstallationFails) {
   auto task = GetInstallationTaskWithTestMocks(
-      {kWebAppUrl, DisplayMode::kStandalone,
+      {WebAppUrl(), DisplayMode::kStandalone,
        ExternalInstallSource::kInternalDefault});
   data_retriever()->SetRendererWebApplicationInfo(nullptr);
 
@@ -444,7 +448,7 @@
       base::BindLambdaForTesting([&](PendingAppInstallTask::Result result) {
         base::Optional<AppId> id =
             ExternallyInstalledWebAppPrefs(profile()->GetPrefs())
-                .LookupAppId(kWebAppUrl);
+                .LookupAppId(WebAppUrl());
 
         EXPECT_EQ(InstallResultCode::kGetWebApplicationInfoFailed, result.code);
         EXPECT_FALSE(result.app_id.has_value());
@@ -460,7 +464,7 @@
 TEST_F(PendingAppInstallTaskTest,
        WebAppOrShortcutFromContents_NoDesktopShortcut) {
   ExternalInstallOptions install_options(
-      kWebAppUrl, DisplayMode::kStandalone,
+      WebAppUrl(), DisplayMode::kStandalone,
       ExternalInstallSource::kInternalDefault);
   install_options.add_to_desktop = false;
   auto task = GetInstallationTaskWithTestMocks(std::move(install_options));
@@ -489,7 +493,7 @@
 TEST_F(PendingAppInstallTaskTest,
        WebAppOrShortcutFromContents_NoQuickLaunchBarShortcut) {
   ExternalInstallOptions install_options(
-      kWebAppUrl, DisplayMode::kStandalone,
+      WebAppUrl(), DisplayMode::kStandalone,
       ExternalInstallSource::kInternalDefault);
   install_options.add_to_quick_launch_bar = false;
   auto task = GetInstallationTaskWithTestMocks(std::move(install_options));
@@ -518,7 +522,7 @@
     PendingAppInstallTaskTest,
     WebAppOrShortcutFromContents_NoDesktopShortcutAndNoQuickLaunchBarShortcut) {
   ExternalInstallOptions install_options(
-      kWebAppUrl, DisplayMode::kStandalone,
+      WebAppUrl(), DisplayMode::kStandalone,
       ExternalInstallSource::kInternalDefault);
   install_options.add_to_desktop = false;
   install_options.add_to_quick_launch_bar = false;
@@ -547,7 +551,7 @@
 TEST_F(PendingAppInstallTaskTest,
        WebAppOrShortcutFromContents_ForcedContainerWindow) {
   auto install_options =
-      ExternalInstallOptions(kWebAppUrl, DisplayMode::kStandalone,
+      ExternalInstallOptions(WebAppUrl(), DisplayMode::kStandalone,
                              ExternalInstallSource::kInternalDefault);
   auto task = GetInstallationTaskWithTestMocks(std::move(install_options));
 
@@ -567,7 +571,7 @@
 TEST_F(PendingAppInstallTaskTest,
        WebAppOrShortcutFromContents_ForcedContainerTab) {
   auto install_options =
-      ExternalInstallOptions(kWebAppUrl, DisplayMode::kBrowser,
+      ExternalInstallOptions(WebAppUrl(), DisplayMode::kBrowser,
                              ExternalInstallSource::kInternalDefault);
   auto task = GetInstallationTaskWithTestMocks(std::move(install_options));
 
@@ -586,7 +590,7 @@
 
 TEST_F(PendingAppInstallTaskTest, WebAppOrShortcutFromContents_DefaultApp) {
   auto install_options =
-      ExternalInstallOptions(kWebAppUrl, DisplayMode::kUndefined,
+      ExternalInstallOptions(WebAppUrl(), DisplayMode::kUndefined,
                              ExternalInstallSource::kInternalDefault);
   auto task = GetInstallationTaskWithTestMocks(std::move(install_options));
 
@@ -607,7 +611,7 @@
 
 TEST_F(PendingAppInstallTaskTest, WebAppOrShortcutFromContents_AppFromPolicy) {
   auto install_options =
-      ExternalInstallOptions(kWebAppUrl, DisplayMode::kUndefined,
+      ExternalInstallOptions(WebAppUrl(), DisplayMode::kUndefined,
                              ExternalInstallSource::kExternalPolicy);
   auto task = GetInstallationTaskWithTestMocks(std::move(install_options));
 
@@ -627,7 +631,7 @@
 }
 
 TEST_F(PendingAppInstallTaskTest, InstallPlaceholder) {
-  ExternalInstallOptions options(kWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(WebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   options.install_placeholder = true;
   auto task = GetInstallationTaskWithTestMocks(std::move(options));
@@ -639,7 +643,7 @@
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
         EXPECT_TRUE(result.app_id.has_value());
 
-        EXPECT_TRUE(IsPlaceholderApp(profile(), kWebAppUrl));
+        EXPECT_TRUE(IsPlaceholderApp(profile(), WebAppUrl()));
 
         EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls());
         EXPECT_EQ(1u, finalizer()->finalize_options_list().size());
@@ -648,8 +652,8 @@
         const WebApplicationInfo& web_app_info =
             finalizer()->web_app_info_list().at(0);
 
-        EXPECT_EQ(base::UTF8ToUTF16(kWebAppUrl.spec()), web_app_info.title);
-        EXPECT_EQ(kWebAppUrl, web_app_info.app_url);
+        EXPECT_EQ(base::UTF8ToUTF16(WebAppUrl().spec()), web_app_info.title);
+        EXPECT_EQ(WebAppUrl(), web_app_info.app_url);
         EXPECT_TRUE(web_app_info.open_as_window);
         EXPECT_TRUE(web_app_info.icon_infos.empty());
         EXPECT_TRUE(web_app_info.icon_bitmaps.empty());
@@ -662,7 +666,7 @@
 // Tests that palceholders are correctly installed when the platform doesn't
 // support os shortcuts.
 TEST_F(PendingAppInstallTaskTest, InstallPlaceholderNoCreateOsShorcuts) {
-  ExternalInstallOptions options(kWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(WebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   options.install_placeholder = true;
   auto task = GetInstallationTaskWithTestMocks(std::move(options));
@@ -675,7 +679,7 @@
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
         EXPECT_TRUE(result.app_id.has_value());
 
-        EXPECT_TRUE(IsPlaceholderApp(profile(), kWebAppUrl));
+        EXPECT_TRUE(IsPlaceholderApp(profile(), WebAppUrl()));
 
         EXPECT_EQ(0u, shortcut_manager()->num_create_shortcuts_calls());
         EXPECT_EQ(1u, finalizer()->finalize_options_list().size());
@@ -684,8 +688,8 @@
         const WebApplicationInfo& web_app_info =
             finalizer()->web_app_info_list().at(0);
 
-        EXPECT_EQ(base::UTF8ToUTF16(kWebAppUrl.spec()), web_app_info.title);
-        EXPECT_EQ(kWebAppUrl, web_app_info.app_url);
+        EXPECT_EQ(base::UTF8ToUTF16(WebAppUrl().spec()), web_app_info.title);
+        EXPECT_EQ(WebAppUrl(), web_app_info.app_url);
         EXPECT_TRUE(web_app_info.open_as_window);
         EXPECT_TRUE(web_app_info.icon_infos.empty());
         EXPECT_TRUE(web_app_info.icon_bitmaps.empty());
@@ -696,7 +700,7 @@
 }
 
 TEST_F(PendingAppInstallTaskTest, InstallPlaceholderTwice) {
-  ExternalInstallOptions options(kWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(WebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   options.install_placeholder = true;
   AppId placeholder_app_id;
@@ -735,7 +739,7 @@
 }
 
 TEST_F(PendingAppInstallTaskTest, ReinstallPlaceholderSucceeds) {
-  ExternalInstallOptions options(kWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(WebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   options.install_placeholder = true;
   AppId placeholder_app_id;
@@ -760,7 +764,7 @@
   // Replace the placeholder with a real app.
   options.reinstall_placeholder = true;
   auto task = GetInstallationTaskWithTestMocks(options);
-  finalizer()->SetNextUninstallExternalWebAppResult(kWebAppUrl, true);
+  finalizer()->SetNextUninstallExternalWebAppResult(WebAppUrl(), true);
 
   base::RunLoop run_loop;
   task->Install(
@@ -768,10 +772,10 @@
       base::BindLambdaForTesting([&](PendingAppInstallTask::Result result) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
         EXPECT_TRUE(result.app_id.has_value());
-        EXPECT_FALSE(IsPlaceholderApp(profile(), kWebAppUrl));
+        EXPECT_FALSE(IsPlaceholderApp(profile(), WebAppUrl()));
 
         EXPECT_EQ(1u, finalizer()->uninstall_external_web_app_urls().size());
-        EXPECT_EQ(kWebAppUrl,
+        EXPECT_EQ(WebAppUrl(),
                   finalizer()->uninstall_external_web_app_urls().at(0));
 
         run_loop.Quit();
@@ -780,7 +784,7 @@
 }
 
 TEST_F(PendingAppInstallTaskTest, ReinstallPlaceholderFails) {
-  ExternalInstallOptions options(kWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(WebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   options.install_placeholder = true;
   AppId placeholder_app_id;
@@ -806,7 +810,7 @@
   options.reinstall_placeholder = true;
   auto task = GetInstallationTaskWithTestMocks(options);
 
-  finalizer()->SetNextUninstallExternalWebAppResult(kWebAppUrl, false);
+  finalizer()->SetNextUninstallExternalWebAppResult(WebAppUrl(), false);
 
   base::RunLoop run_loop;
   task->Install(
@@ -814,10 +818,10 @@
       base::BindLambdaForTesting([&](PendingAppInstallTask::Result result) {
         EXPECT_EQ(InstallResultCode::kFailedPlaceholderUninstall, result.code);
         EXPECT_FALSE(result.app_id.has_value());
-        EXPECT_TRUE(IsPlaceholderApp(profile(), kWebAppUrl));
+        EXPECT_TRUE(IsPlaceholderApp(profile(), WebAppUrl()));
 
         EXPECT_EQ(1u, finalizer()->uninstall_external_web_app_urls().size());
-        EXPECT_EQ(kWebAppUrl,
+        EXPECT_EQ(WebAppUrl(),
                   finalizer()->uninstall_external_web_app_urls().at(0));
 
         // There should have been no new calls to install a placeholder.
@@ -829,7 +833,7 @@
 }
 
 TEST_F(PendingAppInstallTaskTest, UninstallAndReplace) {
-  ExternalInstallOptions options = {kWebAppUrl, DisplayMode::kUndefined,
+  ExternalInstallOptions options = {WebAppUrl(), DisplayMode::kUndefined,
                                     ExternalInstallSource::kInternalDefault};
   AppId app_id;
   {
@@ -846,7 +850,7 @@
           EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
           EXPECT_EQ(app_id,
                     *ExternallyInstalledWebAppPrefs(profile()->GetPrefs())
-                         .LookupAppId(kWebAppUrl));
+                         .LookupAppId(WebAppUrl()));
 
           EXPECT_TRUE(ui_manager()->DidUninstallAndReplace("app1", app_id));
           EXPECT_TRUE(ui_manager()->DidUninstallAndReplace("app2", app_id));
diff --git a/chrome/browser/web_applications/extensions/system_web_app_manager_unittest.cc b/chrome/browser/web_applications/extensions/system_web_app_manager_unittest.cc
index 077c89e6..826947c 100644
--- a/chrome/browser/web_applications/extensions/system_web_app_manager_unittest.cc
+++ b/chrome/browser/web_applications/extensions/system_web_app_manager_unittest.cc
@@ -41,12 +41,20 @@
 const char kSettingsAppNameForLogging[] = "OSSettings";
 const char kDiscoverAppNameForLogging[] = "Discover";
 
-const GURL kAppUrl1(content::GetWebUIURL("system-app1"));
-const GURL kAppUrl2(content::GetWebUIURL("system-app2"));
-const GURL kAppUrl3(content::GetWebUIURL("system-app3"));
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL AppUrl1() {
+  return GURL(content::GetWebUIURL("system-app1"));
+}
+GURL AppUrl2() {
+  return GURL(content::GetWebUIURL("system-app2"));
+}
+GURL AppUrl3() {
+  return GURL(content::GetWebUIURL("system-app3"));
+}
 
 ExternalInstallOptions GetWindowedInstallOptions() {
-  ExternalInstallOptions options(kAppUrl1, DisplayMode::kStandalone,
+  ExternalInstallOptions options(AppUrl1(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kSystemInstalled);
   options.add_to_applications_menu = false;
   options.add_to_desktop = false;
@@ -127,13 +135,13 @@
   base::test::ScopedFeatureList disable_feature_list;
   disable_feature_list.InitWithFeatures({}, {features::kSystemWebApps});
 
-  SimulatePreviouslyInstalledApp(kAppUrl1,
+  SimulatePreviouslyInstalledApp(AppUrl1(),
                                  ExternalInstallSource::kSystemInstalled);
 
   base::flat_map<SystemAppType, SystemAppInfo> system_apps;
   system_apps.emplace(
       SystemAppType::SETTINGS,
-      SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+      SystemAppInfo(kSettingsAppNameForLogging, GURL(AppUrl1())));
 
   system_web_app_manager()->SetSystemAppsForTesting(std::move(system_apps));
   system_web_app_manager()->Start();
@@ -144,19 +152,17 @@
 
   // We should try to uninstall the app that is no longer in the System App
   // list.
-  EXPECT_EQ(std::vector<GURL>({kAppUrl1}),
+  EXPECT_EQ(std::vector<GURL>({AppUrl1()}),
             pending_app_manager()->uninstall_requests());
 }
 
 // Test that System Apps do install with the feature enabled.
 TEST_F(SystemWebAppManagerTest, Enabled) {
   base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-  system_apps.emplace(
-      SystemAppType::SETTINGS,
-      SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
-  system_apps.emplace(
-      SystemAppType::DISCOVER,
-      SystemAppInfo(kDiscoverAppNameForLogging, GURL(kAppUrl2)));
+  system_apps.emplace(SystemAppType::SETTINGS,
+                      SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
+  system_apps.emplace(SystemAppType::DISCOVER,
+                      SystemAppInfo(kDiscoverAppNameForLogging, AppUrl2()));
 
   system_web_app_manager()->SetSystemAppsForTesting(std::move(system_apps));
   system_web_app_manager()->Start();
@@ -170,16 +176,15 @@
 TEST_F(SystemWebAppManagerTest, UninstallAppInstalledInPreviousSession) {
   // Simulate System Apps and a regular app that were installed in the
   // previous session.
-  SimulatePreviouslyInstalledApp(kAppUrl1,
+  SimulatePreviouslyInstalledApp(AppUrl1(),
                                  ExternalInstallSource::kSystemInstalled);
-  SimulatePreviouslyInstalledApp(kAppUrl2,
+  SimulatePreviouslyInstalledApp(AppUrl2(),
                                  ExternalInstallSource::kSystemInstalled);
-  SimulatePreviouslyInstalledApp(kAppUrl3,
+  SimulatePreviouslyInstalledApp(AppUrl3(),
                                  ExternalInstallSource::kInternalDefault);
   base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-  system_apps.emplace(
-      SystemAppType::SETTINGS,
-      SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+  system_apps.emplace(SystemAppType::SETTINGS,
+                      SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
 
   system_web_app_manager()->SetSystemAppsForTesting(std::move(system_apps));
   system_web_app_manager()->Start();
@@ -194,7 +199,7 @@
 
   // We should try to uninstall the app that is no longer in the System App
   // list.
-  EXPECT_EQ(std::vector<GURL>({kAppUrl2}),
+  EXPECT_EQ(std::vector<GURL>({AppUrl2()}),
             pending_app_manager()->uninstall_requests());
 }
 
@@ -203,9 +208,8 @@
       SystemWebAppManager::UpdatePolicy::kAlwaysUpdate);
 
   base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-  system_apps.emplace(
-      SystemAppType::SETTINGS,
-      SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+  system_apps.emplace(SystemAppType::SETTINGS,
+                      SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
   system_web_app_manager()->SetSystemAppsForTesting(system_apps);
 
   system_web_app_manager()->set_current_version(base::Version("1.0.0.0"));
@@ -216,9 +220,8 @@
 
   // Create another app. The version hasn't changed but the app should still
   // install.
-  system_apps.emplace(
-      SystemAppType::DISCOVER,
-      SystemAppInfo(kDiscoverAppNameForLogging, GURL(kAppUrl2)));
+  system_apps.emplace(SystemAppType::DISCOVER,
+                      SystemAppInfo(kDiscoverAppNameForLogging, AppUrl2()));
   system_web_app_manager()->SetSystemAppsForTesting(system_apps);
   system_web_app_manager()->Start();
 
@@ -251,9 +254,8 @@
       SystemWebAppManager::UpdatePolicy::kOnVersionChange);
 
   base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-  system_apps.emplace(
-      SystemAppType::SETTINGS,
-      SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+  system_apps.emplace(SystemAppType::SETTINGS,
+                      SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
   system_web_app_manager()->SetSystemAppsForTesting(system_apps);
 
   system_web_app_manager()->set_current_version(base::Version("1.0.0.0"));
@@ -262,14 +264,13 @@
 
   EXPECT_EQ(1u, install_requests.size());
   EXPECT_TRUE(install_requests[0].force_reinstall);
-  EXPECT_TRUE(IsInstalled(kAppUrl1));
+  EXPECT_TRUE(IsInstalled(AppUrl1()));
 
   // Create another app. The version hasn't changed, but we should immediately
   // install anyway, as if a user flipped a chrome://flag. The first app won't
   // force reinstall.
-  system_apps.emplace(
-      SystemAppType::DISCOVER,
-      SystemAppInfo(kDiscoverAppNameForLogging, GURL(kAppUrl2)));
+  system_apps.emplace(SystemAppType::DISCOVER,
+                      SystemAppInfo(kDiscoverAppNameForLogging, AppUrl2()));
   system_web_app_manager()->SetSystemAppsForTesting(system_apps);
   system_web_app_manager()->Start();
   base::RunLoop().RunUntilIdle();
@@ -277,8 +278,8 @@
   EXPECT_EQ(3u, install_requests.size());
   EXPECT_FALSE(install_requests[1].force_reinstall);
   EXPECT_FALSE(install_requests[2].force_reinstall);
-  EXPECT_TRUE(IsInstalled(kAppUrl1));
-  EXPECT_TRUE(IsInstalled(kAppUrl2));
+  EXPECT_TRUE(IsInstalled(AppUrl1()));
+  EXPECT_TRUE(IsInstalled(AppUrl2()));
 
   // Bump the version number, and an update will trigger, and force
   // reinstallation of both apps.
@@ -289,8 +290,8 @@
   EXPECT_EQ(5u, install_requests.size());
   EXPECT_TRUE(install_requests[3].force_reinstall);
   EXPECT_TRUE(install_requests[4].force_reinstall);
-  EXPECT_TRUE(IsInstalled(kAppUrl1));
-  EXPECT_TRUE(IsInstalled(kAppUrl2));
+  EXPECT_TRUE(IsInstalled(AppUrl1()));
+  EXPECT_TRUE(IsInstalled(AppUrl2()));
 
   {
     // Disabling System Web Apps uninstalls even without a version change.
@@ -301,8 +302,8 @@
     base::RunLoop().RunUntilIdle();
 
     EXPECT_EQ(2u, pending_app_manager()->uninstall_requests().size());
-    EXPECT_FALSE(IsInstalled(kAppUrl1));
-    EXPECT_FALSE(IsInstalled(kAppUrl2));
+    EXPECT_FALSE(IsInstalled(AppUrl1()));
+    EXPECT_FALSE(IsInstalled(AppUrl2()));
   }
 
   // Re-enabling System Web Apps installs even without a version change.
@@ -312,12 +313,12 @@
   EXPECT_EQ(7u, install_requests.size());
   EXPECT_FALSE(install_requests[5].force_reinstall);
   EXPECT_FALSE(install_requests[6].force_reinstall);
-  EXPECT_TRUE(IsInstalled(kAppUrl1));
-  EXPECT_TRUE(IsInstalled(kAppUrl2));
+  EXPECT_TRUE(IsInstalled(AppUrl1()));
+  EXPECT_TRUE(IsInstalled(AppUrl2()));
 
   // Changing the install URL of a system app propagates even without a version
   // change.
-  system_apps.find(SystemAppType::SETTINGS)->second.install_url = kAppUrl3;
+  system_apps.find(SystemAppType::SETTINGS)->second.install_url = AppUrl3();
   system_web_app_manager()->SetSystemAppsForTesting(system_apps);
   system_web_app_manager()->Start();
   base::RunLoop().RunUntilIdle();
@@ -325,9 +326,9 @@
   EXPECT_EQ(9u, install_requests.size());
   EXPECT_FALSE(install_requests[7].force_reinstall);
   EXPECT_FALSE(install_requests[8].force_reinstall);
-  EXPECT_FALSE(IsInstalled(kAppUrl1));
-  EXPECT_TRUE(IsInstalled(kAppUrl2));
-  EXPECT_TRUE(IsInstalled(kAppUrl3));
+  EXPECT_FALSE(IsInstalled(AppUrl1()));
+  EXPECT_TRUE(IsInstalled(AppUrl2()));
+  EXPECT_TRUE(IsInstalled(AppUrl3()));
 }
 
 TEST_F(SystemWebAppManagerTest, UpdateOnLocaleChange) {
@@ -338,9 +339,8 @@
       SystemWebAppManager::UpdatePolicy::kOnVersionChange);
 
   base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-  system_apps.emplace(
-      SystemAppType::SETTINGS,
-      SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+  system_apps.emplace(SystemAppType::SETTINGS,
+                      SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
   system_web_app_manager()->SetSystemAppsForTesting(system_apps);
 
   // Simulate first execution.
@@ -351,7 +351,7 @@
   base::RunLoop().RunUntilIdle();
 
   EXPECT_EQ(1u, install_requests.size());
-  EXPECT_TRUE(IsInstalled(kAppUrl1));
+  EXPECT_TRUE(IsInstalled(AppUrl1()));
 
   // Change locale setting, should trigger reinstall.
   pending_app_manager()->SetInstallResultCode(
@@ -362,7 +362,7 @@
 
   EXPECT_EQ(2u, install_requests.size());
   EXPECT_TRUE(install_requests[1].force_reinstall);
-  EXPECT_TRUE(IsInstalled(kAppUrl1));
+  EXPECT_TRUE(IsInstalled(AppUrl1()));
 
   // Do not reinstall because locale is not changed.
   system_web_app_manager()->Start();
@@ -386,9 +386,8 @@
       ".Profiles.Other";
   {
     base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-    system_apps.emplace(
-        SystemAppType::SETTINGS,
-        SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+    system_apps.emplace(SystemAppType::SETTINGS,
+                        SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
     system_web_app_manager()->SetSystemAppsForTesting(system_apps);
 
     histograms.ExpectTotalCount(
@@ -417,12 +416,10 @@
   }
   {
     base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-    system_apps.emplace(
-        SystemAppType::SETTINGS,
-        SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
-    system_apps.emplace(
-        SystemAppType::DISCOVER,
-        SystemAppInfo(kDiscoverAppNameForLogging, GURL(kAppUrl2)));
+    system_apps.emplace(SystemAppType::SETTINGS,
+                        SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
+    system_apps.emplace(SystemAppType::DISCOVER,
+                        SystemAppInfo(kDiscoverAppNameForLogging, AppUrl2()));
 
     system_web_app_manager()->SetSystemAppsForTesting(system_apps);
     pending_app_manager()->SetInstallResultCode(
@@ -444,9 +441,8 @@
   }
   {
     base::flat_map<SystemAppType, SystemAppInfo> system_apps;
-    system_apps.emplace(
-        SystemAppType::SETTINGS,
-        SystemAppInfo(kSettingsAppNameForLogging, GURL(kAppUrl1)));
+    system_apps.emplace(SystemAppType::SETTINGS,
+                        SystemAppInfo(kSettingsAppNameForLogging, AppUrl1()));
     system_web_app_manager()->SetSystemAppsForTesting(system_apps);
     pending_app_manager()->SetInstallResultCode(
         InstallResultCode::kWebAppDisabled);
diff --git a/chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc b/chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc
index 7a09aaa..0a30ec7 100644
--- a/chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc
+++ b/chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc
@@ -20,6 +20,7 @@
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/web_applications/components/file_handler_manager.h"
 #include "chrome/browser/web_applications/components/web_app_helpers.h"
+#include "chrome/browser/web_applications/components/web_app_provider_base.h"
 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
 #include "chrome/common/pref_names.h"
 #include "components/prefs/pref_service.h"
@@ -178,11 +179,18 @@
   shortcut_info->profile_name =
       profile->GetPrefs()->GetString(prefs::kProfileName);
   shortcut_info->version_for_display = app->GetVersionForDisplay();
-  if (const auto* info = extensions::FileHandlers::GetFileHandlers(app)) {
-    shortcut_info->file_handler_extensions =
-        web_app::GetFileExtensionsFromFileHandlers(*info);
-    shortcut_info->file_handler_mime_types =
-        web_app::GetMimeTypesFromFileHandlers(*info);
+
+  // File Handlers should only be included in bookmark apps.
+  if (app->from_bookmark()) {
+    FileHandlerManager& file_handler_manager =
+        WebAppProviderBase::GetProviderBase(profile)->file_handler_manager();
+    if (const auto* file_handlers =
+            file_handler_manager.GetEnabledFileHandlers(app->id())) {
+      shortcut_info->file_handler_extensions =
+          web_app::GetFileExtensionsFromFileHandlers(*file_handlers);
+      shortcut_info->file_handler_mime_types =
+          web_app::GetMimeTypesFromFileHandlers(*file_handlers);
+    }
   }
 
   return shortcut_info;
diff --git a/chrome/browser/web_applications/extensions/web_app_policy_manager_unittest.cc b/chrome/browser/web_applications/extensions/web_app_policy_manager_unittest.cc
index c541ab38..b3a613fc 100644
--- a/chrome/browser/web_applications/extensions/web_app_policy_manager_unittest.cc
+++ b/chrome/browser/web_applications/extensions/web_app_policy_manager_unittest.cc
@@ -37,20 +37,28 @@
 
 namespace {
 
-const GURL kWindowedUrl("https://windowed.example/");
-const GURL kTabbedUrl("https://tabbed.example/");
-const GURL kNoContainerUrl("https://no-container.example/");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL WindowedUrl() {
+  return GURL("https://windowed.example/");
+}
+GURL TabbedUrl() {
+  return GURL("https://tabbed.example/");
+}
+GURL NoContainerUrl() {
+  return GURL("https://no-container.example/");
+}
 
 base::Value GetWindowedItem() {
   base::Value item(base::Value::Type::DICTIONARY);
-  item.SetKey(kUrlKey, base::Value(kWindowedUrl.spec()));
+  item.SetKey(kUrlKey, base::Value(WindowedUrl().spec()));
   item.SetKey(kDefaultLaunchContainerKey,
               base::Value(kDefaultLaunchContainerWindowValue));
   return item;
 }
 
 ExternalInstallOptions GetWindowedInstallOptions() {
-  ExternalInstallOptions options(kWindowedUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(WindowedUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   options.add_to_applications_menu = true;
   options.add_to_desktop = false;
@@ -63,14 +71,14 @@
 
 base::Value GetTabbedItem() {
   base::Value item(base::Value::Type::DICTIONARY);
-  item.SetKey(kUrlKey, base::Value(kTabbedUrl.spec()));
+  item.SetKey(kUrlKey, base::Value(TabbedUrl().spec()));
   item.SetKey(kDefaultLaunchContainerKey,
               base::Value(kDefaultLaunchContainerTabValue));
   return item;
 }
 
 ExternalInstallOptions GetTabbedInstallOptions() {
-  ExternalInstallOptions options(kTabbedUrl, DisplayMode::kBrowser,
+  ExternalInstallOptions options(TabbedUrl(), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
   options.add_to_applications_menu = true;
   options.add_to_desktop = false;
@@ -83,12 +91,12 @@
 
 base::Value GetNoContainerItem() {
   base::Value item(base::Value::Type::DICTIONARY);
-  item.SetKey(kUrlKey, base::Value(kNoContainerUrl.spec()));
+  item.SetKey(kUrlKey, base::Value(NoContainerUrl().spec()));
   return item;
 }
 
 ExternalInstallOptions GetNoContainerInstallOptions() {
-  ExternalInstallOptions options(kNoContainerUrl, DisplayMode::kBrowser,
+  ExternalInstallOptions options(NoContainerUrl(), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
   options.add_to_applications_menu = true;
   options.add_to_desktop = false;
@@ -101,12 +109,12 @@
 
 base::Value GetCreateDesktopShorcutDefaultItem() {
   base::Value item(base::Value::Type::DICTIONARY);
-  item.SetKey(kUrlKey, base::Value(kNoContainerUrl.spec()));
+  item.SetKey(kUrlKey, base::Value(NoContainerUrl().spec()));
   return item;
 }
 
 ExternalInstallOptions GetCreateDesktopShorcutDefaultInstallOptions() {
-  ExternalInstallOptions options(kNoContainerUrl, DisplayMode::kBrowser,
+  ExternalInstallOptions options(NoContainerUrl(), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
   options.add_to_applications_menu = true;
   options.add_to_desktop = false;
@@ -119,13 +127,13 @@
 
 base::Value GetCreateDesktopShorcutFalseItem() {
   base::Value item(base::Value::Type::DICTIONARY);
-  item.SetKey(kUrlKey, base::Value(kNoContainerUrl.spec()));
+  item.SetKey(kUrlKey, base::Value(NoContainerUrl().spec()));
   item.SetKey(kCreateDesktopShorcutKey, base::Value(false));
   return item;
 }
 
 ExternalInstallOptions GetCreateDesktopShorcutFalseInstallOptions() {
-  ExternalInstallOptions options(kNoContainerUrl, DisplayMode::kBrowser,
+  ExternalInstallOptions options(NoContainerUrl(), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
   options.add_to_applications_menu = true;
   options.add_to_desktop = false;
@@ -138,13 +146,13 @@
 
 base::Value GetCreateDesktopShorcutTrueItem() {
   base::Value item(base::Value::Type::DICTIONARY);
-  item.SetKey(kUrlKey, base::Value(kNoContainerUrl.spec()));
+  item.SetKey(kUrlKey, base::Value(NoContainerUrl().spec()));
   item.SetKey(kCreateDesktopShorcutKey, base::Value(true));
   return item;
 }
 
 ExternalInstallOptions GetCreateDesktopShorcutTrueInstallOptions() {
-  ExternalInstallOptions options(kNoContainerUrl, DisplayMode::kBrowser,
+  ExternalInstallOptions options(NoContainerUrl(), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
   options.add_to_applications_menu = true;
   options.add_to_desktop = true;
@@ -329,11 +337,11 @@
 TEST_F(WebAppPolicyManagerTest, UninstallAppInstalledInPreviousSession) {
   // Simulate two policy apps and a regular app that were installed in the
   // previous session.
-  SimulatePreviouslyInstalledApp(kWindowedUrl,
+  SimulatePreviouslyInstalledApp(WindowedUrl(),
                                  ExternalInstallSource::kExternalPolicy);
-  SimulatePreviouslyInstalledApp(kTabbedUrl,
+  SimulatePreviouslyInstalledApp(TabbedUrl(),
                                  ExternalInstallSource::kExternalPolicy);
-  SimulatePreviouslyInstalledApp(kNoContainerUrl,
+  SimulatePreviouslyInstalledApp(NoContainerUrl(),
                                  ExternalInstallSource::kInternalDefault);
 
   // Push a policy with only one of the apps.
@@ -352,7 +360,7 @@
             expected_install_options_list);
 
   // We should try to uninstall the app that is no longer in the policy.
-  EXPECT_EQ(std::vector<GURL>({kTabbedUrl}),
+  EXPECT_EQ(std::vector<GURL>({TabbedUrl()}),
             pending_app_manager()->uninstall_requests());
 }
 
@@ -391,7 +399,7 @@
 
   EXPECT_EQ(install_requests, expected_install_options_list);
 
-  EXPECT_EQ(std::vector<GURL>({kTabbedUrl}),
+  EXPECT_EQ(std::vector<GURL>({TabbedUrl()}),
             pending_app_manager()->uninstall_requests());
 }
 
@@ -410,7 +418,7 @@
   const auto& install_options_list = pending_app_manager()->install_requests();
   EXPECT_EQ(expected_options_list, install_options_list);
 
-  policy_manager()->ReinstallPlaceholderAppIfNecessary(kWindowedUrl);
+  policy_manager()->ReinstallPlaceholderAppIfNecessary(WindowedUrl());
   base::RunLoop().RunUntilIdle();
 
   auto reinstall_options = GetWindowedInstallOptions();
@@ -437,7 +445,7 @@
   EXPECT_EQ(expected_options_list, install_options_list);
 
   // Try to reinstall for app not installed by policy.
-  policy_manager()->ReinstallPlaceholderAppIfNecessary(kTabbedUrl);
+  policy_manager()->ReinstallPlaceholderAppIfNecessary(TabbedUrl());
   base::RunLoop().RunUntilIdle();
 
   EXPECT_EQ(expected_options_list, install_options_list);
@@ -467,7 +475,7 @@
 
   const auto& install_options_list = pending_app_manager()->install_requests();
   EXPECT_EQ(expected_options_list, install_options_list);
-  EXPECT_EQ(std::vector<GURL>({kWindowedUrl}),
+  EXPECT_EQ(std::vector<GURL>({WindowedUrl()}),
             pending_app_manager()->uninstall_requests());
 
   // There should be exactly 1 app remaining.
@@ -477,7 +485,7 @@
           .GetExternallyInstalledApps(ExternalInstallSource::kExternalPolicy);
   EXPECT_EQ(1u, apps.size());
   for (auto& it : apps)
-    EXPECT_EQ(it.second, kTabbedUrl);
+    EXPECT_EQ(it.second, TabbedUrl());
 }
 
 TEST_F(WebAppPolicyManagerTest, InstallResultHistogram) {
diff --git a/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc b/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc
index bcf953b8..c77c39e 100644
--- a/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc
+++ b/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc
@@ -39,18 +39,32 @@
 using InstallAppsResults = std::vector<std::pair<GURL, InstallResultCode>>;
 using UninstallAppsResults = std::vector<std::pair<GURL, bool>>;
 
-const GURL kFooWebAppUrl("https://foo.example");
-const GURL kBarWebAppUrl("https://bar.example");
-const GURL kQuxWebAppUrl("https://qux.example");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL FooWebAppUrl() {
+  return GURL("https://foo.example");
+}
+GURL BarWebAppUrl() {
+  return GURL("https://bar.example");
+}
+GURL QuxWebAppUrl() {
+  return GURL("https://qux.example");
+}
 
-const GURL kFooLaunchUrl("https://foo.example/launch");
-const GURL kBarLaunchUrl("https://bar.example/launch");
-const GURL kQuxLaunchUrl("https://qux.example/launch");
+GURL FooLaunchUrl() {
+  return GURL("https://foo.example/launch");
+}
+GURL BarLaunchUrl() {
+  return GURL("https://bar.example/launch");
+}
+GURL QuxLaunchUrl() {
+  return GURL("https://qux.example/launch");
+}
 
 ExternalInstallOptions GetFooInstallOptions(
     base::Optional<bool> override_previous_user_uninstall =
         base::Optional<bool>()) {
-  ExternalInstallOptions options(kFooWebAppUrl, DisplayMode::kBrowser,
+  ExternalInstallOptions options(FooWebAppUrl(), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
 
   if (override_previous_user_uninstall.has_value())
@@ -61,13 +75,13 @@
 }
 
 ExternalInstallOptions GetBarInstallOptions() {
-  ExternalInstallOptions options(kBarWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(BarWebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   return options;
 }
 
 ExternalInstallOptions GetQuxInstallOptions() {
-  ExternalInstallOptions options(kQuxWebAppUrl, DisplayMode::kStandalone,
+  ExternalInstallOptions options(QuxWebAppUrl(), DisplayMode::kStandalone,
                                  ExternalInstallSource::kExternalPolicy);
   return options;
 }
@@ -421,10 +435,10 @@
 
 TEST_F(PendingAppManagerImplTest, Install_Succeeds) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  pending_app_manager_impl()->SetNextInstallationLaunchURL(kFooWebAppUrl,
-                                                           kFooLaunchUrl);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  pending_app_manager_impl()->SetNextInstallationLaunchURL(FooWebAppUrl(),
+                                                           FooLaunchUrl());
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   base::Optional<GURL> url;
   base::Optional<InstallResultCode> code;
@@ -432,23 +446,23 @@
       InstallAndWait(pending_app_manager_impl(), GetFooInstallOptions());
 
   EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-  EXPECT_EQ(kFooWebAppUrl, url.value());
+  EXPECT_EQ(FooWebAppUrl(), url.value());
 
   EXPECT_EQ(1u, install_run_count());
   EXPECT_EQ(GetFooInstallOptions(), last_install_options());
 
   WebAppRegistrationWaiter(pending_app_manager_impl())
-      .AwaitNextRegistration(kFooLaunchUrl, RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(FooLaunchUrl(), RegistrationResultCode::kSuccess);
   EXPECT_EQ(1U, registration_run_count());
-  EXPECT_EQ(kFooLaunchUrl, last_registered_launch_url());
+  EXPECT_EQ(FooLaunchUrl(), last_registered_launch_url());
 }
 
 TEST_F(PendingAppManagerImplTest, Install_SerialCallsDifferentApps) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  pending_app_manager_impl()->SetNextInstallationLaunchURL(kFooWebAppUrl,
-                                                           kFooLaunchUrl);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  pending_app_manager_impl()->SetNextInstallationLaunchURL(FooWebAppUrl(),
+                                                           FooLaunchUrl());
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   {
     base::Optional<GURL> url;
@@ -457,21 +471,21 @@
         InstallAndWait(pending_app_manager_impl(), GetFooInstallOptions());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(kFooWebAppUrl, url.value());
+    EXPECT_EQ(FooWebAppUrl(), url.value());
 
     EXPECT_EQ(1u, install_run_count());
     EXPECT_EQ(GetFooInstallOptions(), last_install_options());
   }
 
   pending_app_manager_impl()->WaitForRegistrationAndCancel();
-  // kFooLaunchUrl registration will be attempted again after
-  // kBarWebAppUrl installs.
+  // FooLaunchUrl() registration will be attempted again after
+  // BarWebAppUrl() installs.
 
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  pending_app_manager_impl()->SetNextInstallationLaunchURL(kBarWebAppUrl,
-                                                           kBarLaunchUrl);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  pending_app_manager_impl()->SetNextInstallationLaunchURL(BarWebAppUrl(),
+                                                           BarLaunchUrl());
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   {
     base::Optional<GURL> url;
@@ -481,28 +495,28 @@
         InstallAndWait(pending_app_manager_impl(), GetBarInstallOptions());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(kBarWebAppUrl, url.value());
+    EXPECT_EQ(BarWebAppUrl(), url.value());
 
     EXPECT_EQ(2u, install_run_count());
     EXPECT_EQ(GetBarInstallOptions(), last_install_options());
   }
 
   WebAppRegistrationWaiter(pending_app_manager_impl())
-      .AwaitNextRegistration(kFooLaunchUrl, RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(FooLaunchUrl(), RegistrationResultCode::kSuccess);
   WebAppRegistrationWaiter(pending_app_manager_impl())
-      .AwaitNextRegistration(kBarLaunchUrl, RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(BarLaunchUrl(), RegistrationResultCode::kSuccess);
   EXPECT_EQ(3U, registration_run_count());
-  EXPECT_EQ(kBarLaunchUrl, last_registered_launch_url());
+  EXPECT_EQ(BarLaunchUrl(), last_registered_launch_url());
 }
 
 TEST_F(PendingAppManagerImplTest, Install_ConcurrentCallsDifferentApps) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::RunLoop run_loop;
@@ -510,7 +524,7 @@
       GetFooInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
 
         // Two installations tasks should have run at this point,
         // one from the last call to install (which gets higher priority),
@@ -524,7 +538,7 @@
       GetBarInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kBarWebAppUrl, url);
+        EXPECT_EQ(BarWebAppUrl(), url);
 
         // The last call gets higher priority so only one
         // installation task should have run at this point.
@@ -536,12 +550,12 @@
 
 TEST_F(PendingAppManagerImplTest, Install_PendingSuccessfulTask) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   url_loader()->SaveLoadUrlRequests();
 
@@ -552,7 +566,7 @@
       GetFooInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
 
         EXPECT_EQ(1u, install_run_count());
         EXPECT_EQ(GetFooInstallOptions(), last_install_options());
@@ -566,7 +580,7 @@
       GetBarInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kBarWebAppUrl, url);
+        EXPECT_EQ(BarWebAppUrl(), url);
 
         EXPECT_EQ(2u, install_run_count());
         EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -586,12 +600,12 @@
 
 TEST_F(PendingAppManagerImplTest, Install_PendingFailingTask) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kWebAppDisabled);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kWebAppDisabled);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   url_loader()->SaveLoadUrlRequests();
 
@@ -602,7 +616,7 @@
       GetFooInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kWebAppDisabled, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
 
         EXPECT_EQ(1u, install_run_count());
 
@@ -615,7 +629,7 @@
       GetBarInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kBarWebAppUrl, url);
+        EXPECT_EQ(BarWebAppUrl(), url);
 
         EXPECT_EQ(2u, install_run_count());
         EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -635,19 +649,19 @@
 
 TEST_F(PendingAppManagerImplTest, Install_ReentrantCallback) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::RunLoop run_loop;
   auto final_callback =
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kBarWebAppUrl, url);
+        EXPECT_EQ(BarWebAppUrl(), url);
 
         EXPECT_EQ(2u, install_run_count());
         EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -656,7 +670,7 @@
   auto reentrant_callback =
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
 
         EXPECT_EQ(1u, install_run_count());
         EXPECT_EQ(GetFooInstallOptions(), last_install_options());
@@ -673,8 +687,8 @@
 
 TEST_F(PendingAppManagerImplTest, Install_SerialCallsSameApp) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   {
@@ -684,7 +698,7 @@
         InstallAndWait(pending_app_manager_impl(), GetFooInstallOptions());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-    EXPECT_EQ(kFooWebAppUrl, url);
+    EXPECT_EQ(FooWebAppUrl(), url);
 
     EXPECT_EQ(1u, install_run_count());
     EXPECT_EQ(GetFooInstallOptions(), last_install_options());
@@ -697,7 +711,7 @@
         InstallAndWait(pending_app_manager_impl(), GetFooInstallOptions());
 
     EXPECT_EQ(InstallResultCode::kSuccessAlreadyInstalled, code);
-    EXPECT_EQ(kFooWebAppUrl, url);
+    EXPECT_EQ(FooWebAppUrl(), url);
 
     // The app is already installed so we shouldn't try to install it again.
     EXPECT_EQ(1u, install_run_count());
@@ -706,8 +720,8 @@
 
 TEST_F(PendingAppManagerImplTest, Install_ConcurrentCallsSameApp) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::RunLoop run_loop;
@@ -719,7 +733,7 @@
         // kSuccessAlreadyInstalled because the last call to Install gets higher
         // priority.
         EXPECT_EQ(InstallResultCode::kSuccessAlreadyInstalled, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
 
         // Only one installation task should run because the app was already
         // installed.
@@ -734,7 +748,7 @@
       GetFooInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
 
         EXPECT_EQ(1u, install_run_count());
         EXPECT_EQ(GetFooInstallOptions(), last_install_options());
@@ -748,12 +762,12 @@
 
 TEST_F(PendingAppManagerImplTest, Install_AlwaysUpdate) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   auto get_force_reinstall_info = []() {
-    ExternalInstallOptions options(kFooWebAppUrl, DisplayMode::kStandalone,
+    ExternalInstallOptions options(FooWebAppUrl(), DisplayMode::kStandalone,
                                    ExternalInstallSource::kExternalPolicy);
     options.force_reinstall = true;
     return options;
@@ -766,15 +780,15 @@
         InstallAndWait(pending_app_manager_impl(), get_force_reinstall_info());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-    EXPECT_EQ(kFooWebAppUrl, url);
+    EXPECT_EQ(FooWebAppUrl(), url);
 
     EXPECT_EQ(1u, install_run_count());
     EXPECT_EQ(get_force_reinstall_info(), last_install_options());
   }
 
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   {
     base::Optional<GURL> url;
@@ -783,7 +797,7 @@
         InstallAndWait(pending_app_manager_impl(), get_force_reinstall_info());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-    EXPECT_EQ(kFooWebAppUrl, url);
+    EXPECT_EQ(FooWebAppUrl(), url);
 
     // The app should be installed again because of the |force_reinstall| flag.
     EXPECT_EQ(2u, install_run_count());
@@ -793,8 +807,8 @@
 
 TEST_F(PendingAppManagerImplTest, Install_InstallationFails) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kWebAppDisabled);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kWebAppDisabled);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::Optional<GURL> url;
@@ -803,16 +817,16 @@
       InstallAndWait(pending_app_manager_impl(), GetFooInstallOptions());
 
   EXPECT_EQ(InstallResultCode::kWebAppDisabled, code);
-  EXPECT_EQ(kFooWebAppUrl, url);
+  EXPECT_EQ(FooWebAppUrl(), url);
 
   EXPECT_EQ(1u, install_run_count());
 }
 
 TEST_F(PendingAppManagerImplTest, Install_PlaceholderApp) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
   url_loader()->SetNextLoadUrlResult(
-      kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+      FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
 
   auto install_options = GetFooInstallOptions();
   install_options.install_placeholder = true;
@@ -823,7 +837,7 @@
       InstallAndWait(pending_app_manager_impl(), install_options);
 
   EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-  EXPECT_EQ(kFooWebAppUrl, url);
+  EXPECT_EQ(FooWebAppUrl(), url);
 
   EXPECT_EQ(1u, install_run_count());
   EXPECT_EQ(install_options, last_install_options());
@@ -831,8 +845,8 @@
 
 TEST_F(PendingAppManagerImplTest, InstallApps_Succeeds) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   std::vector<ExternalInstallOptions> apps_to_install;
@@ -843,7 +857,7 @@
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
+                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(1u, install_run_count());
   EXPECT_EQ(GetFooInstallOptions(), last_install_options());
@@ -851,8 +865,8 @@
 
 TEST_F(PendingAppManagerImplTest, InstallApps_FailsInstallationFails) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kWebAppDisabled);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kWebAppDisabled);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   std::vector<ExternalInstallOptions> apps_to_install;
@@ -863,16 +877,16 @@
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{kFooWebAppUrl, InstallResultCode::kWebAppDisabled}}));
+                {{FooWebAppUrl(), InstallResultCode::kWebAppDisabled}}));
 
   EXPECT_EQ(1u, install_run_count());
 }
 
 TEST_F(PendingAppManagerImplTest, InstallApps_PlaceholderApp) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
   url_loader()->SetNextLoadUrlResult(
-      kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+      FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
 
   auto install_options = GetFooInstallOptions();
   install_options.install_placeholder = true;
@@ -884,7 +898,7 @@
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
+                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(1u, install_run_count());
   EXPECT_EQ(install_options, last_install_options());
@@ -892,12 +906,12 @@
 
 TEST_F(PendingAppManagerImplTest, InstallApps_Multiple) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   std::vector<ExternalInstallOptions> apps_to_install;
@@ -909,8 +923,8 @@
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall},
-                 {kBarWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
+                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall},
+                 {BarWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(2u, install_run_count());
   EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -918,12 +932,12 @@
 
 TEST_F(PendingAppManagerImplTest, InstallApps_PendingInstallApps) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::RunLoop run_loop;
@@ -936,7 +950,7 @@
         base::BindLambdaForTesting(
             [&](const GURL& url, InstallResultCode code) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-              EXPECT_EQ(kFooWebAppUrl, url);
+              EXPECT_EQ(FooWebAppUrl(), url);
 
               EXPECT_EQ(1u, install_run_count());
               EXPECT_EQ(GetFooInstallOptions(), last_install_options());
@@ -952,7 +966,7 @@
         base::BindLambdaForTesting(
             [&](const GURL& url, InstallResultCode code) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-              EXPECT_EQ(kBarWebAppUrl, url);
+              EXPECT_EQ(BarWebAppUrl(), url);
 
               EXPECT_EQ(2u, install_run_count());
               EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -965,22 +979,22 @@
 
 TEST_F(PendingAppManagerImplTest, Install_PendingMultipleInstallApps) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  pending_app_manager_impl()->SetNextInstallationLaunchURL(kFooWebAppUrl,
-                                                           kFooLaunchUrl);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  pending_app_manager_impl()->SetNextInstallationLaunchURL(FooWebAppUrl(),
+                                                           FooLaunchUrl());
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  pending_app_manager_impl()->SetNextInstallationLaunchURL(kBarWebAppUrl,
-                                                           kBarLaunchUrl);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  pending_app_manager_impl()->SetNextInstallationLaunchURL(BarWebAppUrl(),
+                                                           BarLaunchUrl());
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kQuxWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  pending_app_manager_impl()->SetNextInstallationLaunchURL(kQuxWebAppUrl,
-                                                           kQuxLaunchUrl);
-  url_loader()->SetNextLoadUrlResult(kQuxWebAppUrl,
+      QuxWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  pending_app_manager_impl()->SetNextInstallationLaunchURL(QuxWebAppUrl(),
+                                                           QuxLaunchUrl());
+  url_loader()->SetNextLoadUrlResult(QuxWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   std::vector<ExternalInstallOptions> apps_to_install;
@@ -995,13 +1009,13 @@
         ++callback_calls;
         if (callback_calls == 1) {
           EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-          EXPECT_EQ(kFooWebAppUrl, url);
+          EXPECT_EQ(FooWebAppUrl(), url);
 
           EXPECT_EQ(2u, install_run_count());
           EXPECT_EQ(GetFooInstallOptions(), last_install_options());
         } else if (callback_calls == 2) {
           EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-          EXPECT_EQ(kBarWebAppUrl, url);
+          EXPECT_EQ(BarWebAppUrl(), url);
 
           EXPECT_EQ(3u, install_run_count());
           EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -1015,7 +1029,7 @@
       GetQuxInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kQuxWebAppUrl, url);
+        EXPECT_EQ(QuxWebAppUrl(), url);
 
         // The install request from Install should be processed first.
         EXPECT_EQ(1u, install_run_count());
@@ -1023,27 +1037,27 @@
       }));
 
   WebAppRegistrationWaiter(pending_app_manager_impl())
-      .AwaitNextRegistration(kQuxLaunchUrl, RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(QuxLaunchUrl(), RegistrationResultCode::kSuccess);
   WebAppRegistrationWaiter(pending_app_manager_impl())
-      .AwaitNextRegistration(kFooLaunchUrl, RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(FooLaunchUrl(), RegistrationResultCode::kSuccess);
   WebAppRegistrationWaiter(pending_app_manager_impl())
-      .AwaitNextRegistration(kBarLaunchUrl, RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(BarLaunchUrl(), RegistrationResultCode::kSuccess);
   EXPECT_EQ(3U, registration_run_count());
-  EXPECT_EQ(kBarLaunchUrl, last_registered_launch_url());
+  EXPECT_EQ(BarLaunchUrl(), last_registered_launch_url());
 }
 
 TEST_F(PendingAppManagerImplTest, InstallApps_PendingInstall) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kBarWebAppUrl,
+      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(BarWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kQuxWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kQuxWebAppUrl,
+      QuxWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(QuxWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::RunLoop run_loop;
@@ -1053,7 +1067,7 @@
       GetQuxInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kQuxWebAppUrl, url);
+        EXPECT_EQ(QuxWebAppUrl(), url);
 
         // The install request from Install should be processed first.
         EXPECT_EQ(1u, install_run_count());
@@ -1072,7 +1086,7 @@
         ++callback_calls;
         if (callback_calls == 1) {
           EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-          EXPECT_EQ(kFooWebAppUrl, url);
+          EXPECT_EQ(FooWebAppUrl(), url);
 
           // The install requests from InstallApps should be processed next.
           EXPECT_EQ(2u, install_run_count());
@@ -1082,7 +1096,7 @@
         }
         if (callback_calls == 2) {
           EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-          EXPECT_EQ(kBarWebAppUrl, url);
+          EXPECT_EQ(BarWebAppUrl(), url);
 
           EXPECT_EQ(3u, install_run_count());
           EXPECT_EQ(GetBarInstallOptions(), last_install_options());
@@ -1097,8 +1111,8 @@
 
 TEST_F(PendingAppManagerImplTest, AppUninstalled) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   {
@@ -1112,13 +1126,13 @@
   }
 
   // Simulate the app getting uninstalled.
-  registrar()->RemoveExternalAppByInstallUrl(kFooWebAppUrl);
+  registrar()->RemoveExternalAppByInstallUrl(FooWebAppUrl());
 
   // Try to install the app again.
   {
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-    url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+    url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                        WebAppUrlLoader::Result::kUrlLoaded);
 
     base::Optional<GURL> url;
@@ -1134,8 +1148,8 @@
 
 TEST_F(PendingAppManagerImplTest, ExternalAppUninstalled) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   {
@@ -1149,7 +1163,7 @@
   }
 
   // Simulate external app for the app getting uninstalled by the user.
-  const std::string app_id = GenerateFakeAppId(kFooWebAppUrl);
+  const std::string app_id = GenerateFakeAppId(FooWebAppUrl());
   install_finalizer()->SimulateExternalAppUninstalledByUser(app_id);
   if (registrar()->IsInstalled(app_id))
     registrar()->RemoveExternalApp(app_id);
@@ -1172,8 +1186,8 @@
 
   {
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-    url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+    url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                        WebAppUrlLoader::Result::kUrlLoaded);
 
     base::Optional<GURL> url;
@@ -1189,60 +1203,60 @@
 
 TEST_F(PendingAppManagerImplTest, UninstallApps_Succeeds) {
   registrar()->AddExternalApp(
-      GenerateFakeAppId(kFooWebAppUrl),
-      {kFooWebAppUrl, ExternalInstallSource::kExternalPolicy});
+      GenerateFakeAppId(FooWebAppUrl()),
+      {FooWebAppUrl(), ExternalInstallSource::kExternalPolicy});
 
-  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
+  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
                                                             true);
   UninstallAppsResults results = UninstallAppsAndWait(
       pending_app_manager_impl(), ExternalInstallSource::kExternalPolicy,
-      std::vector<GURL>{kFooWebAppUrl});
+      std::vector<GURL>{FooWebAppUrl()});
 
-  EXPECT_EQ(results, UninstallAppsResults({{kFooWebAppUrl, true}}));
+  EXPECT_EQ(results, UninstallAppsResults({{FooWebAppUrl(), true}}));
 
   EXPECT_EQ(1u, uninstall_call_count());
-  EXPECT_EQ(kFooWebAppUrl, last_uninstalled_app_url());
+  EXPECT_EQ(FooWebAppUrl(), last_uninstalled_app_url());
 }
 
 TEST_F(PendingAppManagerImplTest, UninstallApps_Fails) {
-  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
+  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
                                                             false);
   UninstallAppsResults results = UninstallAppsAndWait(
       pending_app_manager_impl(), ExternalInstallSource::kExternalPolicy,
-      std::vector<GURL>{kFooWebAppUrl});
-  EXPECT_EQ(results, UninstallAppsResults({{kFooWebAppUrl, false}}));
+      std::vector<GURL>{FooWebAppUrl()});
+  EXPECT_EQ(results, UninstallAppsResults({{FooWebAppUrl(), false}}));
 
   EXPECT_EQ(1u, uninstall_call_count());
-  EXPECT_EQ(kFooWebAppUrl, last_uninstalled_app_url());
+  EXPECT_EQ(FooWebAppUrl(), last_uninstalled_app_url());
 }
 
 TEST_F(PendingAppManagerImplTest, UninstallApps_Multiple) {
   registrar()->AddExternalApp(
-      GenerateFakeAppId(kFooWebAppUrl),
-      {kFooWebAppUrl, ExternalInstallSource::kExternalPolicy});
+      GenerateFakeAppId(FooWebAppUrl()),
+      {FooWebAppUrl(), ExternalInstallSource::kExternalPolicy});
   registrar()->AddExternalApp(
-      GenerateFakeAppId(kBarWebAppUrl),
-      {kFooWebAppUrl, ExternalInstallSource::kExternalPolicy});
+      GenerateFakeAppId(BarWebAppUrl()),
+      {FooWebAppUrl(), ExternalInstallSource::kExternalPolicy});
 
-  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
+  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
                                                             true);
-  install_finalizer()->SetNextUninstallExternalWebAppResult(kBarWebAppUrl,
+  install_finalizer()->SetNextUninstallExternalWebAppResult(BarWebAppUrl(),
                                                             true);
   UninstallAppsResults results = UninstallAppsAndWait(
       pending_app_manager_impl(), ExternalInstallSource::kExternalPolicy,
-      std::vector<GURL>{kFooWebAppUrl, kBarWebAppUrl});
+      std::vector<GURL>{FooWebAppUrl(), BarWebAppUrl()});
   EXPECT_EQ(results, UninstallAppsResults(
-                         {{kFooWebAppUrl, true}, {kBarWebAppUrl, true}}));
+                         {{FooWebAppUrl(), true}, {BarWebAppUrl(), true}}));
 
   EXPECT_EQ(2u, uninstall_call_count());
-  EXPECT_EQ(std::vector<GURL>({kFooWebAppUrl, kBarWebAppUrl}),
+  EXPECT_EQ(std::vector<GURL>({FooWebAppUrl(), BarWebAppUrl()}),
             uninstalled_app_urls());
 }
 
 TEST_F(PendingAppManagerImplTest, UninstallApps_PendingInstall) {
   pending_app_manager_impl()->SetNextInstallationTaskResult(
-      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-  url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+  url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                      WebAppUrlLoader::Result::kUrlLoaded);
 
   base::RunLoop run_loop;
@@ -1250,16 +1264,16 @@
       GetFooInstallOptions(),
       base::BindLambdaForTesting([&](const GURL& url, InstallResultCode code) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-        EXPECT_EQ(kFooWebAppUrl, url);
+        EXPECT_EQ(FooWebAppUrl(), url);
         run_loop.Quit();
       }));
 
-  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
+  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
                                                             false);
   UninstallAppsResults uninstall_results = UninstallAppsAndWait(
       pending_app_manager_impl(), ExternalInstallSource::kExternalPolicy,
-      std::vector<GURL>{kFooWebAppUrl});
-  EXPECT_EQ(uninstall_results, UninstallAppsResults({{kFooWebAppUrl, false}}));
+      std::vector<GURL>{FooWebAppUrl()});
+  EXPECT_EQ(uninstall_results, UninstallAppsResults({{FooWebAppUrl(), false}}));
   EXPECT_EQ(1u, uninstall_call_count());
 
   run_loop.Run();
@@ -1272,9 +1286,9 @@
 
   {
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
     url_loader()->SetNextLoadUrlResult(
-        kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+        FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
     base::Optional<GURL> url;
     base::Optional<InstallResultCode> code;
     std::tie(url, code) =
@@ -1287,10 +1301,10 @@
   {
     install_options.reinstall_placeholder = true;
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-    url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+    url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                        WebAppUrlLoader::Result::kUrlLoaded);
-    install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
+    install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
                                                               true);
 
     base::Optional<GURL> url;
@@ -1299,7 +1313,7 @@
         InstallAndWait(pending_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(kFooWebAppUrl, url.value());
+    EXPECT_EQ(FooWebAppUrl(), url.value());
 
     EXPECT_EQ(2u, install_run_count());
   }
@@ -1313,9 +1327,9 @@
 
   {
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
     url_loader()->SetNextLoadUrlResult(
-        kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+        FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
     base::Optional<GURL> url;
     base::Optional<InstallResultCode> code;
     std::tie(url, code) =
@@ -1328,9 +1342,9 @@
   {
     install_options.reinstall_placeholder = true;
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
     url_loader()->SetNextLoadUrlResult(
-        kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+        FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
 
     base::Optional<GURL> url;
     base::Optional<InstallResultCode> code;
@@ -1338,7 +1352,7 @@
         InstallAndWait(pending_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(kFooWebAppUrl, url.value());
+    EXPECT_EQ(FooWebAppUrl(), url.value());
 
     // Even though the placeholder app is already install, we make a call to
     // InstallFinalizer. InstallFinalizer ensures we don't unnecessarily
@@ -1355,9 +1369,9 @@
 
   {
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
     url_loader()->SetNextLoadUrlResult(
-        kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+        FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
     base::Optional<GURL> url;
     base::Optional<InstallResultCode> code;
     std::tie(url, code) =
@@ -1371,9 +1385,9 @@
     install_options.reinstall_placeholder = true;
     install_options.wait_for_windows_closed = true;
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(kFooWebAppUrl), 0);
-    url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(FooWebAppUrl()), 0);
+    url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                        WebAppUrlLoader::Result::kUrlLoaded);
 
     base::Optional<GURL> url;
@@ -1382,7 +1396,7 @@
         InstallAndWait(pending_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(kFooWebAppUrl, url.value());
+    EXPECT_EQ(FooWebAppUrl(), url.value());
 
     EXPECT_EQ(2u, install_run_count());
   }
@@ -1396,9 +1410,9 @@
 
   {
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
     url_loader()->SetNextLoadUrlResult(
-        kFooWebAppUrl, WebAppUrlLoader::Result::kRedirectedUrlLoaded);
+        FooWebAppUrl(), WebAppUrlLoader::Result::kRedirectedUrlLoaded);
     base::Optional<GURL> url;
     base::Optional<InstallResultCode> code;
     std::tie(url, code) =
@@ -1412,11 +1426,11 @@
     install_options.reinstall_placeholder = true;
     install_options.wait_for_windows_closed = true;
     pending_app_manager_impl()->SetNextInstallationTaskResult(
-        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
-    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(kFooWebAppUrl), 1);
-    url_loader()->SetNextLoadUrlResult(kFooWebAppUrl,
+        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(FooWebAppUrl()), 1);
+    url_loader()->SetNextLoadUrlResult(FooWebAppUrl(),
                                        WebAppUrlLoader::Result::kUrlLoaded);
-    install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
+    install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
                                                               true);
 
     base::Optional<GURL> url;
@@ -1425,7 +1439,7 @@
         InstallAndWait(pending_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(kFooWebAppUrl, url.value());
+    EXPECT_EQ(FooWebAppUrl(), url.value());
 
     EXPECT_EQ(2u, install_run_count());
   }
diff --git a/chrome/browser/web_applications/web_app_install_manager_unittest.cc b/chrome/browser/web_applications/web_app_install_manager_unittest.cc
index de658f6..2d11cf2d8 100644
--- a/chrome/browser/web_applications/web_app_install_manager_unittest.cc
+++ b/chrome/browser/web_applications/web_app_install_manager_unittest.cc
@@ -43,7 +43,11 @@
 
 namespace {
 
-const GURL kIconUrl{"https://example.com/app.ico"};
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL IconUrl() {
+  return GURL("https://example.com/app.ico");
+}
 
 base::NullableString16 ToNullableUTF16(const std::string& str) {
   return base::NullableString16(base::UTF8ToUTF16(str), false);
@@ -189,7 +193,7 @@
     auto web_app_info = std::make_unique<WebApplicationInfo>();
     web_app_info->app_url = url;
     WebApplicationIconInfo icon_info;
-    icon_info.url = kIconUrl;
+    icon_info.url = IconUrl();
     icon_info.square_size_px = icon_size::k256;
     web_app_info->icon_infos.push_back(std::move(icon_info));
     return web_app_info;
@@ -410,7 +414,7 @@
               event_order.push_back(task_index == 1 ? Event::Task1_Started
                                                     : Event::Task2_Started);
               IconsMap icons_map;
-              AddIconToIconsMap(kIconUrl, icon_size::k256, SK_ColorBLUE,
+              AddIconToIconsMap(IconUrl(), icon_size::k256, SK_ColorBLUE,
                                 &icons_map);
               return icons_map;
             }));
@@ -502,7 +506,7 @@
               run_loop.Quit();
 
               IconsMap icons_map;
-              AddIconToIconsMap(kIconUrl, icon_size::k256, SK_ColorBLUE,
+              AddIconToIconsMap(IconUrl(), icon_size::k256, SK_ColorBLUE,
                                 &icons_map);
               return icons_map;
             }));
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
index 93b1ef5..c771d84 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
@@ -11,7 +11,7 @@
 <translation id="2679096858700291438">‏لقد أدخلت كلمة مرور Windows غير صحيحة. يُرجى إعادة المحاولة.</translation>
 <translation id="2831078752570172210">تم قفل حسابك. يُرجى التواصل مع مشرف النظام.</translation>
 <translation id="2844349213149998955">لا يُسمح بتسجيل الدخول باستخدام حساب شخصي على هذا الجهاز. يُرجى تسجيل الدخول باستخدام حساب عمل.</translation>
-<translation id="2995851317559936311">يُسمح بتغيير كلمة المرور في نطاق وحدة التحكم فقط. يرجى التواصل مع المشرف.</translation>
+<translation id="2995851317559936311">يُسمح بتغيير كلمة المرور في نطاق وحدة التحكم فقط. يُرجى التواصل مع المشرف.</translation>
 <translation id="3306357053520292004">سبق وتمت إضافة مستخدم على جهاز الكمبيوتر هذا باستخدام هذا الحساب. يُرجى تسجيل الدخول باستخدام حساب آخر.</translation>
 <translation id="3926852373333893095">‏لا يُسمح إلا لمستخدمي "G Suite للمؤسسات" بتسجيل الدخول.</translation>
 <translation id="4057329986137569701">حدث خطأ داخلي.</translation>
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">إضافة حساب العمل</translation>
 <translation id="7811865856574012727">حظر المشرف تسجيل الدخول على الجهاز على النطاقات التالية: <ph name="EMAIL_DOMAINS" />. يُرجى إعادة المحاولة باستخدام حساب عمل صالح.</translation>
 <translation id="7856245195110636219">‏تتعذّر المتابعة بدون إدخال كلمة مرور Windows الحالية. يُرجى التواصل مع مشرف النظام.</translation>
-<translation id="8109730953933509335">تمت محاولة تغيير كلمة المرور على مستخدمٍ غير صحيح، يُرجى التواصل مع المشرف.</translation>
+<translation id="8109730953933509335">تمت محاولة تغيير كلمة المرور باستخدام اسم مستخدم غير صحيح، يُرجى التواصل مع المشرف.</translation>
 <translation id="8639729688781680518">‏نسيت كلمة مرور Windows</translation>
 <translation id="866458870819756755">تعذَّر إنشاء مستخدم.</translation>
 <translation id="8875753657315897487">تسجيل الدخول باستخدام حساب العمل</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb
index 29e28d06..be2b52e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb
@@ -1,7 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="as">
-<translation id="1337778609052285767">বৰ্তমানৰ পাছৱৰ্ডটোৱে জটিলতাৰ আৱশ্যকীয়তাসমূহ পূৰা কৰা নাই। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation>
+<translation id="1337778609052285767">বৰ্তমানৰ পাছৱৰ্ডটোৱে পাছৱৰ্ডৰ জটিলতাৰ আৱশ্যকীয়তাসমূহ পূৰা কৰা নাই। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation>
 <translation id="1337821341856692531">আপোনাৰ বৰ্তমানৰ Windowsৰ পাছৱৰ্ড নিদিয়াকৈ অব্যাহত ৰাখিলে ঘূৰাই পাব নোৱৰাকৈ তথ্য হেৰাই যাব পাৰে।</translation>
 <translation id="1383286653814676580">Google ক্ৰেডেনশ্বিয়েল প্ৰদানকাৰী ছাইন ইন পৃষ্ঠা চলাবলৈ ব্যৱহাৰ কৰা হৈছে৷</translation>
 <translation id="1894475569413661128">আপোনাৰ কৰ্মস্থানৰ একাউণ্ট ব্যৱহাৰ কৰি ছাইন ইন কৰক।</translation>
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">কৰ্মস্থানৰ একাউণ্ট যোগ কৰক</translation>
 <translation id="7811865856574012727">আপোনাৰ প্ৰশাসকে নিম্নোক্ত ড’মেইনসমূহত ডিভাইচটোৰ ছাইন-ইন প্ৰতিবন্ধিত কৰিছে: <ph name="EMAIL_DOMAINS" />। কৰ্মস্থানৰ এটা বৈধ একাউণ্ট ব্যৱহাৰ কৰি পুনৰ চেষ্টা কৰক।</translation>
 <translation id="7856245195110636219">Windowsৰ বৰ্তমানৰ পাছৱৰ্ডটো নিদিয়াকৈ অব্যাহত ৰাখিব নোৱাৰিলে। অনুগ্ৰহ কৰি এজন ছিষ্টেম প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation>
-<translation id="8109730953933509335">অমান্য ব্যৱহাকাৰীৰ বাবে পাছৱৰ্ড সলনি কৰাৰ প্ৰয়াস কৰা হৈছে। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation>
+<translation id="8109730953933509335">অমান্য ব্যৱহাৰকাৰীৰ বাবে পাছৱৰ্ড সলনি কৰাৰ প্ৰয়াস কৰা হৈছে। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation>
 <translation id="8639729688781680518">Windowsৰ পাছৱৰ্ড পাহৰিছোঁ</translation>
 <translation id="866458870819756755">এজন ব্যৱহাৰকাৰী সৃষ্টি কৰিব পৰা নগ'ল।</translation>
 <translation id="8875753657315897487">আপোনাৰ কৰ্মস্থানৰ একাউণ্ট ব্যৱহাৰ কৰি ছাইন ইন কৰক</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
index ffe3a7e..e2a10248 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
@@ -1,7 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="bn">
-<translation id="1337778609052285767">বর্তমান পাসওয়ার্ড জটিলতার প্রয়োজনীয়তা পূরণ করছে না। আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
+<translation id="1337778609052285767">বর্তমান পাসওয়ার্ডটি যতটা জটিল হওয়া প্রয়োজন ততখানি হয়নি। আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="1337821341856692531">Windows-এর বর্তমান পাসওয়ার্ড না দিয়ে এগিয়ে গেলে তথ্যের অপূরণীয় ক্ষতি হতে পারে।</translation>
 <translation id="1383286653814676580">Google ক্রেডেনশিয়াল প্রোভাইডার সাইন-ইন পৃষ্ঠা চালানোর জন্য ব্যবহার করা হয়।</translation>
 <translation id="1894475569413661128">আপনার কাজের অ্যাকাউন্ট ব্যবহার করে সাইন-ইন করুন।</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_eu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_eu.xtb
index 18e8970..fa28af3 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_eu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_eu.xtb
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">Gehitu laneko kontua</translation>
 <translation id="7811865856574012727">Gailuan saioa hasteko aukera domeinu hauetara mugatu du administratzaileak: <ph name="EMAIL_DOMAINS" />. Erabili baliozko laneko kontu bat.</translation>
 <translation id="7856245195110636219">Ezin da egin aurrera, uneko Windows pasahitza idatzi ezean. Jarri sistemaren administratzailearekin harremanetan.</translation>
-<translation id="8109730953933509335">Balio ez duen erabiltzaile batean saiatu da pasahitza aldatzen. Jarri administratzailearekin harremanetan.</translation>
+<translation id="8109730953933509335">Balio ez duen erabiltzaile baten pasahitza aldatzeko saiakera egin da. Jarri administratzailearekin harremanetan.</translation>
 <translation id="8639729688781680518">Ahaztu Windows pasahitza</translation>
 <translation id="866458870819756755">Ezin izan da sortu erabiltzailea.</translation>
 <translation id="8875753657315897487">Hasi saioa laneko kontuarekin</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb
index 46161b63..278fea1e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">Ajouter un compte professionnel</translation>
 <translation id="7811865856574012727">Votre administrateur a restreint la connexion d'appareil aux domaines suivants : <ph name="EMAIL_DOMAINS" />. Réessayez en utilisant un compte professionnel valide.</translation>
 <translation id="7856245195110636219">Pour continuer, vous devez entrer le mot de passe Windows actuel. Veuillez communiquer avec un administrateur système.</translation>
-<translation id="8109730953933509335">Un utilisateur incorrect a tenté de modifier le mot de passe. Veuillez communiquer avec votre administrateur.</translation>
+<translation id="8109730953933509335">La tentative de modification du mot de passe a été effectuée pour un utilisateur incorrect. Veuillez communiquer avec votre administrateur.</translation>
 <translation id="8639729688781680518">Mot de passe Windows oublié</translation>
 <translation id="866458870819756755">Impossible de créer l'utilisateur.</translation>
 <translation id="8875753657315897487">Connectez-vous à l'aide de votre compte professionnel</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
index dcc9f7eb..82b0c80 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
@@ -19,7 +19,7 @@
 <translation id="4300229033992784001">Le mot de passe de votre compte a été modifié. Veuillez saisir votre mot de passe Windows actuel afin de synchroniser votre compte Windows avec votre compte professionnel.</translation>
 <translation id="4669462973597624151">Échec de la tentative de modification du mot de passe. Veuillez contacter votre administrateur.</translation>
 <translation id="4706454071748629324">Échec de l'ajout d'un nouvel utilisateur. Ce ordinateur n'autorise que la création d'un utilisateur avec un compte professionnel.</translation>
-<translation id="5186761973554910131">Nom d'ordinateur non valide fourni lors du changement de mot de passe. Veuillez contacter votre administrateur.</translation>
+<translation id="5186761973554910131">Nom d'ordinateur non valide fourni lors de la tentative de changement de mot de passe. Veuillez contacter votre administrateur.</translation>
 <translation id="6033715878377252112">Outil d'aide du fournisseur d'informations d'identification Google pour Windows</translation>
 <translation id="6149399665202317746">Fournisseur d'informations d'identification Google pour Windows</translation>
 <translation id="6239180560789153226">Votre appareil présente des informations de récupération manquantes. Connectez-vous avec votre compte professionnel Google.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
index 1ff10d73..ccc8e076 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="gu">
+<translation id="1337778609052285767">'વર્તમાન પાસવર્ડ' પાસવર્ડ માટેની જટિલતાની આવશ્યકતાઓ પૂર્ણ કરતો નથી. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="1337821341856692531">તમારા વર્તમાન Windows પાસવર્ડ વિના આગળ વધવું કદાચ પાછી મેળવી ન શકાય તેવા માહિતીના નુકસાનનું કારણ બની શકે છે.</translation>
 <translation id="1383286653814676580">Google લૉગ ઇન વિગત પ્રદાતા સાઇન ઇન પેજ ચલાવવા માટે ઉપયોગમાં લેવામાં આવે છે.</translation>
 <translation id="1894475569413661128">તમારા ઑફિસના એકાઉન્ટનો ઉપયોગ કરીને સાઇન ઇન કરો.</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">તમે Windowsનો ખોટો પાસવર્ડ દાખલ કર્યો છે. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="2831078752570172210">તમારું એકાઉન્ટ લૉક કરવામાં આવ્યું છે. કૃપા કરીને તમારા સિસ્ટમ વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="2844349213149998955">આ ડિવાઇસ પર વ્યક્તિગત એકાઉન્ટ વડે સાઇન ઇન કરવાની મંજૂરી નથી. કૃપા કરીને ઑફિસના એકાઉન્ટ વડે લૉગ ઇન કરો.</translation>
+<translation id="2995851317559936311">ફક્ત ડોમેન નિયંત્રક પર પાસવર્ડ બદલવાની મંજૂરી છે. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="3306357053520292004">આ કમ્પ્યુટર પરના વપરાશકર્તાને આ એકાઉન્ટનો ઉપયોગ કરીને પહેલેથી ઉમેરવામાં આવેલા છે. કૃપા કરીને કોઈ અલગ એકાઉન્ટ વડે સાઇન ઇન કરો.</translation>
 <translation id="3926852373333893095">માત્ર GSuite એન્ટરપ્રાઇઝ વપરાશકર્તાઓ જ લૉગ ઇન કરવાની મંજૂરી ધરાવે છે.</translation>
 <translation id="4057329986137569701">કોઈ આંતરિક ભૂલ આવી.</translation>
 <translation id="4267670563222825190">તમારા એકાઉન્ટ માટે કોઈ ડોમેન. વપરાશકર્તા શોધી શક્યાં નથી. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="4300229033992784001">તમારા એકાઉન્ટનો પાસવર્ડ બદલાઈ ગયો છે. તમારા Windows એકાઉન્ટ સાથે તમારા ઑફિસના એકાઉન્ટને સિંક કરવા માટે કૃપા કરીને તમારો હાલનો Windows પાસવર્ડ દાખલ કરો.</translation>
+<translation id="4669462973597624151">પાસવર્ડ બદલવાનો પ્રયાસ નિષ્ફળ રહ્યો. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="4706454071748629324">નવા વપરાશકર્તા ઉમેરવામાં નિષ્ફળ થયાં. આ કમ્પ્યુટર ઑફિસના એકાઉન્ટનો ઉપયોગ કરીને માત્ર એક વપરાશકર્તા બનાવવાની મંજૂરી આપે છે.</translation>
+<translation id="5186761973554910131">પાસવર્ડ બદલવાનો પ્રયાસ કરતી વખતે અમાન્ય કમ્પ્યુટર નામ આપવામાં આવ્યું હતું. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="6033715878377252112">Windows માટે Google એકાઉન્ટની પાત્રતા ચકાસનાર સહાયક</translation>
 <translation id="6149399665202317746">Windows માટે Google એકાઉન્ટની પાત્રતા ચકાસનાર</translation>
 <translation id="6239180560789153226">ડિવાઇસમાં પુનઃપ્રાપ્તિ માટેની માહિતી નથી. તમારા ઑફિસના Google એકાઉન્ટનો ઉપયોગ કરીને સાઇન ઇન કરો.</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">કાર્ય એકાઉન્ટ ઉમેરો</translation>
 <translation id="7811865856574012727">તમારા વ્યવસ્થાપક દ્વારા નીચેના ડોમેનમાં ડિવાઇસના સાઇન ઇન પર પ્રતિબંધ મૂકવામાં આવ્યો છે: <ph name="EMAIL_DOMAINS" />. ઑફિસના માન્ય એકાઉન્ટનો ઉપયોગ કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="7856245195110636219">Windowsનો હાલનો પાસવર્ડ દાખલ કર્યા વિના આગળ વધી શકતા નથી. કૃપા કરીને સિસ્ટમ વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
+<translation id="8109730953933509335">અમાન્ય વપરાશકર્તા દ્વારા પાસવર્ડ બદલવાનો પ્રયાસ કરવામાં આવ્યો હતો. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="8639729688781680518">Windows પાસવર્ડ ભૂલી ગયા</translation>
 <translation id="866458870819756755">વપરાશકર્તા બનાવી શકાયો નથી.</translation>
 <translation id="8875753657315897487">તમારા ઑફિસના એકાઉન્ટનો ઉપયોગ કરીને સાઇન ઇન કરો</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb
index ed6c62d..7305b06e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb
@@ -11,7 +11,7 @@
 <translation id="2679096858700291438">Hai inserito una password di Windows errata. Riprova.</translation>
 <translation id="2831078752570172210">Il tuo account è stato bloccato. Contatta l'amministratore di sistema.</translation>
 <translation id="2844349213149998955">Su questo dispositivo non è consentito l'accesso con un account personale. Accedi con un account di lavoro.</translation>
-<translation id="2995851317559936311">È consentito modificare la password solo sul controller di dominio. Contatta l'amministratore.</translation>
+<translation id="2995851317559936311">È consentito modificare la password solo sul titolare del dominio. Contatta l'amministratore.</translation>
 <translation id="3306357053520292004">Su questo computer è stato già aggiunto un utente usando questo account. Accedi con un altro account.</translation>
 <translation id="3926852373333893095">Possono accedere soltanto gli utenti di G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Errore interno.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb
index cc8c7794..c213e4ab 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">Жұмыс есептік жазбасын енгізу</translation>
 <translation id="7811865856574012727">Әкімші осы құрылғыда мына домендерге кіруге тыйым салды: <ph name="EMAIL_DOMAINS" />. Жарамды жұмыс есептік жазбасы арқылы әрекетті қайталап көріңіз.</translation>
 <translation id="7856245195110636219">Қолданыстағы Windows құпия сөзін енгізбей жалғастыру мүмкін болмады. Жүйе әкімшісіне хабарласыңыз.</translation>
-<translation id="8109730953933509335">Жарамсыз пайдаланушының құпия сөзі ауыстырылуда. Әкімшіге хабарласыңыз.</translation>
+<translation id="8109730953933509335">Құпия сөзін ауыстырмақ болған пайдаланушы жарамсыз. Әкімшіге хабарласыңыз.</translation>
 <translation id="8639729688781680518">Windows құпия сөзін ұмытып қалдым.</translation>
 <translation id="866458870819756755">Пайдаланушы жасалмады.</translation>
 <translation id="8875753657315897487">Жұмыс есептік жазбаңызбен кіріңіз</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
index bfc83cb..08656fa 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="kn">
+<translation id="1337778609052285767">ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್, ಪಾಸ್‌ವರ್ಡ್ ಕಾಠಿಣ್ಯತೆ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸುವುದಿಲ್ಲ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="1337821341856692531">ನಿಮ್ಮ ಪ್ರಸ್ತುತ Windows ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸದೆಯೇ ಮುಂದುವರಿಸಿದರೆ, ಮಾಹಿತಿಯ ನಷ್ಟಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="1383286653814676580">Google ರುಜುವಾತು ಪೂರೈಕೆದಾರರ ಸೈನ್ ಇನ್ ಪುಟವನ್ನು ಚಲಾಯಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="1894475569413661128">ನಿಮ್ಮ ಕೆಲಸದ ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">ನೀವು ತಪ್ಪಾದ Windows ಪಾಸ್‌ವರ್ಡ್ ಒಂದನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="2831078752570172210">ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಲಾಕ್ ಮಾಡಲಾಗಿದೆ. ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="2844349213149998955">ಈ ಸಾಧನದಲ್ಲಿ ವೈಯಕ್ತಿಕ ಖಾತೆಯೊಂದಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ. ಕೆಲಸದ ಖಾತೆಯೊಂದಿಗೆ ಲಾಗಿನ್ ಮಾಡಿ.</translation>
+<translation id="2995851317559936311">ಡೊಮೇನ್ ಕಂಟ್ರೋಲರ್‌ನಲ್ಲಿ ಮಾತ್ರ ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="3306357053520292004">ಈ ಖಾತೆಯನ್ನು ಬಳಸಿ, ಈ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿನ ಒಬ್ಬ ಬಳಕೆದಾರರನ್ನು ಈಗಾಗಲೇ ಸೇರಿಸಲಾಗಿದೆ ಬೇರೊಂದು ಖಾತೆಯನ್ನು ಬಳಸಿ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="3926852373333893095">GSuite ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರರು ಮಾತ್ರ ಲಾಗಿನ್ ಮಾಡಬಹುದು.</translation>
 <translation id="4057329986137569701">ಆಂತರಿಕ ದೋಷ ಸಂಭವಿಸಿದೆ.</translation>
 <translation id="4267670563222825190">ನಿಮ್ಮ ಖಾತೆಗೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಡೊಮೇನ್ ಬಳಕೆದಾರರು ಕಂಡುಬಂದಿಲ್ಲ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="4300229033992784001">ನಿಮ್ಮ ಖಾತೆಯ ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಗಿದೆ. ನಿಮ್ಮ Windows ಖಾತೆಯನ್ನು ನಿಮ್ಮ ಕೆಲಸದ ಖಾತೆಯೊಂದಿಗೆ ಸಿಂಕ್ ಮಾಡುವುದಕ್ಕಾಗಿ, ನಿಮ್ಮ ಪ್ರಸ್ತುತ Windows ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ.</translation>
+<translation id="4669462973597624151">ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸುವ ಪ್ರಯತ್ನವು ವಿಫಲವಾಗಿದೆ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="4706454071748629324">ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಲು ವಿಫಲವಾಗಿದೆ. ಕೆಲಸದ ಖಾತೆಯನ್ನು ಬಳಸಿ, ಒರ್ವ ಬಳಕೆದಾರರನ್ನು ಮಾತ್ರ ರಚಿಸಲು ಈ ಕಂಪ್ಯೂಟರ್ ಅನುಮತಿ ನೀಡುತ್ತದೆ.</translation>
+<translation id="5186761973554910131">ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಾಗ ಅಮಾನ್ಯವಾದ ಕಂಪ್ಯೂಟರ್ ಹೆಸರನ್ನು ನೀಡಲಾಗಿದೆ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="6033715878377252112">Windows ಸಹಾಯಕಕ್ಕಾಗಿ Google ರುಜುವಾತು ಪೂರೈಕೆದಾರ</translation>
 <translation id="6149399665202317746">Windows ಗಾಗಿ Google ರುಜುವಾತು ಪೂರೈಕೆದಾರ</translation>
 <translation id="6239180560789153226">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಯಾವುದೇ ಮರುಪಡೆಯುವಿಕೆ ಮಾಹಿತಿ ಇಲ್ಲ. ನಿಮ್ಮ Google ಕೆಲಸದ ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">ಕೆಲಸದ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="7811865856574012727">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಈ ಕೆಳಗಿನ ಡೊಮೇನ್‌ಗಳಿಗೆ ಸಾಧನ ಸೈನ್-ಇನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಿದ್ದಾರೆ: <ph name="EMAIL_DOMAINS" />. ಮಾನ್ಯವಾದ ಕೆಲಸದ ಖಾತೆಯೊಂದನ್ನು ಬಳಸಿಕೊಂಡು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="7856245195110636219">ಪ್ರಸ್ತುತ Windows ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸದೆಯೇ ಮುಂದುವರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
+<translation id="8109730953933509335">ಅಮಾನ್ಯ ಬಳಕೆದಾರರ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗಿದೆ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="8639729688781680518">Windows ಪಾಸ್‌ವರ್ಡ್ ಮರೆತು ಹೋಗಿದೆ</translation>
 <translation id="866458870819756755">ಬಳಕೆದಾರರೊಬ್ಬರನ್ನು ರಚಿಸಲಾಗಲಿಲ್ಲ.</translation>
 <translation id="8875753657315897487">ನಿಮ್ಮ ಕೆಲಸದ ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb
index 7a77603..3af9897 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ky">
+<translation id="1337778609052285767">Учурдагы сырсөз татаал сырсөзгө коюлган талаптарга жооп бербейт. Администраторуңузга кайрылыңыз.</translation>
 <translation id="1337821341856692531">Windows сырсөзүн киргизбестен улантсаңыз, маалыматтар биротоло жоголуп кетиши мүмкүн.</translation>
 <translation id="1383286653814676580">Google'дун эсептик дайындарды камсыздоочусуна кирүү барагын иштетүү үчүн колдонулат.</translation>
 <translation id="1894475569413661128">Жумуш аккаунтуңуз менен кириңиз.</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">Туура эмес Windows сырсөзүн киргиздиңиз. Кайра аракет кылыңыз.</translation>
 <translation id="2831078752570172210">Аккаунтуңуз кулпуланып калган. Тутум администраторуңузга кайрылыңыз.</translation>
 <translation id="2844349213149998955">Бул түзмөктөн жеке аккаунт менен кирүүгө уруксат берилген эмес. Жумуш аккаунту менен кириңиз.</translation>
+<translation id="2995851317559936311">Сырсөздү доменди көзөмөлдөгүчтө гана өзгөртүүгө болот. Администраторуңузга кайрылыңыз.</translation>
 <translation id="3306357053520292004">Бул компьютердеги колдонуучу ушул аккаунт менен мурунтан эле кошулган. Башка аккаунт менен кириңиз.</translation>
 <translation id="3926852373333893095">GSuite ишкана версиясынын колдонуучулары гана кире алышат.</translation>
 <translation id="4057329986137569701">Ички ката кетти.</translation>
 <translation id="4267670563222825190">Аккаунтуңуз үчүн домендин колдонуучусу табылган жок. Администраторуңузга кайрылыңыз.</translation>
 <translation id="4300229033992784001">Аккаунтуңуздун сырсөзү өзгөрдү. Windows аккаунтуңузду жумуш аккаунтуңуз менен шайкештирүү үчүн учурдагы Windows сырсөзүңүздү киргизиңиз.</translation>
+<translation id="4669462973597624151">Сырсөздү өзгөртүү аракети аткарылган жок. Администраторуңузга кайрылыңыз.</translation>
 <translation id="4706454071748629324">Жаңы колдонуучу кошулган жок. Бул компьютерде бир жумуш аккаунтун гана түзүүгө болот.</translation>
+<translation id="5186761973554910131">Сырсөздү өзгөртүүгө аракет жасалганда компьютердин аталышы туура эмес көрсөтүлдү. Администраторуңузга кайрылыңыз.</translation>
 <translation id="6033715878377252112">Windows үчүн Google'дун эсептик дайындарын камсыздоочунун жардамчысы</translation>
 <translation id="6149399665202317746">Windows үчүн Google'дун эсептик дайындарын камсыздоочу</translation>
 <translation id="6239180560789153226">Түзмөгүңүздө калыбына келтирүүчү маалымат жок. Google жумуш аккаунтуңуз менен кириңиз.</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">Жумуш аккаунтун кошуу</translation>
 <translation id="7811865856574012727">Администраторуңуз төмөнкү домендерге түзмөктөн кирүүнү чектеп койду: <ph name="EMAIL_DOMAINS" />. Жарамдуу жумуш аккаунту менен кайра аракет кылып көрүңүз.</translation>
 <translation id="7856245195110636219">Windows'тун учурдагы сырсөзүн киргизмейинче улантууга болбойт. Тутум администраторуна кайрылыңыз.</translation>
+<translation id="8109730953933509335">Туура эмес колдонуучунун сырсөзүн өзгөртүүгө аракет жасалды. Администраторуңузга кайрылыңыз.</translation>
 <translation id="8639729688781680518">Windows сырсөзүн унутуп калдым</translation>
 <translation id="866458870819756755">Колдонуучу түзүлбөй калды.</translation>
 <translation id="8875753657315897487">Жумуш аккаунтуңуз менен кириңиз</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
index e8e5f8e..35e14fa 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
@@ -19,7 +19,7 @@
 <translation id="4300229033992784001">നിങ്ങളുടെ അക്കൗണ്ടിൻ്റെ പാസ്‌വേഡ് മാറ്റി. Windows അക്കൗണ്ടുമായി ഔദ്യോഗിക അക്കൗണ്ട് സമന്വയിപ്പിക്കാൻ നിങ്ങളുടെ നിലവിലെ Windows പാസ്‌വേഡ് നൽകുക.</translation>
 <translation id="4669462973597624151">പാസ്‌വേഡ് മാറ്റാനായില്ല. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക.</translation>
 <translation id="4706454071748629324">പുതിയ ഉപയോക്താവിനെ ചേർക്കാനായില്ല. ഒരു ഔദ്യോഗിക അക്കൗണ്ട് ഉപയോഗിച്ച് ഒരു ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാൻ മാത്രമേ ഈ കമ്പ്യൂട്ടർ അനുവദിക്കൂ.</translation>
-<translation id="5186761973554910131">പാസ്‌വേഡ് മാറ്റാൻ ശ്രമിക്കുമ്പോൾ നൽകിയ, കമ്പ്യൂട്ടറിന്റെ പേര് അസാധുവാണ്. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക.</translation>
+<translation id="5186761973554910131">പാസ്‌വേഡ് മാറ്റാൻ ശ്രമിച്ചപ്പോൾ നൽകിയ കമ്പ്യൂട്ടറിന്റെ പേര് അസാധുവാണ്. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക.</translation>
 <translation id="6033715878377252112">Windows സഹായിയ്ക്കുള്ള Google ക്രെഡൻഷ്യൽ ദാതാവ്</translation>
 <translation id="6149399665202317746">Windows-നായുള്ള Google ക്രെഡൻഷ്യൽ ദാതാവ്</translation>
 <translation id="6239180560789153226">നിങ്ങളുടെ ഉപകരണത്തിലെ വീണ്ടെടുക്കൽ വിവരം നഷ്ടപ്പെട്ടിരിക്കുന്നു. ഔദ്യോഗിക Google അക്കൗണ്ട് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുക.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
index ddd4627e..55185f9 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="mr">
+<translation id="1337778609052285767">सध्याचे पासवर्ड जटिल आवश्यकतांची पूर्तता करत नाही. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="1337821341856692531">तुमच्या सध्याच्या Windows पासवर्ड एंटर केल्याशिवाय सुरू ठेवल्यास, माहितीचे भरून न काढता येणारे नुकसान होऊ शकते.</translation>
 <translation id="1383286653814676580">Google क्रेडेंशियल पुरवठादार साइन इन पेज रन करण्यासाठी वापरले.</translation>
 <translation id="1894475569413661128">तुमचे ऑफिस खाते वापरून साइन इन करा.</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">तुम्ही चुकीचा Windows पासवर्ड एंटर केला आहे. कृपया पुन्हा प्रयत्न करा.</translation>
 <translation id="2831078752570172210">तुमचे खाते लॉक केले गेले आहे. कृपया तुमच्या सिस्टम अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="2844349213149998955">या डिव्हाइसवर वैयक्तिक खात्यासह साइन इन करण्याची अनुमती नाही. कृपया ऑफिसचे खाते वापरून लॉगिन करा.</translation>
+<translation id="2995851317559936311">फक्त डोमेन नियंत्रकावर पासवर्ड बदलण्यास अनुमती आहे. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="3306357053520292004">हे खाते वापरून या काँप्युटरवरील वापरकर्त्याला आधीच जोडले गेले आहे. कृपया वेगळ्या खात्याने साइन इन करा.</translation>
 <translation id="3926852373333893095">फक्त GSuite एंटरप्राइझ वापरकर्त्यांना लॉगिन करण्याची अनुमती आहे.</translation>
 <translation id="4057329986137569701">अंतर्गत एरर आली.</translation>
 <translation id="4267670563222825190">तुमच्या खात्यासाठी कोणताही डोमेन वापरकर्ता शोधू शकलो नाही. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="4300229033992784001">तुमचा खाते पासवर्ड बदलला आहे. तुमचे Windows खाते तुमच्या ऑफिस खात्याशी सिंक करण्यासाठी कृपया तुमचा सद्य Windows पासवर्ड एंटर करा.</translation>
+<translation id="4669462973597624151">पासवर्ड बदलण्याचा प्रयत्न करता आला नाही. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="4706454071748629324">नवीन वापरकर्ता जोडता आला नाही. हा काँप्युटर ऑफिस खाते वापरून फक्त एकच वापरकर्ता तयार करू देतो.</translation>
+<translation id="5186761973554910131">पासवर्ड बदलण्याचा प्रयत्न करत असताना कॉंप्युटर नाव चुकीचे दिले. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="6033715878377252112">Windows हेल्परसाठी Google क्रेडेंशियल पुरवठादार</translation>
 <translation id="6149399665202317746">Windows साठी Google क्रेडेंशियल पुरवठादार</translation>
 <translation id="6239180560789153226">तुमच्या डिव्हाइसची रिकव्हरी माहिती गहाळ झाली आहे तुमचे Google ऑफिस खाते वापरून साइन इन करा.</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">ऑफिस खाते जोडा</translation>
 <translation id="7811865856574012727">तुमच्या अ‍ॅडमिनिस्ट्रेटरने खालील डोमेनसाठी डिव्हाइसमध्ये साइन इन करणे प्रतिबंधित केले आहे: <ph name="EMAIL_DOMAINS" />. योग्य ऑफिस खाते वापरून पुन्हा प्रयत्न करा.</translation>
 <translation id="7856245195110636219">सध्याचा Windows पासवर्ड एंटर केल्याशिवाय सुरू ठेवता येणार नाही. कृपया सिस्टम अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
+<translation id="8109730953933509335">चुकीच्या वापरकर्त्याने पासवर्ड बदलण्याचा प्रयत्न केला. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="8639729688781680518">Windows पासवर्ड विसरलात</translation>
 <translation id="866458870819756755">वापरकर्ता तयार करता आला नाही.</translation>
 <translation id="8875753657315897487">तुमचे ऑफिस खाते वापरून साइन इन करा</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb
index 0c83677..901f703 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb
@@ -1,7 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ne">
-<translation id="1337778609052285767">हाल प्रविष्टि गरिएको पासवर्ड पासवर्डको जटिलतासम्बन्धी मापदण्डहरूअनुरूप छैन। कृपया आफ्ना व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
+<translation id="1337778609052285767">हाल प्रविष्टि गरिएको पासवर्ड जति जटिल हुनु पर्ने हो त्यति जटिल छैन। कृपया आफ्ना प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="1337821341856692531">तपाईंको हालको Windows को पासवर्ड प्रविष्टि नगरी जारी राख्नुले यसपछि कहिल्यै प्राप्त गर्न नमिल्ने गरी जानकारी गुम्न सक्छ।</translation>
 <translation id="1383286653814676580">Google प्रमाण प्रदायकको साइन इन पृष्ठ सञ्चालन गर्न प्रयोग गरिन्छ।</translation>
 <translation id="1894475569413661128">आफ्नो कार्य खाता प्रयोग गरी साइन इन गर्नुहोस्।</translation>
@@ -11,15 +11,15 @@
 <translation id="2679096858700291438">तपाईंले Windows को गलत पासवर्ड प्रविष्टि गर्नुहोस्। कृपया फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="2831078752570172210">तपाईंको खाता लक गरिएको छ। कृपया आफ्नो प्रणालीका प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="2844349213149998955">यस यन्त्रमा व्यक्तिगत खाताबाट साइन इन गर्ने अनुमति छैन। कृपया कुनै कार्य खाता प्रयोग गरी लग इन गर्नुहोस्।</translation>
-<translation id="2995851317559936311">डोमेन नियन्त्रकमा गएर मात्र पासवर्ड परिवर्तन गर्न सकिन्छ। कृपया आफ्ना व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
+<translation id="2995851317559936311">डोमेन नियन्त्रकमा गएर मात्र पासवर्ड परिवर्तन गर्न सकिन्छ। कृपया आफ्ना प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="3306357053520292004">यस कम्प्युटरका प्रयोगकर्तालाई यो खाता प्रयोग गरी पहिले नै थपिएको छ। कृपया अर्को कुनै खाता प्रयोग गरी साइन इन गर्नुहोस्</translation>
 <translation id="3926852373333893095">GSuite का उद्यम प्रयोगकर्ताहरूलाई मात्र लग इन गर्ने अनुमति छ।</translation>
 <translation id="4057329986137569701">एउटा आन्तरिक त्रुटि भयो।</translation>
 <translation id="4267670563222825190">तपाईंको खाताको कुनै पनि डोमेन प्रयोगकर्ता फेला पार्न सकिएन। कृपया आफ्ना व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
 <translation id="4300229033992784001">तपाईंको खाताको पासवर्ड परिवर्तन गरिएको छ। तपाईंको Windows को खातालाई तपाईंको कार्य खातामा सिंक गर्न कृपया आफ्नो Windows को हालको पासवर्ड प्रविष्टि गर्नुहोस्।</translation>
-<translation id="4669462973597624151">पासवर्ड परिवर्तन गर्ने प्रयास असफल भयो। कृपया आफ्ना व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
+<translation id="4669462973597624151">पासवर्ड परिवर्तन गर्ने प्रयास असफल भयो। कृपया आफ्ना प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="4706454071748629324">नयाँ प्रयोगकर्ता थप्न सकिएन। यो कम्प्युटरले कार्य खाता प्रयोग गरेर एउटा प्रयोगकर्ता मात्र सिर्जना गर्न दिन्छ।</translation>
-<translation id="5186761973554910131">पासवर्ड परिवर्तन गर्ने प्रयास गर्ने क्रममा कम्प्युटरको गलत नाम प्रविष्टि गरियो। कृपया आफ्ना व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
+<translation id="5186761973554910131">पासवर्ड परिवर्तन गर्ने प्रयास गर्दा कम्प्युटरको गलत नाम प्रविष्टि गरियो। कृपया आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्।</translation>
 <translation id="6033715878377252112">Windows को सहायकका लागि Google प्रमाण प्रदायक</translation>
 <translation id="6149399665202317746">Windows का लागि Google प्रमाण प्रदायक</translation>
 <translation id="6239180560789153226">तपाईंको यन्त्रमा पुनः प्राप्तिसम्बन्धी जानकारी छैन। आफ्नो Google कार्य खाता प्रयोग गरी साइन इन गर्नुहोस्।</translation>
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">कार्य खाता थप्नुहोस्</translation>
 <translation id="7811865856574012727">तपाईंका प्रशासकले निम्न डोमेनहरूमा यन्त्रमा साइन इन गर्ने सुविधामाथि प्रतिबन्ध लगाउनुभएको छ: <ph name="EMAIL_DOMAINS" />। मान्य कार्य खाता प्रयोग गरी फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="7856245195110636219">हालको Windows को पासवर्ड प्रविष्टि नगरी जारी राख्न सकिएन। कृपया प्रणालीका प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
-<translation id="8109730953933509335">अमान्य प्रयोगकर्ताको पासवर्ड परिवर्तन गर्ने प्रयास गरियो। कृपया आफ्ना व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
+<translation id="8109730953933509335">अमान्य प्रयोगकर्ताको पासवर्ड परिवर्तन गर्ने प्रयास गरियो। कृपया आफ्ना प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="8639729688781680518">Windows को पासवर्ड सम्झना छैन</translation>
 <translation id="866458870819756755">प्रयोगकर्ता सिर्जना गर्न सकिएन।</translation>
 <translation id="8875753657315897487">आफ्नो कार्य खाता प्रयोग गरी साइन इन गर्नुहोस्</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb
index c554207..5e35a73c 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="or">
+<translation id="1337778609052285767">ପାସୱାର୍ଡ ଜଟିଳତାର ଆବଶ୍ୟକତାଗୁଡ଼ିକୁ ବର୍ତ୍ତମାନର ପାସୱାର୍ଡ ପୂରଣ କରୁ ନାହିଁ। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="1337821341856692531">ଆପଣଙ୍କର ବର୍ତ୍ତମାନର Windows ପାସ୍‍ୱାର୍ଡ ନଲେଖି ଜାରି ରଖିବା ଦ୍ୱାରା ସୂଚନାର ଅପରିବର୍ତ୍ତନୀୟ କ୍ଷତି ପହଞ୍ଚାଇପାରେ।</translation>
 <translation id="1383286653814676580">Google କ୍ରେଡେନ୍‌ସିଆଲ୍ ପ୍ରଦାନକାରୀ ସାଇନ୍ ଇନ୍ ପୃଷ୍ଠାକୁ ଚଲାଇବାରେ ବ୍ୟବହୃତ ହୁଏ।</translation>
 <translation id="1894475569413661128">ଆପଣଙ୍କର ୱର୍କ ଆକାଉଣ୍ଟର ବ୍ୟବହାର କରି ସାଇନ୍‌ ଇନ୍‌ କରନ୍ତୁ।</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">ଆପଣ ଏକ ଭୁଲ୍ Windows ପାସ୍‍ୱାର୍ଡ ଲେଖିଛନ୍ତି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="2831078752570172210">ଆପଣଙ୍କର ଆକାଉଣ୍ଟକୁ ଲକ୍ କରିଦିଆଯାଇଛି। ଦୟାକରି ଆପଣଙ୍କର ସିଷ୍ଟମ୍ ଆଡ୍‌ମିନିଷ୍ଟ୍ରେଟର୍‌ଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="2844349213149998955">ଏହି ଡିଭାଇସ୍‍‍ରେ ଏକ ବ୍ୟକ୍ତିଗତ ଆକାଉଣ୍ଟ ସହ ସାଇନ୍‍ଇନ୍ କରିବାର ଅନୁମତି ନାହିଁ। ଦୟାକରି ଏକ କାର୍ଯ୍ୟ ଆକାଉଣ୍ଟ ସହ ଲଗ୍‍ଇନ୍ କରନ୍ତୁ।</translation>
+<translation id="2995851317559936311">କେବଳ ଡୋମେନ୍ କଣ୍ଟ୍ରୋଲରରେ ପାସୱାର୍ଡ ପରିବର୍ତ୍ତନ ଅନୁମତି ଦିଆଯାଏ। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="3306357053520292004">ଏହି ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ଏହି କମ୍ପ୍ୟୁଟର୍‌ରେ ଜଣେ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ପୂର୍ବରୁ ଯୋଗ କରାଯାଇଥିଲା ଦୟାକରି, ଏକ ଅଲଗା ଆକାଉଣ୍ଟରେ ସାଇନ୍‌ ଇନ୍‌ କରନ୍ତୁ।</translation>
 <translation id="3926852373333893095">କେବଳ Gsuite Enterprise ଉପଯୋଗକର୍ତ୍ତାମାନଙ୍କୁ ଲଗ୍‌ଇନ୍ କରିବା ପାଇଁ ଅନୁମତି ଅଛି।</translation>
 <translation id="4057329986137569701">ଏକ ଇଣ୍ଟର୍ନଲ୍‌ ତ୍ରୁଟି ଘଟିଲା।</translation>
 <translation id="4267670563222825190">ଆପଣଙ୍କର ଆକାଉଣ୍ଟ ପାଇଁ କୌଣସି ଡୋମେନ୍ ଉପଯୋଗକର୍ତ୍ତା ମିଳିଲେ ନାହିଁ। ଆପଣଙ୍କର ଆଡ୍‌ମିନିଷ୍ଟ୍ରେଟର୍‌ଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="4300229033992784001">ଆପଣଙ୍କର ଆକାଉଣ୍ଟର ପାସ୍‍ୱର୍ଡ ପରିବର୍ତ୍ତନ ହୋ‍ଇଛି। ଆପଣଙ୍କର ୱର୍କ ଆକାଉଣ୍ଟ ସହିତ ଆପଣଙ୍କ window ଆକାଉଣ୍ଟକୁ ସିଙ୍କ୍‌ କରିବାକୁ ଦୟାକରି ଆପଣଙ୍କର ବର୍ତ୍ତମାନର window ପାସ୍‌ୱର୍ଡ ଲେଖନ୍ତୁ।</translation>
+<translation id="4669462973597624151">ପାସୱାର୍ଡ ପରିବର୍ତ୍ତନ କରିବାକୁ କରାଯାଇଥିବା ଚେଷ୍ଟା ବିଫଳ ହୋଇଛି। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="4706454071748629324">ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ଯୋଗକରିବାକୁ ବିଫଳ ହେଲା। ଗୋଟିଏ ୱର୍କ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ଏହି କମ୍ପ୍ୟୁଟର୍‌ କେବଳ ଜଣେ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଅନୁମତି ଦିଏ।</translation>
+<translation id="5186761973554910131">ପାସୱାର୍ଡ ପରିବର୍ତ୍ତନ କରିବାକୁ ଚେଷ୍ଟା କରିବା ସମୟରେ ଅବୈଧ କମ୍ପ୍ୟୁଟର୍ ନାମ ପ୍ରଦାନ କରାଯାଇଛି। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="6033715878377252112">Windows Helper ପାଇଁ Google କ୍ରେଡେନ୍‌ସିଆଲ୍ ପ୍ରଦାନକାରୀ</translation>
 <translation id="6149399665202317746">Windows ପାଇଁ Google କ୍ରେଡେନ୍‍ସିଆଲ୍ ପ୍ରଦାନକାରୀ</translation>
 <translation id="6239180560789153226">ଆପଣଙ୍କ ଡିଭାଇସ୍‍‍ରେ ପୁନରୁଦ୍ଧାର ସୂଚନା ନାହିଁ। ଆପଣଙ୍କର Google କାର୍ଯ୍ୟ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">କାର୍ଯ୍ୟ ଆକାଉଣ୍ଟ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="7811865856574012727">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍ ନିମ୍ନୋକ୍ତ ଡୋମେନ୍‍ଗୁଡ଼ିକରେ ଡିଭାଇସ୍‍ର ସାଇନ୍-ଇନ୍‍କୁ ପ୍ରତିବନ୍ଧିତ କରିଛନ୍ତି: <ph name="EMAIL_DOMAINS" />। ଏକ ବୈଧ କାର୍ଯ୍ୟ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="7856245195110636219">ବର୍ତ୍ତମାନର Windowsରେ ପାସ୍‌ୱାର୍ଡ ନଲେଖି ଜାରି ରଖିବାରେ ଅକ୍ଷମ। ଦୟାକରି କୌଣସି ସିଷ୍ଟମ୍ ଆଡ୍‌ମିନିଷ୍ଟ୍ରେଟର୍‌ଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
+<translation id="8109730953933509335">ଅବୈଧ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଠାରେ ପାସୱାର୍ଡ ପରିବର୍ତ୍ତନ କରିବାକୁ ଚେଷ୍ଟା କରାଯାଇଛି। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="8639729688781680518">Windows ପାସ୍‌ୱାର୍ଡ ଭୁଲି ଯାଇଛନ୍ତି</translation>
 <translation id="866458870819756755">ଜଣେ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି ହୋଇପାରିଲା ନାହିଁ।</translation>
 <translation id="8875753657315897487">ଆପଣଙ୍କର ୱାର୍କ ଆକାଉଣ୍ଟର ବ୍ୟବହାର କରି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
index 94236fa..9a6f664 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
@@ -31,7 +31,7 @@
 <translation id="7536769223115622137">Pridať pracovný účet</translation>
 <translation id="7811865856574012727">Správca obmedzil prihlásenie zariadenia v nasledujúcich doménach: <ph name="EMAIL_DOMAINS" />. Skúste to znova pomocou platného pracovného účtu.</translation>
 <translation id="7856245195110636219">Bez zadania aktuálneho hesla systému Windows nie je možné pokračovať. Kontaktujte správcu systému.</translation>
-<translation id="8109730953933509335">Prebehol pokus o zmenu hesla nesprávneho používateľa. Kontaktujte správcu.</translation>
+<translation id="8109730953933509335">Prebehol pokus o zmenu hesla neplatného používateľa. Kontaktujte správcu.</translation>
 <translation id="8639729688781680518">Nepamätám si heslo systému Windows</translation>
 <translation id="866458870819756755">Používateľa sa nepodarilo vytvoriť.</translation>
 <translation id="8875753657315897487">Prihláste sa pomocou pracovného účtu</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb
index 55d1b93..2ee31802d 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sq">
+<translation id="1337778609052285767">Fjalëkalimi aktual nuk i përmbush kërkesat për kompleksitetin Kontakto me administratorin tënd.</translation>
 <translation id="1337821341856692531">Nëse vazhdohet pa futur fjalëkalimin aktual të Windows mund të shkaktojë humbje të pakthyeshme të informacionit.</translation>
 <translation id="1383286653814676580">Përdoret për të ekzekutuar faqen e identifikimit të "Ofruesit të kredencialeve të Google".</translation>
 <translation id="1894475569413661128">Identifikohu duke përdorur llogarinë e punës.</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">Ke futur një fjalëkalim të pasaktë të Windows. Provo përsëri.</translation>
 <translation id="2831078752570172210">Llogaria jote është bllokuar. Kontakto me administratorin e sistemit.</translation>
 <translation id="2844349213149998955">Nuk lejohet identifikimi me një llogari personale në këtë pajisje. Identifikohu me një llogari pune.</translation>
+<translation id="2995851317559936311">Ndryshimi i fjalëkalimit lejohet vetëm në kontrolluesin e domenit. Kontakto me administratorin tënd.</translation>
 <translation id="3306357053520292004">Një përdorues në këtë kompjuter është shtuar tashmë duke përdorur këtë llogari. Identifikohu me një llogari tjetër.</translation>
 <translation id="3926852373333893095">Vetëm përdoruesit e GSuite për ndërmarrjet lejohen të identifikohen.</translation>
 <translation id="4057329986137569701">Ndodhi një gabim i brendshëm.</translation>
 <translation id="4267670563222825190">Nuk mund të gjendej asnjë përdorues domeni për llogarinë tënde. Kontakto me administratorin tënd.</translation>
 <translation id="4300229033992784001">Fjalëkalimi i llogarisë sate ka ndryshuar. Fut fjalëkalimin aktual të Windows për të sinkronizuar llogarinë tënde të Windows me llogarinë tënde të punës.</translation>
+<translation id="4669462973597624151">Përpjekja për ndryshimin e fjalëkalimit dështoi. Kontakto me administratorin tënd.</translation>
 <translation id="4706454071748629324">Dështoi shtimi i një përdoruesi të ri. Ky kompjuter lejon që të krijohet vetëm një përdorues duke përdorur një llogari pune.</translation>
+<translation id="5186761973554910131">Një emër i pavlefshëm kompjuteri është dhënë gjatë përpjekjes për ndryshimin e fjalëkalimit. Kontakto me administratorin tënd.</translation>
 <translation id="6033715878377252112">Ndihmësi i "Ofruesit të kredencialeve të Google" për Windows</translation>
 <translation id="6149399665202317746">"Ofruesi i kredencialeve të Google" për Windows</translation>
 <translation id="6239180560789153226">Në pajisjen tënde mungojnë informacionet për rikuperimin. Identifikohu duke përdorur llogarinë e punës së Google.</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">Shto llogarinë e punës</translation>
 <translation id="7811865856574012727">Administratori yt ka kufizuar identifikimin e pajisjes në domenet e mëposhtme: <ph name="EMAIL_DOMAINS" />. Provo përsëri duke përdorur një llogari të vlefshme pune.</translation>
 <translation id="7856245195110636219">Nuk mund të vazhdojë pa futur fjalëkalimin aktual të Windows. Kontakto me një administrator të sistemit.</translation>
+<translation id="8109730953933509335">Ndryshimi i fjalëkalimit është provuar për një përdorues të pavlefshëm. Kontakto me administratorin tënd.</translation>
 <translation id="8639729688781680518">Harrova fjalëkalimin e Windows</translation>
 <translation id="866458870819756755">Nuk mund të krijohej një përdorues.</translation>
 <translation id="8875753657315897487">Identifikohu duke përdorur llogarinë e punës</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb
index efb0210..bcc9f2fe 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb
@@ -19,7 +19,7 @@
 <translation id="4300229033992784001">Nenosiri la akaunti yako limebadilika. Tafadhali weka nenosiri lako la sasa la Windows ili usawazishe akaunti yako ya Windows na Akaunti yako ya kazini.</translation>
 <translation id="4669462973597624151">Jaribio la kujaribu kubadilisha nenosiri halijafaulu. Tafadhali wasiliana na msimamizi wako.</translation>
 <translation id="4706454071748629324">Imeshindwa kuongeza mtumiaji mpya. Kompyuta hii inaruhusu tu mtumiaji mmoja kuwekwa kwa kutumia akaunti ya kazini.</translation>
-<translation id="5186761973554910131">Jina la kompyuta lisilo sahihi lilitolewa wakati wa jaribio la kubadilisha nenosiri Tafadhali wasiliana na msimamizi wako.</translation>
+<translation id="5186761973554910131">Jina la kompyuta lisilo sahihi lilitolewa wakati wa jaribio la kubadilisha nenosiri. Tafadhali wasiliana na msimamizi wako.</translation>
 <translation id="6033715878377252112">Kisaidizi cha Kitoa Utambulisho Unaotumia kwenye Google kwa ajili ya Windows</translation>
 <translation id="6149399665202317746">Kitoa Utambulisho Unaotumia kwenye Google kwa ajili ya Windows</translation>
 <translation id="6239180560789153226">Kifaa chako kinakosa maelezo ya kurejesha akaunti. Ingia katika akaunti ukitumia akaunti yako ya kazini ya Google.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
index eb65552..584cbb2 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="vi">
+<translation id="1337778609052285767">Mật khẩu hiện tại không đáp ứng các yêu cầu về độ phức tạp của mật khẩu. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="1337821341856692531">Nếu tiếp tục mà không nhập mật khẩu Windows hiện tại của mình, thì bạn có thể bị mất thông tin vĩnh viễn.</translation>
 <translation id="1383286653814676580">Dùng để chạy trang đăng nhập vào Nhà cung cấp chứng chỉ Google.</translation>
 <translation id="1894475569413661128">Đăng nhập bằng tài khoản công việc của bạn.</translation>
@@ -10,12 +11,15 @@
 <translation id="2679096858700291438">Bạn đã nhập sai mật khẩu Windows. Vui lòng thử lại.</translation>
 <translation id="2831078752570172210">Tài khoản của bạn đã bị khóa. Vui lòng liên hệ với quản trị viên hệ thống.</translation>
 <translation id="2844349213149998955">Bạn không thể đăng nhập vào thiết bị này bằng tài khoản cá nhân. Vui lòng đăng nhập bằng tài khoản công việc.</translation>
+<translation id="2995851317559936311">Chỉ cho phép thay đổi mật khẩu trên bộ điều khiển miền. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="3306357053520292004">Một người dùng trên máy tính này đã được thêm bằng tài khoản này. Vui lòng đăng nhập bằng một tài khoản khác.</translation>
 <translation id="3926852373333893095">Chỉ người dùng GSuite Enterprise mới được phép đăng nhập.</translation>
 <translation id="4057329986137569701">Đã xảy ra lỗi nội bộ.</translation>
 <translation id="4267670563222825190">Không tìm được người dùng miền nào cho tài khoản của bạn. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="4300229033992784001">Mật khẩu tài khoản của bạn đã thay đổi. Hãy nhập mật khẩu Windows hiện tại để đồng bộ hóa tài khoản Windows với tài khoản công việc của bạn.</translation>
+<translation id="4669462973597624151">Không thay đổi được mật khẩu. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="4706454071748629324">Không thêm được người dùng mới. Máy tính này chỉ cho phép tạo 1 người dùng bằng tài khoản công việc.</translation>
+<translation id="5186761973554910131">Bạn đã cung cấp tên máy tính không hợp lệ khi cố thay đổi mật khẩu. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="6033715878377252112">Trình trợ giúp của Trình cung cấp thông tin đăng nhập Google dành cho Windows</translation>
 <translation id="6149399665202317746">Trình cung cấp thông tin đăng nhập Google dành cho Windows</translation>
 <translation id="6239180560789153226">Thiết bị của bạn thiếu thông tin khôi phục. Hãy đăng nhập bằng Tài khoản Google mà bạn dùng cho công việc.</translation>
@@ -27,6 +31,7 @@
 <translation id="7536769223115622137">Thêm tài khoản công việc</translation>
 <translation id="7811865856574012727">Quản trị viên chỉ cho phép thiết bị đăng nhập vào các miền sau: <ph name="EMAIL_DOMAINS" />. Hãy thử lại bằng tài khoản công việc hợp lệ.</translation>
 <translation id="7856245195110636219">Không thể tiếp tục mà không nhập mật khẩu Windows hiện tại. Vui lòng liên hệ với quản trị viên hệ thống.</translation>
+<translation id="8109730953933509335">Bạn đã cố thay đổi mật khẩu cho người dùng không hợp lệ. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="8639729688781680518">Quên mật khẩu Windows</translation>
 <translation id="866458870819756755">Không thể tạo người dùng.</translation>
 <translation id="8875753657315897487">Đăng nhập bằng tài khoản công việc</translation>
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index a53206e..67d7f6a4 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -3608,6 +3608,7 @@
     "//chrome:strings",
     "//chrome/browser/media/router:unittests",
     "//chrome/browser/notifications:unit_tests",
+    "//chrome/browser/updates/announcement_notification:unit_tests",
     "//chrome/common:test_support",
     "//chrome/common/media_router:test_support",
     "//components/account_id",
diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
index c4c88495..cfe8ad3 100644
--- a/chrome/test/android/BUILD.gn
+++ b/chrome/test/android/BUILD.gn
@@ -188,6 +188,7 @@
     "//base:base_java_test_support",
     "//chrome/android:chrome_java",
     "//chrome/android/third_party/compositor_animator:compositor_animator_java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/preferences:java",
     "//chrome/browser/ui/android/appmenu:java",
     "//chrome/browser/ui/android/appmenu:test_support_java",
diff --git a/chrome/test/chromedriver/net/websocket.cc b/chrome/test/chromedriver/net/websocket.cc
index fb8cc3f..158d204a 100644
--- a/chrome/test/chromedriver/net/websocket.cc
+++ b/chrome/test/chromedriver/net/websocket.cc
@@ -98,8 +98,16 @@
     VLOG(0) << "resolved " << url_.HostNoBracketsPiece() << " to " << json;
   }
 
+  if (url_.host() == "localhost") {
+    // ensure that both localhost addresses are included
+    // see https://bugs.chromium.org/p/chromedriver/issues/detail?id=3316
+    addresses.push_back(net::IPEndPoint(net::IPAddress::IPv4Localhost(), port));
+    addresses.push_back(net::IPEndPoint(net::IPAddress::IPv6Localhost(), port));
+    addresses.Deduplicate();
+  }
+
   net::NetLogSource source;
-  socket_.reset(new net::TCPClientSocket(addresses, NULL, NULL, source));
+  socket_.reset(new net::TCPClientSocket(addresses, nullptr, nullptr, source));
 
   state_ = CONNECTING;
   connect_callback_ = std::move(callback);
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index e9709996..1b138004 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -1914,6 +1914,29 @@
     self._driver.DeleteAllCookies()
     self.assertEquals(0, len(self._driver.GetCookies()))
 
+  def testCookieForFrame(self):
+    # Frame must have separate url than outer context for Cookies to be distinct
+    # the cross_domain_iframe with site-per-process fakes the needed setup
+    self._driver = self.CreateDriver(chrome_switches=['--site-per-process'])
+    self._driver.Load(self.GetHttpUrlForFile(
+        '/chromedriver/cross_domain_iframe.html'))
+    self._driver.AddCookie({'name': 'outer', 'value': 'main context'})
+
+    frame = self._driver.FindElement('tag name', 'iframe')
+    self._driver.SwitchToFrame(frame)
+    self.assertTrue(self.WaitForCondition(
+        lambda: 'outer.html' in
+                self._driver.ExecuteScript('return window.location.href')))
+    self._driver.AddCookie({'name': 'inner', 'value': 'frame context'})
+    cookies = self._driver.GetCookies()
+    self.assertEquals(1, len(cookies))
+    self.assertEquals('inner', cookies[0]['name'])
+
+    self._driver.SwitchToMainFrame()
+    cookies = self._driver.GetCookies()
+    self.assertEquals(1, len(cookies))
+    self.assertEquals('outer', cookies[0]['name'])
+
   def testGetUrlOnInvalidUrl(self):
     # Make sure we don't return 'chrome-error://chromewebdata/' (see
     # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1272). RFC 6761
diff --git a/chrome/test/chromedriver/window_commands.cc b/chrome/test/chromedriver/window_commands.cc
index 793f1c8..273f43a3 100644
--- a/chrome/test/chromedriver/window_commands.cc
+++ b/chrome/test/chromedriver/window_commands.cc
@@ -251,10 +251,12 @@
   return dict;
 }
 
-Status GetVisibleCookies(WebView* web_view,
+Status GetVisibleCookies(Session* session,
+                         WebView* web_view,
                          std::list<Cookie>* cookies) {
   std::string current_page_url;
-  Status status = GetUrl(web_view, std::string(), &current_page_url);
+  Status status =
+      GetUrl(web_view, session->GetCurrentFrameId(), &current_page_url);
   if (status.IsError())
     return status;
   std::unique_ptr<base::ListValue> internal_cookies;
@@ -1820,7 +1822,7 @@
                          std::unique_ptr<base::Value>* value,
                          Timeout* timeout) {
   std::list<Cookie> cookies;
-  Status status = GetVisibleCookies(web_view, &cookies);
+  Status status = GetVisibleCookies(session, web_view, &cookies);
   if (status.IsError())
     return status;
   std::unique_ptr<base::ListValue> cookie_list(new base::ListValue());
@@ -1842,7 +1844,7 @@
     return Status(kInvalidArgument, "missing 'cookie name'");
 
   std::list<Cookie> cookies;
-  Status status = GetVisibleCookies(web_view, &cookies);
+  Status status = GetVisibleCookies(session, web_view, &cookies);
   if (status.IsError())
     return status;
 
@@ -1940,7 +1942,7 @@
     return status;
 
   std::list<Cookie> cookies;
-  status = GetVisibleCookies(web_view, &cookies);
+  status = GetVisibleCookies(session, web_view, &cookies);
   if (status.IsError())
     return status;
 
@@ -1961,7 +1963,7 @@
                                std::unique_ptr<base::Value>* value,
                                Timeout* timeout) {
   std::list<Cookie> cookies;
-  Status status = GetVisibleCookies(web_view, &cookies);
+  Status status = GetVisibleCookies(session, web_view, &cookies);
   if (status.IsError())
     return status;
 
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js
index d8eb554..c9c75d1 100644
--- a/chrome/test/data/webui/settings/cr_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -897,7 +897,6 @@
     '../test_util.js',
     '../test_browser_proxy.js',
     'test_privacy_page_browser_proxy.js',
-    'test_metrics_browser_proxy.js',
     'test_sync_browser_proxy.js',
     'privacy_page_test.js',
   ]),
@@ -951,40 +950,6 @@
 
 /**
  * Test fixture for
- * chrome/browser/resources/settings/site_settings_page/site_settings_page.html.
- * @constructor
- * @extends {CrSettingsBrowserTest}
- */
-function CrSettingsSiteSettingsPageTest() {}
-
-CrSettingsSiteSettingsPageTest.prototype = {
-  __proto__: CrSettingsBrowserTest.prototype,
-
-  /** @override */
-  browsePreload: 'chrome://settings/site_settings_page/site_settings_page.html',
-
-  /** @override */
-  extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([
-    '//ui/webui/resources/js/promise_resolver.js',
-    '../test_util.js',
-    '../test_browser_proxy.js',
-    'test_metrics_browser_proxy.js',
-    'site_settings_page_test.js',
-  ])
-};
-
-TEST_F('CrSettingsSiteSettingsPageTest', 'UMALoggingTests', function() {
-  settings_site_settings_page.registerUMALoggingTests();
-  mocha.run();
-});
-
-TEST_F('CrSettingsSiteSettingsPageTest', 'UMALoggingTestsPart2', function() {
-  settings_site_settings_page.registerUMALoggingTestsPart2();
-  mocha.run();
-});
-
-/**
- * Test fixture for
  * chrome/browser/resources/settings/privacy_page/
  *        passwords-leak-detection-toggle.html.
  * @constructor
@@ -1003,7 +968,6 @@
   extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([
     'sync_test_util.js',
     '../test_browser_proxy.js',
-    'test_metrics_browser_proxy.js',
     'test_privacy_page_browser_proxy.js',
     'test_sync_browser_proxy.js',
     'passwords_leak_detection_toggle_test.js',
@@ -1252,7 +1216,6 @@
     '../test_browser_proxy.js',
     'test_sync_browser_proxy.js',
     'test_privacy_page_browser_proxy.js',
-    'test_metrics_browser_proxy.js',
     'security_page_test.js',
   ]),
 };
diff --git a/chrome/test/data/webui/settings/passwords_leak_detection_toggle_test.js b/chrome/test/data/webui/settings/passwords_leak_detection_toggle_test.js
index 580e276..f63b0fd 100644
--- a/chrome/test/data/webui/settings/passwords_leak_detection_toggle_test.js
+++ b/chrome/test/data/webui/settings/passwords_leak_detection_toggle_test.js
@@ -3,9 +3,6 @@
 // found in the LICENSE file.
 
 suite('CrSettingsPasswordsLeakDetectionToggleTest', function() {
-  /** @type {settings.TestMetricsBrowserProxy} */
-  let testMetricsBrowserProxy;
-
   /** @type {settings.TestPrivacyPageBrowserProxy} */
   let privacyPageBrowserProxy;
 
@@ -20,8 +17,6 @@
     settings.PrivacyPageBrowserProxyImpl.instance_ = privacyPageBrowserProxy;
     syncBrowserProxy = new TestSyncBrowserProxy();
     settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
-    testMetricsBrowserProxy = new TestMetricsBrowserProxy();
-    settings.MetricsBrowserProxyImpl.instance_ = testMetricsBrowserProxy;
     PolymerTest.clearBody();
     testElement =
         document.createElement('settings-passwords-leak-detection-toggle');
@@ -38,20 +33,6 @@
     testElement.remove();
   });
 
-  test('logPasswordLeakDetectionClick', function() {
-    testElement.set(
-        'prefs.profile.password_manager_leak_detection.value', true);
-    testElement.syncStatus = {signedIn: true};
-    Polymer.dom.flush();
-    console.log(testElement.$$('#passwordsLeakDetectionCheckbox').disabled);
-    testElement.$$('#passwordsLeakDetectionCheckbox').click();
-    return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
-        .then(result => {
-          assertEquals(
-              settings.SettingsPageInteractions.PRIVACY_PASSWORD_CHECK, result);
-        });
-  });
-
   test('leakDetectionToggleSignedOutWithFalsePref', function() {
     testElement.set(
         'prefs.profile.password_manager_leak_detection.value', false);
diff --git a/chrome/test/data/webui/settings/privacy_page_test.js b/chrome/test/data/webui/settings/privacy_page_test.js
index ae6df71b..5a1a058 100644
--- a/chrome/test/data/webui/settings/privacy_page_test.js
+++ b/chrome/test/data/webui/settings/privacy_page_test.js
@@ -149,30 +149,14 @@
       /** @type {settings.TestPrivacyPageBrowserProxy} */
       let testBrowserProxy;
 
-      /** @type {settings.TestMetricsBrowserProxy} */
-      let testMetricsBrowserProxy;
-
       /** @type {SettingsPrivacyPageElement} */
       let page;
 
       setup(function() {
-        testMetricsBrowserProxy = new TestMetricsBrowserProxy();
-        settings.MetricsBrowserProxyImpl.instance_ = testMetricsBrowserProxy;
         testBrowserProxy = new TestPrivacyPageBrowserProxy();
         settings.PrivacyPageBrowserProxyImpl.instance_ = testBrowserProxy;
-        const testSyncBrowserProxy = new TestSyncBrowserProxy();
-        settings.SyncBrowserProxyImpl.instance_ = testSyncBrowserProxy;
         PolymerTest.clearBody();
         page = document.createElement('settings-privacy-page');
-        page.prefs = {
-          profile: {password_manager_leak_detection: {value: true}},
-          signin: {
-            allowed_on_next_startup:
-                {type: chrome.settingsPrivate.PrefType.BOOLEAN, value: true}
-          },
-          safebrowsing:
-              {enabled: {value: true}, scout_reporting_enabled: {value: true}},
-        };
         document.body.appendChild(page);
       });
 
@@ -182,7 +166,7 @@
 
       test('LogMangeCerfificatesClick', function() {
         page.$$('#manageCertificates').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
+        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
             .then(result => {
               assertEquals(
                   settings.SettingsPageInteractions.PRIVACY_MANAGE_CERTIFICATES,
@@ -192,7 +176,7 @@
 
       test('LogClearBrowsingClick', function() {
         page.$$('#clearBrowsingData').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
+        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
             .then(result => {
               assertEquals(
                   settings.SettingsPageInteractions.PRIVACY_CLEAR_BROWSING_DATA,
@@ -202,7 +186,7 @@
 
       test('LogDoNotTrackClick', function() {
         page.$$('#doNotTrack').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
+        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
             .then(result => {
               assertEquals(
                   settings.SettingsPageInteractions.PRIVACY_DO_NOT_TRACK,
@@ -212,7 +196,7 @@
 
       test('LogCanMakePaymentToggleClick', function() {
         page.$$('#canMakePaymentToggle').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
+        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
             .then(result => {
               assertEquals(
                   settings.SettingsPageInteractions.PRIVACY_PAYMENT_METHOD,
@@ -222,35 +206,13 @@
 
       test('LogSiteSettingsSubpageClick', function() {
         page.$$('#site-settings-subpage-trigger').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
+        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
             .then(result => {
               assertEquals(
                   settings.SettingsPageInteractions.PRIVACY_SITE_SETTINGS,
                   result);
             });
       });
-
-      test('LogSafeBrowsingToggleClick', function() {
-        Polymer.dom.flush();
-        page.$$('#safeBrowsingToggle').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions.PRIVACY_SAFE_BROWSING,
-                  result);
-            });
-      });
-
-      test('LogSafeBrowsingReportingToggleClick', function() {
-        Polymer.dom.flush();
-        page.$$('#safeBrowsingReportingToggle').click();
-        return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions.PRIVACY_IMPROVE_SECURITY,
-                  result);
-            });
-      });
     });
   }
 
diff --git a/chrome/test/data/webui/settings/security_page_test.js b/chrome/test/data/webui/settings/security_page_test.js
index 395058ce..d5508917 100644
--- a/chrome/test/data/webui/settings/security_page_test.js
+++ b/chrome/test/data/webui/settings/security_page_test.js
@@ -3,9 +3,6 @@
 // found in the LICENSE file.
 
 suite('CrSettingsSecurityPageTest', function() {
-  /** @type {settings.TestMetricsBrowserProxy} */
-  let testMetricsBrowserProxy;
-
   /** @type {settings.SyncBrowserProxy} */
   let syncBrowserProxy;
 
@@ -16,8 +13,6 @@
   let page;
 
   setup(function() {
-    testMetricsBrowserProxy = new TestMetricsBrowserProxy();
-    settings.MetricsBrowserProxyImpl.instance_ = testMetricsBrowserProxy;
     testPrivacyBrowserProxy = new TestPrivacyPageBrowserProxy();
     settings.PrivacyPageBrowserProxyImpl.instance_ = testPrivacyBrowserProxy;
     syncBrowserProxy = new TestSyncBrowserProxy();
@@ -50,7 +45,7 @@
 
   test('LogManageCerfificatesClick', function() {
     page.$$('#manageCertificates').click();
-    return testMetricsBrowserProxy.whenCalled('recordSettingsPageHistogram')
+    return testPrivacyBrowserProxy.whenCalled('recordSettingsPageHistogram')
         .then(result => {
           assertEquals(
               settings.SettingsPageInteractions.PRIVACY_MANAGE_CERTIFICATES,
diff --git a/chrome/test/data/webui/settings/site_settings_page_test.js b/chrome/test/data/webui/settings/site_settings_page_test.js
deleted file mode 100644
index a2433745..0000000
--- a/chrome/test/data/webui/settings/site_settings_page_test.js
+++ /dev/null
@@ -1,363 +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.
-
-cr.define('settings_site_settings_page', function() {
-  function registerUMALoggingTests() {
-    suite('SiteSettingsPageUMACheck', function() {
-      /** @type {settings.TestMetricsBrowserProxy} */
-      let testBrowserProxy;
-
-      /** @type {SettingsSiteSettingsPageElement} */
-      let page;
-
-      setup(function() {
-        testBrowserProxy = new TestMetricsBrowserProxy();
-        settings.MetricsBrowserProxyImpl.instance_ = testBrowserProxy;
-        PolymerTest.clearBody();
-        page = document.createElement('settings-site-settings-page');
-        document.body.appendChild(page);
-        Polymer.dom.flush();
-      });
-
-      teardown(function() {
-        page.remove();
-      });
-
-      test('LogCookiesClick', function() {
-        page.$$('#cookies').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_COOKIES,
-                  result);
-            });
-      });
-
-      test('LogLocationClick', function() {
-        page.$$('#location').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_LOCATION,
-                  result);
-            });
-      });
-
-      test('LogCameraClick', function() {
-        page.$$('#camera').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_CAMERA,
-                  result);
-            });
-      });
-
-      test('LogMicrophoneClick', function() {
-        page.$$('#microphone').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_MICROPHONE,
-                  result);
-            });
-      });
-
-      test('LogSensorsClick', function() {
-        page.$$('#sensors').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_SENSORS,
-                  result);
-            });
-      });
-
-      test('LogNotificationsClick', function() {
-        page.$$('#notifications').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_NOTIFICATIONS,
-                  result);
-            });
-      });
-
-      test('LogJavascriptClick', function() {
-        page.$$('#javascript').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_JAVASCRIPT,
-                  result);
-            });
-      });
-
-      test('LogFlashClick', function() {
-        page.$$('#flash').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions.PRIVACY_SITE_SETTINGS_FLASH,
-                  result);
-            });
-      });
-
-      test('LogImagesClick', function() {
-        page.$$('#images').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_IMAGES,
-                  result);
-            });
-      });
-
-      test('LogPopupsClick', function() {
-        page.$$('#popups').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_POPUPS,
-                  result);
-            });
-      });
-
-      if (loadTimeData.getBoolean('enableSafeBrowsingSubresourceFilter')) {
-        test('LogAdsClick', function() {
-          page.$$('#ads').click();
-          return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-              .then(result => {
-                assertEquals(
-                    settings.SettingsPageInteractions.PRIVACY_SITE_SETTINGS_ADS,
-                    result);
-              });
-        });
-      }
-
-      test('LogBackgroundSyncClick', function() {
-        page.$$('#background-sync').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_BACKGROUND_SYNC,
-                  result);
-            });
-      });
-    });
-  }
-
-  // Split tests into 2 to prevent timeout.
-  function registerUMALoggingTestsPart2() {
-    suite('SiteSettingsPageUMACheckPart2', function() {
-      /** @type {settings.TestPrivacyPageBrowserProxy} */
-      let testBrowserProxy;
-
-      /** @type {SettingsSiteSettingsPageElement} */
-      let page;
-
-      setup(function() {
-        testBrowserProxy = new TestMetricsBrowserProxy();
-        settings.MetricsBrowserProxyImpl.instance_ = testBrowserProxy;
-        PolymerTest.clearBody();
-        page = document.createElement('settings-site-settings-page');
-        document.body.appendChild(page);
-        Polymer.dom.flush();
-      });
-
-      teardown(function() {
-        page.remove();
-      });
-
-      test('LogSoundClick', function() {
-        page.$$('#sound').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions.PRIVACY_SITE_SETTINGS_SOUND,
-                  result);
-            });
-      });
-
-      test('LogAutomaticDownloadsClick', function() {
-        page.$$('#automatic-downloads').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_AUTOMATIC_DOWNLOADS,
-                  result);
-            });
-      });
-
-      test('LogUnsandboxedPluginsClick', function() {
-        page.$$('#unsandboxed-plugins').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_UNSANDBOXED_PLUGINS,
-                  result);
-            });
-      });
-
-      if (!loadTimeData.getBoolean('isGuest')) {
-        test('LogHandlersClick', function() {
-          page.$$('#protocol-handlers').click();
-          return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-              .then(result => {
-                assertEquals(
-                    settings.SettingsPageInteractions
-                        .PRIVACY_SITE_SETTINGS_HANDLERS,
-                    result);
-              });
-        });
-      }
-
-      test('LogMidiDevicesClick', function() {
-        page.$$('#midi-devices').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_MIDI_DEVICES,
-                  result);
-            });
-      });
-
-      test('LogZoomLevelsClick', function() {
-        page.$$('#zoom-levels').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_ZOOM_LEVELS,
-                  result);
-            });
-      });
-
-      test('LogUSBDevicesClick', function() {
-        page.$$('#usb-devices').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_USB_DEVICES,
-                  result);
-            });
-      });
-
-      test('LogSerialPortsClick', function() {
-        page.$$('#serial-ports').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_SERIAL_PORTS,
-                  result);
-            });
-      });
-
-      if (loadTimeData.getBoolean(
-              'enableNativeFileSystemWriteContentSetting')) {
-        test('LogNativeFileSystemWriteClick', function() {
-          page.$$('#native-file-system-write').click();
-          return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-              .then(result => {
-                assertEquals(
-                    settings.SettingsPageInteractions
-                        .PRIVACY_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE,
-                    result);
-              });
-        });
-      }
-
-      test('LogPDFDocumentsClick', function() {
-        page.$$('#pdf-documents').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_PDF_DOCUMENTS,
-                  result);
-            });
-      });
-
-      test('LogProtectedContentClick', function() {
-        page.$$('#protected-content').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_PROTECTED_CONTENT,
-                  result);
-            });
-      });
-
-      test('LogClipboardClick', function() {
-        page.$$('#clipboard').click();
-        return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-            .then(result => {
-              assertEquals(
-                  settings.SettingsPageInteractions
-                      .PRIVACY_SITE_SETTINGS_CLIPBOARD,
-                  result);
-            });
-      });
-
-      if (loadTimeData.getBoolean('enablePaymentHandlerContentSetting')) {
-        test('LogPaymentHandlerClick', function() {
-          page.$$('#paymentHandler').click();
-          return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-              .then(result => {
-                assertEquals(
-                    settings.SettingsPageInteractions
-                        .PRIVACY_SITE_SETTINGS_PAYMENT_HANDLER,
-                    result);
-              });
-        });
-      }
-
-      if (loadTimeData.getBoolean('enableInsecureContentContentSetting')) {
-        test('LogMixedscriptClick', function() {
-          page.$$('#mixedscript').click();
-          return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-              .then(result => {
-                assertEquals(
-                    settings.SettingsPageInteractions
-                        .PRIVACY_SITE_SETTINGS_MIXEDSCRIPT,
-                    result);
-              });
-        });
-      }
-
-      if (loadTimeData.getBoolean('enableExperimentalWebPlatformFeatures')) {
-        test('LogBluetoothScanningClick', function() {
-          page.$$('#bluetooth-scanning').click();
-          return testBrowserProxy.whenCalled('recordSettingsPageHistogram')
-              .then(result => {
-                assertEquals(
-                    settings.SettingsPageInteractions
-                        .PRIVACY_SITE_SETTINGS_BLUETOOTH_SCANNING,
-                    result);
-              });
-        });
-      }
-    });
-  }
-  return {
-    registerUMALoggingTests,
-    registerUMALoggingTestsPart2,
-  };
-});
\ No newline at end of file
diff --git a/chrome/test/data/webui/settings/test_metrics_browser_proxy.js b/chrome/test/data/webui/settings/test_metrics_browser_proxy.js
deleted file mode 100644
index 27bbc8e..0000000
--- a/chrome/test/data/webui/settings/test_metrics_browser_proxy.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2016 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.
-
-/** @implements {settings.PrivacyPageBrowserProxy} */
-class TestMetricsBrowserProxy extends TestBrowserProxy {
-  constructor() {
-    super([
-      'recordSettingsPageHistogram',
-    ]);
-  }
-
-  /** @override*/
-  recordSettingsPageHistogram(value) {
-    this.methodCalled('recordSettingsPageHistogram', value);
-  }
-}
\ No newline at end of file
diff --git a/chrome/test/data/webui/tab_strip/tab_list_test.js b/chrome/test/data/webui/tab_strip/tab_list_test.js
index a7171d5..dbcfb89 100644
--- a/chrome/test/data/webui/tab_strip/tab_list_test.js
+++ b/chrome/test/data/webui/tab_strip/tab_list_test.js
@@ -319,7 +319,7 @@
 
   // Test that the TabList does not add a non-grouped tab to a tab group at the
   // same index.
-  test('HandleSingleTabNextToGroup', () => {
+  test('HandleSingleTabBeforeGroup', () => {
     const tabInGroup = {
       active: false,
       alertStates: [],
@@ -344,6 +344,54 @@
     assertEquals(tabsContainerChildren.item(4).tagName, 'TABSTRIP-TAB-GROUP');
   });
 
+  test('HandleGroupedTabBeforeDifferentGroup', () => {
+    const tabInOriginalGroup = tabs[1];
+    webUIListenerCallback(
+        'tab-group-state-changed', tabInOriginalGroup.id,
+        tabInOriginalGroup.index, 'originalGroup');
+
+    // Create another group from the tab before group A.
+    const tabInPrecedingGroup = tabs[0];
+    webUIListenerCallback(
+        'tab-group-state-changed', tabInPrecedingGroup.id,
+        tabInPrecedingGroup.index, 'precedingGroup');
+    const tabsContainerChildren =
+        tabList.shadowRoot.querySelector('#unpinnedTabs').children;
+
+    const precedingGroup = tabsContainerChildren[0];
+    assertEquals(precedingGroup.tagName, 'TABSTRIP-TAB-GROUP');
+    assertEquals(precedingGroup.dataset.groupId, 'precedingGroup');
+    assertEquals(precedingGroup.children.length, 1);
+    assertEquals(precedingGroup.children[0].tab.id, tabInPrecedingGroup.id);
+
+    const originalGroup = tabsContainerChildren[1];
+    assertEquals(originalGroup.tagName, 'TABSTRIP-TAB-GROUP');
+    assertEquals(originalGroup.dataset.groupId, 'originalGroup');
+    assertEquals(originalGroup.children.length, 1);
+    assertEquals(originalGroup.children[0].tab.id, tabInOriginalGroup.id);
+  });
+
+  test('HandleGroupedTabBeforeSameGroup', () => {
+    const originalTabInGroup = tabs[1];
+    webUIListenerCallback(
+        'tab-group-state-changed', originalTabInGroup.id,
+        originalTabInGroup.index, 'sameGroup');
+
+    // Create another group from the tab before group A.
+    const precedingTabInGroup = tabs[0];
+    webUIListenerCallback(
+        'tab-group-state-changed', precedingTabInGroup.id,
+        precedingTabInGroup.index, 'sameGroup');
+
+    const tabGroups = getTabGroups();
+    const tabGroup = tabGroups[0];
+    assertEquals(tabGroups.length, 1);
+    assertEquals(tabGroup.dataset.groupId, 'sameGroup');
+    assertEquals(tabGroup.children.length, 2);
+    assertEquals(tabGroup.children[0].tab.id, precedingTabInGroup.id);
+    assertEquals(tabGroup.children[1].tab.id, originalTabInGroup.id);
+  });
+
   test('removes a tab when tab is removed from current window', async () => {
     const tabToRemove = tabs[0];
     webUIListenerCallback('tab-removed', tabToRemove.id);
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
index 9b9b82a7..48e6513 100644
--- a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
+++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
@@ -74,8 +74,8 @@
 
 // Cached VPD read from sysfs.
 struct CachedVpdInfo {
-  // Contents of /sys/firmware/vpd/ro/sku_number.
-  string sku_number;
+  // Contents of /sys/firmware/vpd/ro/sku_number, if the device supports it.
+  string? sku_number;
 };
 
 // Information related to a device's CPU.
diff --git a/chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom b/chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom
index 2e24676..488f58a4 100644
--- a/chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom
+++ b/chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom
@@ -29,10 +29,11 @@
 interface MachineLearningService {
   // The BuiltinModelId inside BuiltinModelSpec is used to specify the model to
   // be loaded.
-  LoadBuiltinModel(BuiltinModelSpec spec, Model& request)
+  LoadBuiltinModel(BuiltinModelSpec spec, pending_receiver<Model> receiver)
       => (LoadModelResult result);
   // The FlatbufferModelSpec contains both of the flatbuffer content and the
   // metadata.
-  LoadFlatBufferModel(FlatBufferModelSpec spec, Model& request)
+  LoadFlatBufferModel(FlatBufferModelSpec spec,
+                      pending_receiver<Model> receiver)
       => (LoadModelResult result);
 };
diff --git a/components/autofill/core/browser/autofill_metrics.cc b/components/autofill/core/browser/autofill_metrics.cc
index e88c2ec..13867e9 100644
--- a/components/autofill/core/browser/autofill_metrics.cc
+++ b/components/autofill/core/browser/autofill_metrics.cc
@@ -1007,6 +1007,13 @@
 }
 
 // static
+void AutofillMetrics::LogUserVerifiabilityCheckDuration(
+    const base::TimeDelta& duration) {
+  base::UmaHistogramLongTimes(
+      "Autofill.BetterAuth.UserVerifiabilityCheckDuration", duration);
+}
+
+// static
 void AutofillMetrics::LogWebauthnResult(WebauthnFlowEvent event,
                                         WebauthnResultMetric metric) {
   std::string histogram_name = "Autofill.BetterAuth.WebauthnResult.";
diff --git a/components/autofill/core/browser/autofill_metrics.h b/components/autofill/core/browser/autofill_metrics.h
index 1506c7b..d56d172 100644
--- a/components/autofill/core/browser/autofill_metrics.h
+++ b/components/autofill/core/browser/autofill_metrics.h
@@ -1147,6 +1147,12 @@
   static void LogUserPerceivedLatencyOnCardSelection(PreflightCallEvent event,
                                                      bool fido_auth_enabled);
 
+  // Logs the duration of WebAuthn's
+  // IsUserVerifiablePlatformAuthenticatorAvailable() call. It is supposedly an
+  // extremely quick IPC.
+  static void LogUserVerifiabilityCheckDuration(
+      const base::TimeDelta& duration);
+
   // Logs the result of a WebAuthn prompt.
   static void LogWebauthnResult(WebauthnFlowEvent event,
                                 WebauthnResultMetric metric);
diff --git a/components/autofill/core/browser/payments/credit_card_access_manager.cc b/components/autofill/core/browser/payments/credit_card_access_manager.cc
index 3b11026..1573de4 100644
--- a/components/autofill/core/browser/payments/credit_card_access_manager.cc
+++ b/components/autofill/core/browser/payments/credit_card_access_manager.cc
@@ -187,6 +187,8 @@
   if (is_user_verifiable_.has_value()) {
     GetUnmaskDetailsIfUserIsVerifiable(is_user_verifiable_.value());
   } else {
+    is_user_verifiable_called_timestamp_ = AutofillTickClock::NowTicks();
+
     GetOrCreateFIDOAuthenticator()->IsUserVerifiable(base::BindOnce(
         &CreditCardAccessManager::GetUnmaskDetailsIfUserIsVerifiable,
         weak_ptr_factory_.GetWeakPtr()));
@@ -198,6 +200,12 @@
     bool is_user_verifiable) {
   is_user_verifiable_ = is_user_verifiable;
 
+  if (is_user_verifiable_called_timestamp_.has_value()) {
+    AutofillMetrics::LogUserVerifiabilityCheckDuration(
+        AutofillTickClock::NowTicks() -
+        is_user_verifiable_called_timestamp_.value());
+  }
+
   // If user is verifiable, then make preflight call to payments to fetch unmask
   // details, otherwise the only option is to perform CVC Auth, which does not
   // require any. Do nothing if request is already in progress.
diff --git a/components/autofill/core/browser/payments/credit_card_access_manager.h b/components/autofill/core/browser/payments/credit_card_access_manager.h
index 83f67aa7..7daf1f1 100644
--- a/components/autofill/core/browser/payments/credit_card_access_manager.h
+++ b/components/autofill/core/browser/payments/credit_card_access_manager.h
@@ -222,6 +222,10 @@
   // Meant for histograms recorded in FullCardRequest.
   base::TimeTicks form_parsed_timestamp_;
 
+  // Timestamp for when fido_authenticator_->IsUserVerifiable() is called.
+  base::Optional<base::TimeTicks> is_user_verifiable_called_timestamp_ =
+      base::nullopt;
+
   // Authenticators for card unmasking.
   std::unique_ptr<CreditCardCVCAuthenticator> cvc_authenticator_;
 #if !defined(OS_IOS)
diff --git a/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc b/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc
index cb6aa4b2..2d9ef70a4 100644
--- a/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc
+++ b/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc
@@ -531,6 +531,8 @@
 
 // Ensures that CardUnmaskPreflightCalled metrics are logged correctly.
 TEST_F(CreditCardAccessManagerTest, CardUnmaskPreflightCalledMetric) {
+  std::string verifiability_check_metric =
+      "Autofill.BetterAuth.UserVerifiabilityCheckDuration";
   std::string preflight_call_metric =
       "Autofill.BetterAuth.CardUnmaskPreflightCalled";
   std::string preflight_latency_metric =
@@ -550,7 +552,9 @@
     InvokeUnmaskDetailsTimeout();
     WaitForCallbacks();
 
-    // If only local cards are available, then no preflight call is made.
+    // If only local cards are available, then no preflight call nor check for
+    // verifiability is made.
+    histogram_tester.ExpectTotalCount(verifiability_check_metric, 0);
     histogram_tester.ExpectTotalCount(preflight_call_metric, 0);
     histogram_tester.ExpectTotalCount(preflight_latency_metric, 0);
   }
@@ -569,7 +573,13 @@
     InvokeUnmaskDetailsTimeout();
     WaitForCallbacks();
 
-    // If user is not verifiable, then no preflight call is made.
+    // Server cards are available, check for verifiability is made.
+    // But since user is not verifiable, no preflight call is made.
+#if defined(OS_IOS)
+    histogram_tester.ExpectTotalCount(verifiability_check_metric, 0);
+#else
+    histogram_tester.ExpectTotalCount(verifiability_check_metric, 1);
+#endif
     histogram_tester.ExpectTotalCount(preflight_call_metric, 0);
     histogram_tester.ExpectTotalCount(preflight_latency_metric, 0);
   }
@@ -591,9 +601,11 @@
     // Preflight call is made only if a server card is available and the user is
     // eligible for FIDO authentication, except on iOS.
 #if defined(OS_IOS)
+    histogram_tester.ExpectTotalCount(verifiability_check_metric, 0);
     histogram_tester.ExpectTotalCount(preflight_call_metric, 0);
     histogram_tester.ExpectTotalCount(preflight_latency_metric, 0);
 #else
+    histogram_tester.ExpectTotalCount(verifiability_check_metric, 1);
     histogram_tester.ExpectTotalCount(preflight_call_metric, 1);
     histogram_tester.ExpectTotalCount(preflight_latency_metric, 1);
 #endif
diff --git a/components/autofill/core/browser/payments/legal_message_line_unittest.cc b/components/autofill/core/browser/payments/legal_message_line_unittest.cc
index b126d82d..3729371 100644
--- a/components/autofill/core/browser/payments/legal_message_line_unittest.cc
+++ b/components/autofill/core/browser/payments/legal_message_line_unittest.cc
@@ -9,6 +9,7 @@
 #include <utility>
 
 #include "base/json/json_reader.h"
+#include "base/no_destructor.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
 #include "components/autofill/core/browser/payments/test_legal_message_line.h"
@@ -17,6 +18,8 @@
 
 namespace autofill {
 
+namespace {
+
 using Link = LegalMessageLine::Link;
 
 // A test case.
@@ -26,6 +29,228 @@
   bool escape_apostrophes;
 };
 
+// Test case values are indices into the TestCaseData vector. This is done to
+// avoid static initializers on types used by the TestCase data.
+const std::vector<int>& TestCaseValues() {
+  static base::NoDestructor<std::vector<int>> cases{
+      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
+  return *cases;
+}
+
+const std::vector<TestCase>& TestCaseData() {
+  static base::NoDestructor<std::vector<TestCase>> cases{{
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "     \"template\": \"This is the entire message.\""
+               "  } ]"
+               "}",
+               {TestLegalMessageLine("This is the entire message.")}},
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "     \"template\": \"Panda {0}.\","
+               "     \"template_parameter\": [ {"
+               "        \"display_text\": \"bears are fuzzy\","
+               "        \"url\": \"http://www.example.com\""
+               "     } ]"
+               "  } ]"
+               "}",
+               {TestLegalMessageLine{"Panda bears are fuzzy.",
+                                     {Link(6, 21, "http://www.example.com")}}}},
+      // Legal message is invalid, so lines should be empty.
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "     \"template\": \"Panda {0}.\","
+               "     \"template_parameter\": [ {"
+               "        \"display_text\": \"bear\""
+               "     } ]"
+               "  } ]"
+               "}",
+               LegalMessageLines()},
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "    \"template\": \"Panda {0}.\","
+               "    \"template_parameter\": [ {"
+               "      \"url\": \"http://www.example.com\""
+               "     } ]"
+               "  } ]"
+               "}",
+               // Legal message is invalid, so lines should be empty.
+               LegalMessageLines()},
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "    \"template\": \"Panda '{'{0}'}' '{1}' don't $1.\","
+               "    \"template_parameter\": [ {"
+               "      \"display_text\": \"bears\","
+               "      \"url\": \"http://www.example.com\""
+               "     } ]"
+               "  } ]"
+               "}",
+               {TestLegalMessageLine("Panda {bears} {1} don't $1.",
+                                     {Link(7, 12, "http://www.example.com")})}},
+      // Consecutive dollar signs do not expand correctly (see comment in
+      // ReplaceTemplatePlaceholders() in legal_message_line.cc). If this is
+      // fixed and this test starts to fail, please update the "Caveats"
+      // section of the LegalMessageLine::Parse() header file comment.
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "     \"template\": \"$$\""
+               "  } ]"
+               "}",
+               {TestLegalMessageLine("$$$")}},
+      // "${" does not expand correctly (see comment in
+      // ReplaceTemplatePlaceholders() in legal_message_line.cc). If this is
+      // fixed and this test starts to fail, please update the "Caveats"
+      // section of the LegalMessageLine::Parse() header file comment.
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "    \"template\": \"${0}\","
+               "    \"template_parameter\": [ {"
+               "      \"display_text\": \"bears\","
+               "      \"url\": \"http://www.example.com\""
+               "    } ]"
+               "  } ]"
+               "}",
+               LegalMessageLines()},
+      TestCase{
+          "{"
+          "  \"line\" : [ {"
+          "    \"template\": \"Panda {0} like {2} eat {1}.\","
+          "    \"template_parameter\": [ {"
+          "      \"display_text\": \"bears\","
+          "      \"url\": \"http://www.example.com/0\""
+          "    }, {"
+          "      \"display_text\": \"bamboo\","
+          "      \"url\": \"http://www.example.com/1\""
+          "    }, {"
+          "      \"display_text\": \"to\","
+          "      \"url\": \"http://www.example.com/2\""
+          "    } ]"
+          "  } ]"
+          "}",
+          {TestLegalMessageLine("Panda bears like to eat bamboo.",
+                                {Link(6, 11, "http://www.example.com/0"),
+                                 Link(24, 30, "http://www.example.com/1"),
+                                 Link(17, 19, "http://www.example.com/2")})}},
+      TestCase{"{"
+               "  \"line\" : [ {"
+               "    \"template\": \"Panda {0}\","
+               "    \"template_parameter\": [ {"
+               "      \"display_text\": \"bears\","
+               "      \"url\": \"http://www.example.com/line_0_param_0\""
+               "    } ]"
+               "  }, {"
+               "    \"template\": \"like {1} eat {0}.\","
+               "    \"template_parameter\": [ {"
+               "      \"display_text\": \"bamboo\","
+               "      \"url\": \"http://www.example.com/line_1_param_0\""
+               "    }, {"
+               "      \"display_text\": \"to\","
+               "      \"url\": \"http://www.example.com/line_1_param_1\""
+               "    } ]"
+               "  }, {"
+               "    \"template\": \"The {0}.\","
+               "    \"template_parameter\": [ {"
+               "      \"display_text\": \"end\","
+               "      \"url\": \"http://www.example.com/line_2_param_0\""
+               "    } ]"
+               "  } ]"
+               "}",
+               {TestLegalMessageLine(
+                    "Panda bears",
+                    {Link(6, 11, "http://www.example.com/line_0_param_0")}),
+                TestLegalMessageLine(
+                    "like to eat bamboo.",
+                    {Link(12, 18, "http://www.example.com/line_1_param_0"),
+                     Link(5, 7, "http://www.example.com/line_1_param_1")}),
+                TestLegalMessageLine(
+                    "The end.",
+                    {Link(4, 7, "http://www.example.com/line_2_param_0")})
+
+               }},
+      TestCase{
+          "{"
+          "  \"line\" : [ {"
+          "    \"template\": \"Panda {0}\nlike {2} eat {1}.\nThe {3}.\","
+          "    \"template_parameter\": [ {"
+          "      \"display_text\": \"bears\","
+          "      \"url\": \"http://www.example.com/0\""
+          "    }, {"
+          "      \"display_text\": \"bamboo\","
+          "      \"url\": \"http://www.example.com/1\""
+          "    }, {"
+          "      \"display_text\": \"to\","
+          "      \"url\": \"http://www.example.com/2\""
+          "    }, {"
+          "      \"display_text\": \"end\","
+          "      \"url\": \"http://www.example.com/3\""
+          "    } ]"
+          "  } ]"
+          "}",
+          {TestLegalMessageLine("Panda bears\nlike to eat bamboo.\nThe end.",
+                                {Link(6, 11, "http://www.example.com/0"),
+                                 Link(24, 30, "http://www.example.com/1"),
+                                 Link(17, 19, "http://www.example.com/2"),
+                                 Link(36, 39, "http://www.example.com/3")})}},
+      TestCase{
+          "{"
+          "  \"line\" : [ {"
+          "    \"template\": \"a{0} b{1} c{2} d{3} e{4} f{5} g{6}\","
+          "    \"template_parameter\": [ {"
+          "      \"display_text\": \"A\","
+          "      \"url\": \"http://www.example.com/0\""
+          "    }, {"
+          "      \"display_text\": \"B\","
+          "      \"url\": \"http://www.example.com/1\""
+          "    }, {"
+          "      \"display_text\": \"C\","
+          "      \"url\": \"http://www.example.com/2\""
+          "    }, {"
+          "      \"display_text\": \"D\","
+          "      \"url\": \"http://www.example.com/3\""
+          "    }, {"
+          "      \"display_text\": \"E\","
+          "      \"url\": \"http://www.example.com/4\""
+          "    }, {"
+          "      \"display_text\": \"F\","
+          "      \"url\": \"http://www.example.com/5\""
+          "    }, {"
+          "      \"display_text\": \"G\","
+          "      \"url\": \"http://www.example.com/6\""
+          "    } ]"
+          "  } ]"
+          "}",
+          {TestLegalMessageLine("aA bB cC dD eE fF gG",
+                                {Link(1, 2, "http://www.example.com/0"),
+                                 Link(4, 5, "http://www.example.com/1"),
+                                 Link(7, 8, "http://www.example.com/2"),
+                                 Link(10, 11, "http://www.example.com/3"),
+                                 Link(13, 14, "http://www.example.com/4"),
+                                 Link(16, 17, "http://www.example.com/5"),
+                                 Link(19, 20, "http://www.example.com/6")})}},
+      // When |escape_apostrophes| is true, all ASCII apostrophes should be
+      // escaped for ICU's MessageFormat by doubling them up.  This allows the
+      // template parameters to work correctly.
+      // http://www.icu-project.org/apiref/icu4c/messagepattern_8h.html#af6e0757e0eb81c980b01ee5d68a9978b
+      TestCase{
+          "{"
+          "  \"line\" : [ {"
+          "    \"template\": \"The panda bear's bamboo was '{0}.\","
+          "    \"template_parameter\": [ {"
+          "      \"display_text\": \"delicious\","
+          "      \"url\": \"http://www.example.com/0\""
+          "    } ]"
+          "  } ]"
+          "}",
+          {TestLegalMessageLine("The panda bear's bamboo was 'delicious.",
+                                {Link(29, 38, "http://www.example.com/0")})},
+          true},
+  }};
+  CHECK_EQ(cases->size(), TestCaseValues().size());
+  return *cases;
+}
+
+}  // namespace
+
 // Prints out a legal message |line| to |os|.
 std::ostream& operator<<(std::ostream& os, const LegalMessageLine& line) {
   os << "{text: '" << line.text() << "', links: [";
@@ -49,9 +274,10 @@
 }
 
 // Prints out |test_case| to |os|.
-std::ostream& operator<<(std::ostream& os, const TestCase& test_case) {
-  os << "{message_json: '" << test_case.message_json
-     << "', expected_lines: " << test_case.expected_lines << "}";
+std::ostream& operator<<(std::ostream& os, const int test_case) {
+  os << "{message_json: '" << TestCaseData()[test_case].message_json
+     << "', expected_lines: " << TestCaseData()[test_case].expected_lines
+     << "}";
   return os;
 }
 
@@ -71,7 +297,7 @@
   return true;
 }
 
-class LegalMessageLineTest : public ::testing::TestWithParam<TestCase> {
+class LegalMessageLineTest : public ::testing::TestWithParam<int> {
  public:
   LegalMessageLineTest() {}
   ~LegalMessageLineTest() override {}
@@ -79,226 +305,19 @@
 
 // Verifies that legal message parsing is correct.
 TEST_P(LegalMessageLineTest, Parsing) {
+  const TestCase& test_case = TestCaseData()[GetParam()];
   base::Optional<base::Value> value(
-      base::JSONReader::Read(GetParam().message_json));
+      base::JSONReader::Read(test_case.message_json));
   ASSERT_TRUE(value);
   ASSERT_TRUE(value->is_dict());
   LegalMessageLines actual_lines;
-  LegalMessageLine::Parse(*value, &actual_lines, GetParam().escape_apostrophes);
+  LegalMessageLine::Parse(*value, &actual_lines, test_case.escape_apostrophes);
 
-  EXPECT_EQ(GetParam().expected_lines, actual_lines);
+  EXPECT_EQ(test_case.expected_lines, actual_lines);
 }
 
-INSTANTIATE_TEST_SUITE_P(
-    TestCases,
-    LegalMessageLineTest,
-    testing::Values(
-        TestCase{"{"
-                 "  \"line\" : [ {"
-                 "     \"template\": \"This is the entire message.\""
-                 "  } ]"
-                 "}",
-                 {TestLegalMessageLine("This is the entire message.")}},
-        TestCase{
-            "{"
-            "  \"line\" : [ {"
-            "     \"template\": \"Panda {0}.\","
-            "     \"template_parameter\": [ {"
-            "        \"display_text\": \"bears are fuzzy\","
-            "        \"url\": \"http://www.example.com\""
-            "     } ]"
-            "  } ]"
-            "}",
-            {TestLegalMessageLine{"Panda bears are fuzzy.",
-                                  {Link(6, 21, "http://www.example.com")}}}},
-        // Legal message is invalid, so lines should be empty.
-        TestCase{"{"
-                 "  \"line\" : [ {"
-                 "     \"template\": \"Panda {0}.\","
-                 "     \"template_parameter\": [ {"
-                 "        \"display_text\": \"bear\""
-                 "     } ]"
-                 "  } ]"
-                 "}",
-                 LegalMessageLines()},
-        TestCase{"{"
-                 "  \"line\" : [ {"
-                 "    \"template\": \"Panda {0}.\","
-                 "    \"template_parameter\": [ {"
-                 "      \"url\": \"http://www.example.com\""
-                 "     } ]"
-                 "  } ]"
-                 "}",
-                 // Legal message is invalid, so lines should be empty.
-                 LegalMessageLines()},
-        TestCase{
-            "{"
-            "  \"line\" : [ {"
-            "    \"template\": \"Panda '{'{0}'}' '{1}' don't $1.\","
-            "    \"template_parameter\": [ {"
-            "      \"display_text\": \"bears\","
-            "      \"url\": \"http://www.example.com\""
-            "     } ]"
-            "  } ]"
-            "}",
-            {TestLegalMessageLine("Panda {bears} {1} don't $1.",
-                                  {Link(7, 12, "http://www.example.com")})}},
-        // Consecutive dollar signs do not expand correctly (see comment in
-        // ReplaceTemplatePlaceholders() in legal_message_line.cc). If this is
-        // fixed and this test starts to fail, please update the "Caveats"
-        // section of the LegalMessageLine::Parse() header file comment.
-        TestCase{"{"
-                 "  \"line\" : [ {"
-                 "     \"template\": \"$$\""
-                 "  } ]"
-                 "}",
-                 {TestLegalMessageLine("$$$")}},
-        // "${" does not expand correctly (see comment in
-        // ReplaceTemplatePlaceholders() in legal_message_line.cc). If this is
-        // fixed and this test starts to fail, please update the "Caveats"
-        // section of the LegalMessageLine::Parse() header file comment.
-        TestCase{"{"
-                 "  \"line\" : [ {"
-                 "    \"template\": \"${0}\","
-                 "    \"template_parameter\": [ {"
-                 "      \"display_text\": \"bears\","
-                 "      \"url\": \"http://www.example.com\""
-                 "    } ]"
-                 "  } ]"
-                 "}",
-                 LegalMessageLines()},
-        TestCase{
-            "{"
-            "  \"line\" : [ {"
-            "    \"template\": \"Panda {0} like {2} eat {1}.\","
-            "    \"template_parameter\": [ {"
-            "      \"display_text\": \"bears\","
-            "      \"url\": \"http://www.example.com/0\""
-            "    }, {"
-            "      \"display_text\": \"bamboo\","
-            "      \"url\": \"http://www.example.com/1\""
-            "    }, {"
-            "      \"display_text\": \"to\","
-            "      \"url\": \"http://www.example.com/2\""
-            "    } ]"
-            "  } ]"
-            "}",
-            {TestLegalMessageLine("Panda bears like to eat bamboo.",
-                                  {Link(6, 11, "http://www.example.com/0"),
-                                   Link(24, 30, "http://www.example.com/1"),
-                                   Link(17, 19, "http://www.example.com/2")})}},
-        TestCase{"{"
-                 "  \"line\" : [ {"
-                 "    \"template\": \"Panda {0}\","
-                 "    \"template_parameter\": [ {"
-                 "      \"display_text\": \"bears\","
-                 "      \"url\": \"http://www.example.com/line_0_param_0\""
-                 "    } ]"
-                 "  }, {"
-                 "    \"template\": \"like {1} eat {0}.\","
-                 "    \"template_parameter\": [ {"
-                 "      \"display_text\": \"bamboo\","
-                 "      \"url\": \"http://www.example.com/line_1_param_0\""
-                 "    }, {"
-                 "      \"display_text\": \"to\","
-                 "      \"url\": \"http://www.example.com/line_1_param_1\""
-                 "    } ]"
-                 "  }, {"
-                 "    \"template\": \"The {0}.\","
-                 "    \"template_parameter\": [ {"
-                 "      \"display_text\": \"end\","
-                 "      \"url\": \"http://www.example.com/line_2_param_0\""
-                 "    } ]"
-                 "  } ]"
-                 "}",
-                 {TestLegalMessageLine(
-                      "Panda bears",
-                      {Link(6, 11, "http://www.example.com/line_0_param_0")}),
-                  TestLegalMessageLine(
-                      "like to eat bamboo.",
-                      {Link(12, 18, "http://www.example.com/line_1_param_0"),
-                       Link(5, 7, "http://www.example.com/line_1_param_1")}),
-                  TestLegalMessageLine(
-                      "The end.",
-                      {Link(4, 7, "http://www.example.com/line_2_param_0")})
-
-                 }},
-        TestCase{
-            "{"
-            "  \"line\" : [ {"
-            "    \"template\": \"Panda {0}\nlike {2} eat {1}.\nThe {3}.\","
-            "    \"template_parameter\": [ {"
-            "      \"display_text\": \"bears\","
-            "      \"url\": \"http://www.example.com/0\""
-            "    }, {"
-            "      \"display_text\": \"bamboo\","
-            "      \"url\": \"http://www.example.com/1\""
-            "    }, {"
-            "      \"display_text\": \"to\","
-            "      \"url\": \"http://www.example.com/2\""
-            "    }, {"
-            "      \"display_text\": \"end\","
-            "      \"url\": \"http://www.example.com/3\""
-            "    } ]"
-            "  } ]"
-            "}",
-            {TestLegalMessageLine("Panda bears\nlike to eat bamboo.\nThe end.",
-                                  {Link(6, 11, "http://www.example.com/0"),
-                                   Link(24, 30, "http://www.example.com/1"),
-                                   Link(17, 19, "http://www.example.com/2"),
-                                   Link(36, 39, "http://www.example.com/3")})}},
-        TestCase{
-            "{"
-            "  \"line\" : [ {"
-            "    \"template\": \"a{0} b{1} c{2} d{3} e{4} f{5} g{6}\","
-            "    \"template_parameter\": [ {"
-            "      \"display_text\": \"A\","
-            "      \"url\": \"http://www.example.com/0\""
-            "    }, {"
-            "      \"display_text\": \"B\","
-            "      \"url\": \"http://www.example.com/1\""
-            "    }, {"
-            "      \"display_text\": \"C\","
-            "      \"url\": \"http://www.example.com/2\""
-            "    }, {"
-            "      \"display_text\": \"D\","
-            "      \"url\": \"http://www.example.com/3\""
-            "    }, {"
-            "      \"display_text\": \"E\","
-            "      \"url\": \"http://www.example.com/4\""
-            "    }, {"
-            "      \"display_text\": \"F\","
-            "      \"url\": \"http://www.example.com/5\""
-            "    }, {"
-            "      \"display_text\": \"G\","
-            "      \"url\": \"http://www.example.com/6\""
-            "    } ]"
-            "  } ]"
-            "}",
-            {TestLegalMessageLine("aA bB cC dD eE fF gG",
-                                  {Link(1, 2, "http://www.example.com/0"),
-                                   Link(4, 5, "http://www.example.com/1"),
-                                   Link(7, 8, "http://www.example.com/2"),
-                                   Link(10, 11, "http://www.example.com/3"),
-                                   Link(13, 14, "http://www.example.com/4"),
-                                   Link(16, 17, "http://www.example.com/5"),
-                                   Link(19, 20, "http://www.example.com/6")})}},
-        // When |escape_apostrophes| is true, all ASCII apostrophes should be
-        // escaped for ICU's MessageFormat by doubling them up.  This allows the
-        // template parameters to work correctly.
-        // http://www.icu-project.org/apiref/icu4c/messagepattern_8h.html#af6e0757e0eb81c980b01ee5d68a9978b
-        TestCase{
-            "{"
-            "  \"line\" : [ {"
-            "    \"template\": \"The panda bear's bamboo was '{0}.\","
-            "    \"template_parameter\": [ {"
-            "      \"display_text\": \"delicious\","
-            "      \"url\": \"http://www.example.com/0\""
-            "    } ]"
-            "  } ]"
-            "}",
-            {TestLegalMessageLine("The panda bear's bamboo was 'delicious.",
-                                  {Link(29, 38, "http://www.example.com/0")})},
-            true}));
+INSTANTIATE_TEST_SUITE_P(TestCases,
+                         LegalMessageLineTest,
+                         testing::ValuesIn(TestCaseValues()));
 
 }  // namespace autofill
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
index 2885e68..4e7a85d 100644
--- a/components/cronet/android/BUILD.gn
+++ b/components/cronet/android/BUILD.gn
@@ -929,6 +929,7 @@
     ":cronet_test_apk_java",
     "//base:base_java",
     "//base:base_java_test_support",
+    "//base:jni_java",
     "//net/android:embedded_test_server_aidl_java",
     "//net/android:net_java",
     "//net/android:net_java_test_support",
diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc
index 7b11267..b69f2345 100644
--- a/components/download/internal/common/download_item_impl.cc
+++ b/components/download/internal/common/download_item_impl.cc
@@ -499,8 +499,6 @@
   if (IsDone() || !IsDangerous())
     return;
 
-  RecordDangerousDownloadAccept(GetDangerType(), GetTargetFilePath());
-
   danger_type_ = DOWNLOAD_DANGER_TYPE_USER_VALIDATED;
 
   TRACE_EVENT_INSTANT1("download", "DownloadItemSaftyStateUpdated",
diff --git a/components/download/internal/common/download_stats.cc b/components/download/internal/common/download_stats.cc
index a407321..88fbf50 100644
--- a/components/download/internal/common/download_stats.cc
+++ b/components/download/internal/common/download_stats.cc
@@ -79,427 +79,12 @@
   RecordContentDispositionCount(type, (flags_to_test & flag) == flag);
 }
 
-// Do not insert, delete, or reorder; this is being histogrammed. Append only.
-// All of the download_file_types.asciipb entries should be in this list.
-// TODO(asanka): Replace this enum with calls to FileTypePolicies and move the
-// UMA metrics for dangerous/malicious downloads to //chrome/browser/download.
-constexpr const base::FilePath::CharType* kDangerousFileTypes[] = {
-    FILE_PATH_LITERAL(".ad"),
-    FILE_PATH_LITERAL(".ade"),
-    FILE_PATH_LITERAL(".adp"),
-    FILE_PATH_LITERAL(".ah"),
-    FILE_PATH_LITERAL(".apk"),
-    FILE_PATH_LITERAL(".app"),
-    FILE_PATH_LITERAL(".application"),
-    FILE_PATH_LITERAL(".asp"),
-    FILE_PATH_LITERAL(".asx"),
-    FILE_PATH_LITERAL(".bas"),
-    FILE_PATH_LITERAL(".bash"),
-    FILE_PATH_LITERAL(".bat"),
-    FILE_PATH_LITERAL(".cfg"),
-    FILE_PATH_LITERAL(".chi"),
-    FILE_PATH_LITERAL(".chm"),
-    FILE_PATH_LITERAL(".class"),
-    FILE_PATH_LITERAL(".cmd"),
-    FILE_PATH_LITERAL(".com"),
-    FILE_PATH_LITERAL(".command"),
-    FILE_PATH_LITERAL(".crt"),
-    FILE_PATH_LITERAL(".crx"),
-    FILE_PATH_LITERAL(".csh"),
-    FILE_PATH_LITERAL(".deb"),
-    FILE_PATH_LITERAL(".dex"),
-    FILE_PATH_LITERAL(".dll"),
-    FILE_PATH_LITERAL(".drv"),
-    FILE_PATH_LITERAL(".exe"),
-    FILE_PATH_LITERAL(".fxp"),
-    FILE_PATH_LITERAL(".grp"),
-    FILE_PATH_LITERAL(".hlp"),
-    FILE_PATH_LITERAL(".hta"),
-    FILE_PATH_LITERAL(".htm"),
-    FILE_PATH_LITERAL(".html"),
-    FILE_PATH_LITERAL(".htt"),
-    FILE_PATH_LITERAL(".inf"),
-    FILE_PATH_LITERAL(".ini"),
-    FILE_PATH_LITERAL(".ins"),
-    FILE_PATH_LITERAL(".isp"),
-    FILE_PATH_LITERAL(".jar"),
-    FILE_PATH_LITERAL(".jnlp"),
-    FILE_PATH_LITERAL(".user.js"),
-    FILE_PATH_LITERAL(".js"),
-    FILE_PATH_LITERAL(".jse"),
-    FILE_PATH_LITERAL(".ksh"),
-    FILE_PATH_LITERAL(".lnk"),
-    FILE_PATH_LITERAL(".local"),
-    FILE_PATH_LITERAL(".mad"),
-    FILE_PATH_LITERAL(".maf"),
-    FILE_PATH_LITERAL(".mag"),
-    FILE_PATH_LITERAL(".mam"),
-    FILE_PATH_LITERAL(".manifest"),
-    FILE_PATH_LITERAL(".maq"),
-    FILE_PATH_LITERAL(".mar"),
-    FILE_PATH_LITERAL(".mas"),
-    FILE_PATH_LITERAL(".mat"),
-    FILE_PATH_LITERAL(".mau"),
-    FILE_PATH_LITERAL(".mav"),
-    FILE_PATH_LITERAL(".maw"),
-    FILE_PATH_LITERAL(".mda"),
-    FILE_PATH_LITERAL(".mdb"),
-    FILE_PATH_LITERAL(".mde"),
-    FILE_PATH_LITERAL(".mdt"),
-    FILE_PATH_LITERAL(".mdw"),
-    FILE_PATH_LITERAL(".mdz"),
-    FILE_PATH_LITERAL(".mht"),
-    FILE_PATH_LITERAL(".mhtml"),
-    FILE_PATH_LITERAL(".mmc"),
-    FILE_PATH_LITERAL(".mof"),
-    FILE_PATH_LITERAL(".msc"),
-    FILE_PATH_LITERAL(".msh"),
-    FILE_PATH_LITERAL(".mshxml"),
-    FILE_PATH_LITERAL(".msi"),
-    FILE_PATH_LITERAL(".msp"),
-    FILE_PATH_LITERAL(".mst"),
-    FILE_PATH_LITERAL(".ocx"),
-    FILE_PATH_LITERAL(".ops"),
-    FILE_PATH_LITERAL(".pcd"),
-    FILE_PATH_LITERAL(".pif"),
-    FILE_PATH_LITERAL(".pkg"),
-    FILE_PATH_LITERAL(".pl"),
-    FILE_PATH_LITERAL(".plg"),
-    FILE_PATH_LITERAL(".prf"),
-    FILE_PATH_LITERAL(".prg"),
-    FILE_PATH_LITERAL(".pst"),
-    FILE_PATH_LITERAL(".py"),
-    FILE_PATH_LITERAL(".pyc"),
-    FILE_PATH_LITERAL(".pyw"),
-    FILE_PATH_LITERAL(".rb"),
-    FILE_PATH_LITERAL(".reg"),
-    FILE_PATH_LITERAL(".rpm"),
-    FILE_PATH_LITERAL(".scf"),
-    FILE_PATH_LITERAL(".scr"),
-    FILE_PATH_LITERAL(".sct"),
-    FILE_PATH_LITERAL(".sh"),
-    FILE_PATH_LITERAL(".shar"),
-    FILE_PATH_LITERAL(".shb"),
-    FILE_PATH_LITERAL(".shs"),
-    FILE_PATH_LITERAL(".shtm"),
-    FILE_PATH_LITERAL(".shtml"),
-    FILE_PATH_LITERAL(".spl"),
-    FILE_PATH_LITERAL(".svg"),
-    FILE_PATH_LITERAL(".swf"),
-    FILE_PATH_LITERAL(".sys"),
-    FILE_PATH_LITERAL(".tcsh"),
-    FILE_PATH_LITERAL(".url"),
-    FILE_PATH_LITERAL(".vb"),
-    FILE_PATH_LITERAL(".vbe"),
-    FILE_PATH_LITERAL(".vbs"),
-    FILE_PATH_LITERAL(".vsd"),
-    FILE_PATH_LITERAL(".vsmacros"),
-    FILE_PATH_LITERAL(".vss"),
-    FILE_PATH_LITERAL(".vst"),
-    FILE_PATH_LITERAL(".vsw"),
-    FILE_PATH_LITERAL(".ws"),
-    FILE_PATH_LITERAL(".wsc"),
-    FILE_PATH_LITERAL(".wsf"),
-    FILE_PATH_LITERAL(".wsh"),
-    FILE_PATH_LITERAL(".xbap"),
-    FILE_PATH_LITERAL(".xht"),
-    FILE_PATH_LITERAL(".xhtm"),
-    FILE_PATH_LITERAL(".xhtml"),
-    FILE_PATH_LITERAL(".xml"),
-    FILE_PATH_LITERAL(".xsl"),
-    FILE_PATH_LITERAL(".xslt"),
-    FILE_PATH_LITERAL(".website"),
-    FILE_PATH_LITERAL(".msh1"),
-    FILE_PATH_LITERAL(".msh2"),
-    FILE_PATH_LITERAL(".msh1xml"),
-    FILE_PATH_LITERAL(".msh2xml"),
-    FILE_PATH_LITERAL(".ps1"),
-    FILE_PATH_LITERAL(".ps1xml"),
-    FILE_PATH_LITERAL(".ps2"),
-    FILE_PATH_LITERAL(".ps2xml"),
-    FILE_PATH_LITERAL(".psc1"),
-    FILE_PATH_LITERAL(".psc2"),
-    FILE_PATH_LITERAL(".xnk"),
-    FILE_PATH_LITERAL(".appref-ms"),
-    FILE_PATH_LITERAL(".gadget"),
-    FILE_PATH_LITERAL(".efi"),
-    FILE_PATH_LITERAL(".fon"),
-    FILE_PATH_LITERAL(".partial"),
-    FILE_PATH_LITERAL(".svg"),
-    FILE_PATH_LITERAL(".xml"),
-    FILE_PATH_LITERAL(".xrm_ms"),
-    FILE_PATH_LITERAL(".xsl"),
-    FILE_PATH_LITERAL(".action"),
-    FILE_PATH_LITERAL(".bin"),
-    FILE_PATH_LITERAL(".inx"),
-    FILE_PATH_LITERAL(".ipa"),
-    FILE_PATH_LITERAL(".isu"),
-    FILE_PATH_LITERAL(".job"),
-    FILE_PATH_LITERAL(".out"),
-    FILE_PATH_LITERAL(".pad"),
-    FILE_PATH_LITERAL(".paf"),
-    FILE_PATH_LITERAL(".rgs"),
-    FILE_PATH_LITERAL(".u3p"),
-    FILE_PATH_LITERAL(".vbscript"),
-    FILE_PATH_LITERAL(".workflow"),
-    FILE_PATH_LITERAL(".001"),
-    FILE_PATH_LITERAL(".7z"),
-    FILE_PATH_LITERAL(".ace"),
-    FILE_PATH_LITERAL(".arc"),
-    FILE_PATH_LITERAL(".arj"),
-    FILE_PATH_LITERAL(".b64"),
-    FILE_PATH_LITERAL(".balz"),
-    FILE_PATH_LITERAL(".bhx"),
-    FILE_PATH_LITERAL(".bz"),
-    FILE_PATH_LITERAL(".bz2"),
-    FILE_PATH_LITERAL(".bzip2"),
-    FILE_PATH_LITERAL(".cab"),
-    FILE_PATH_LITERAL(".cpio"),
-    FILE_PATH_LITERAL(".fat"),
-    FILE_PATH_LITERAL(".gz"),
-    FILE_PATH_LITERAL(".gzip"),
-    FILE_PATH_LITERAL(".hfs"),
-    FILE_PATH_LITERAL(".hqx"),
-    FILE_PATH_LITERAL(".iso"),
-    FILE_PATH_LITERAL(".lha"),
-    FILE_PATH_LITERAL(".lpaq1"),
-    FILE_PATH_LITERAL(".lpaq5"),
-    FILE_PATH_LITERAL(".lpaq8"),
-    FILE_PATH_LITERAL(".lzh"),
-    FILE_PATH_LITERAL(".lzma"),
-    FILE_PATH_LITERAL(".mim"),
-    FILE_PATH_LITERAL(".ntfs"),
-    FILE_PATH_LITERAL(".paq8f"),
-    FILE_PATH_LITERAL(".paq8jd"),
-    FILE_PATH_LITERAL(".paq8l"),
-    FILE_PATH_LITERAL(".paq8o"),
-    FILE_PATH_LITERAL(".pea"),
-    FILE_PATH_LITERAL(".quad"),
-    FILE_PATH_LITERAL(".r00"),
-    FILE_PATH_LITERAL(".r01"),
-    FILE_PATH_LITERAL(".r02"),
-    FILE_PATH_LITERAL(".r03"),
-    FILE_PATH_LITERAL(".r04"),
-    FILE_PATH_LITERAL(".r05"),
-    FILE_PATH_LITERAL(".r06"),
-    FILE_PATH_LITERAL(".r07"),
-    FILE_PATH_LITERAL(".r08"),
-    FILE_PATH_LITERAL(".r09"),
-    FILE_PATH_LITERAL(".r10"),
-    FILE_PATH_LITERAL(".r11"),
-    FILE_PATH_LITERAL(".r12"),
-    FILE_PATH_LITERAL(".r13"),
-    FILE_PATH_LITERAL(".r14"),
-    FILE_PATH_LITERAL(".r15"),
-    FILE_PATH_LITERAL(".r16"),
-    FILE_PATH_LITERAL(".r17"),
-    FILE_PATH_LITERAL(".r18"),
-    FILE_PATH_LITERAL(".r19"),
-    FILE_PATH_LITERAL(".r20"),
-    FILE_PATH_LITERAL(".r21"),
-    FILE_PATH_LITERAL(".r22"),
-    FILE_PATH_LITERAL(".r23"),
-    FILE_PATH_LITERAL(".r24"),
-    FILE_PATH_LITERAL(".r25"),
-    FILE_PATH_LITERAL(".r26"),
-    FILE_PATH_LITERAL(".r27"),
-    FILE_PATH_LITERAL(".r28"),
-    FILE_PATH_LITERAL(".r29"),
-    FILE_PATH_LITERAL(".rar"),
-    FILE_PATH_LITERAL(".squashfs"),
-    FILE_PATH_LITERAL(".swm"),
-    FILE_PATH_LITERAL(".tar"),
-    FILE_PATH_LITERAL(".taz"),
-    FILE_PATH_LITERAL(".tbz"),
-    FILE_PATH_LITERAL(".tbz2"),
-    FILE_PATH_LITERAL(".tgz"),
-    FILE_PATH_LITERAL(".tpz"),
-    FILE_PATH_LITERAL(".txz"),
-    FILE_PATH_LITERAL(".tz"),
-    FILE_PATH_LITERAL(".udf"),
-    FILE_PATH_LITERAL(".uu"),
-    FILE_PATH_LITERAL(".uue"),
-    FILE_PATH_LITERAL(".vhd"),
-    FILE_PATH_LITERAL(".vmdk"),
-    FILE_PATH_LITERAL(".wim"),
-    FILE_PATH_LITERAL(".wrc"),
-    FILE_PATH_LITERAL(".xar"),
-    FILE_PATH_LITERAL(".xxe"),
-    FILE_PATH_LITERAL(".xz"),
-    FILE_PATH_LITERAL(".z"),
-    FILE_PATH_LITERAL(".zip"),
-    FILE_PATH_LITERAL(".zipx"),
-    FILE_PATH_LITERAL(".zpaq"),
-    FILE_PATH_LITERAL(".cdr"),
-    FILE_PATH_LITERAL(".dart"),
-    FILE_PATH_LITERAL(".dc42"),
-    FILE_PATH_LITERAL(".diskcopy42"),
-    FILE_PATH_LITERAL(".dmg"),
-    FILE_PATH_LITERAL(".dmgpart"),
-    FILE_PATH_LITERAL(".dvdr"),
-    FILE_PATH_LITERAL(".img"),
-    FILE_PATH_LITERAL(".imgpart"),
-    FILE_PATH_LITERAL(".ndif"),
-    FILE_PATH_LITERAL(".smi"),
-    FILE_PATH_LITERAL(".sparsebundle"),
-    FILE_PATH_LITERAL(".sparseimage"),
-    FILE_PATH_LITERAL(".toast"),
-    FILE_PATH_LITERAL(".udif"),
-    FILE_PATH_LITERAL(".run"),  // 262
-    FILE_PATH_LITERAL(".mpkg"),
-    FILE_PATH_LITERAL(".as"),  // 264
-    FILE_PATH_LITERAL(".cpgz"),
-    FILE_PATH_LITERAL(".pax"),  // 266
-    FILE_PATH_LITERAL(".xip"),
-    FILE_PATH_LITERAL(".docx"),  // 268
-    FILE_PATH_LITERAL(".docm"),
-    FILE_PATH_LITERAL(".dott"),  // 270
-    FILE_PATH_LITERAL(".dotm"),
-    FILE_PATH_LITERAL(".docb"),  // 272
-    FILE_PATH_LITERAL(".xlsx"),
-    FILE_PATH_LITERAL(".xlsm"),  // 274
-    FILE_PATH_LITERAL(".xltx"),
-    FILE_PATH_LITERAL(".xltm"),  // 276
-    FILE_PATH_LITERAL(".pptx"),
-    FILE_PATH_LITERAL(".pptm"),  // 278
-    FILE_PATH_LITERAL(".potx"),
-    FILE_PATH_LITERAL(".ppam"),  // 280
-    FILE_PATH_LITERAL(".ppsx"),
-    FILE_PATH_LITERAL(".sldx"),  // 282
-    FILE_PATH_LITERAL(".sldm"),
-    FILE_PATH_LITERAL(".htm"),  // 284
-    FILE_PATH_LITERAL(".html"),
-    FILE_PATH_LITERAL(".xht"),  // 286
-    FILE_PATH_LITERAL(".xhtm"),
-    FILE_PATH_LITERAL(".xhtml"),  // 288
-    FILE_PATH_LITERAL(".vdx"),
-    FILE_PATH_LITERAL(".vsx"),  // 290
-    FILE_PATH_LITERAL(".vtx"),
-    FILE_PATH_LITERAL(".vsdx"),  // 292
-    FILE_PATH_LITERAL(".vssx"),
-    FILE_PATH_LITERAL(".vstx"),  // 294
-    FILE_PATH_LITERAL(".vsdm"),
-    FILE_PATH_LITERAL(".vssm"),  // 296
-    FILE_PATH_LITERAL(".vstm"),
-    FILE_PATH_LITERAL(".btapp"),  // 298
-    FILE_PATH_LITERAL(".btskin"),
-    FILE_PATH_LITERAL(".btinstall"),  // 300
-    FILE_PATH_LITERAL(".btkey"),
-    FILE_PATH_LITERAL(".btsearch"),  // 302
-    FILE_PATH_LITERAL(".dhtml"),
-    FILE_PATH_LITERAL(".dhtm"),  // 304
-    FILE_PATH_LITERAL(".dht"),
-    FILE_PATH_LITERAL(".shtml"),  // 306
-    FILE_PATH_LITERAL(".shtm"),
-    FILE_PATH_LITERAL(".sht"),  // 308
-    FILE_PATH_LITERAL(".slk"),  // 309
-    FILE_PATH_LITERAL(".applescript"),
-    FILE_PATH_LITERAL(".scpt"),  // 311
-    FILE_PATH_LITERAL(".scptd"),
-    FILE_PATH_LITERAL(".seplugin"),  // 313
-    FILE_PATH_LITERAL(".osas"),
-    FILE_PATH_LITERAL(".osax"),  // 315
-    FILE_PATH_LITERAL(".settingcontent-ms"),
-    FILE_PATH_LITERAL(".oxt"),  // 317
-    FILE_PATH_LITERAL(".pyd"),
-    FILE_PATH_LITERAL(".pyo"),              // 319
-    FILE_PATH_LITERAL(".desktop"),          // 320
-    FILE_PATH_LITERAL(".cpi"),              // 321
-    FILE_PATH_LITERAL(".jpg"),              // 322
-    FILE_PATH_LITERAL(".jpeg"),             // 323
-    FILE_PATH_LITERAL(".mp3"),              // 324
-    FILE_PATH_LITERAL(".mp4"),              // 325
-    FILE_PATH_LITERAL(".png"),              // 326
-    FILE_PATH_LITERAL(".xls"),              // 327
-    FILE_PATH_LITERAL(".doc"),              // 328
-    FILE_PATH_LITERAL(".pptx"),             // 329
-    FILE_PATH_LITERAL(".csv"),              // 330
-    FILE_PATH_LITERAL(".ica"),              // 331
-    FILE_PATH_LITERAL(".ppt"),              // 332
-    FILE_PATH_LITERAL(".gif"),              // 333
-    FILE_PATH_LITERAL(".txt"),              // 334
-    FILE_PATH_LITERAL(".package"),          // 335
-    FILE_PATH_LITERAL(".tif"),              // 336
-    FILE_PATH_LITERAL(".rtf"),              // 337
-    FILE_PATH_LITERAL(".webp"),             // 338
-    FILE_PATH_LITERAL(".mkv"),              // 339
-    FILE_PATH_LITERAL(".wav"),              // 340
-    FILE_PATH_LITERAL(".mov"),              // 341
-    FILE_PATH_LITERAL(".dot"),              // 342
-    FILE_PATH_LITERAL(".dotx"),             // 343
-    FILE_PATH_LITERAL(".xlsb"),             // 344
-    FILE_PATH_LITERAL(".xlt"),              // 345
-    FILE_PATH_LITERAL(".xlm"),              // 346
-    FILE_PATH_LITERAL(".xldm"),             // 347
-    FILE_PATH_LITERAL(".xla"),              // 348
-    FILE_PATH_LITERAL(".xlam"),             // 349
-    FILE_PATH_LITERAL(".xll"),              // 350
-    FILE_PATH_LITERAL(".xlw"),              // 351
-    FILE_PATH_LITERAL(".pot"),              // 352
-    FILE_PATH_LITERAL(".potm"),             // 353
-    FILE_PATH_LITERAL(".ppsm"),             // 354
-    FILE_PATH_LITERAL(".pps"),              // 355
-    FILE_PATH_LITERAL(".mobileconfig"),     // 356
-    FILE_PATH_LITERAL(".dylib"),            // 357
-    FILE_PATH_LITERAL(".service"),          // 358
-    FILE_PATH_LITERAL(".definition"),       // 359
-    FILE_PATH_LITERAL(".wflow"),            // 360
-    FILE_PATH_LITERAL(".caction"),          // 361
-    FILE_PATH_LITERAL(".configprofile"),    // 362
-    FILE_PATH_LITERAL(".internetconnect"),  // 363
-    FILE_PATH_LITERAL(".networkconnect"),   // 364
-    FILE_PATH_LITERAL(".bmp"),              // 365
-    FILE_PATH_LITERAL(".css"),              // 366
-    FILE_PATH_LITERAL(".ehtml"),            // 367
-    FILE_PATH_LITERAL(".flac"),             // 368
-    FILE_PATH_LITERAL(".ico"),              // 369
-    FILE_PATH_LITERAL(".jfif"),             // 370
-    FILE_PATH_LITERAL(".m4a"),              // 371
-    FILE_PATH_LITERAL(".m4v"),              // 372
-    FILE_PATH_LITERAL(".mpeg"),             // 373
-    FILE_PATH_LITERAL(".mpg"),              // 374
-    FILE_PATH_LITERAL(".oga"),              // 375
-    FILE_PATH_LITERAL(".ogg"),              // 376
-    FILE_PATH_LITERAL(".ogm"),              // 377
-    FILE_PATH_LITERAL(".ogv"),              // 378
-    FILE_PATH_LITERAL(".opus"),             // 379
-    FILE_PATH_LITERAL(".pjp"),              // 380
-    FILE_PATH_LITERAL(".pjpeg"),            // 381
-    FILE_PATH_LITERAL(".svgz"),             // 382
-    FILE_PATH_LITERAL(".text"),             // 383
-    FILE_PATH_LITERAL(".tiff"),             // 384
-    FILE_PATH_LITERAL(".weba"),             // 385
-    FILE_PATH_LITERAL(".webm"),             // 386
-    FILE_PATH_LITERAL(".xbm"),              // 387
-    FILE_PATH_LITERAL(".accdb"),            // 388
-    FILE_PATH_LITERAL(".accde"),            // 389
-    FILE_PATH_LITERAL(".accdr"),            // 390
-    FILE_PATH_LITERAL(".accda"),            // 391
-    FILE_PATH_LITERAL(".cer"),              // 392
-    FILE_PATH_LITERAL(".der"),              // 393
-    FILE_PATH_LITERAL(".fileloc"),          // 394
-    FILE_PATH_LITERAL(".webloc"),           // 395
-    // NOTE! When you add a type here, please add the UMA value as a comment.
-    // These must all match DownloadItem.DangerousFileType in
-    // enums.xml. From 263 onward, they should also match
-    // SBClientDownloadExtensions.
-};
-
 // The maximum size in KB for the file size metric, file size larger than this
 // will be kept in overflow bucket.
 const int64_t kMaxFileSizeKb = 4 * 1024 * 1024; /* 4GB. */
 
 const int64_t kHighBandwidthBytesPerSecond = 30 * 1024 * 1024;
 
-// Maps extensions to their matching UMA histogram int value.
-int GetDangerousFileType(const base::FilePath& file_path) {
-  for (size_t i = 0; i < base::size(kDangerousFileTypes); ++i) {
-    if (file_path.MatchesExtension(kDangerousFileTypes[i]))
-      return i + 1;
-  }
-  return 0;  // Unknown extension.
-}
-
 // Helper method to calculate the bandwidth given the data length and time.
 int64_t CalculateBandwidthBytesPerSecond(size_t length,
                                          base::TimeDelta elapsed_time) {
@@ -676,17 +261,6 @@
   }
 }
 
-void RecordDangerousDownloadAccept(DownloadDangerType danger_type,
-                                   const base::FilePath& file_path) {
-  UMA_HISTOGRAM_ENUMERATION("Download.DangerousDownloadValidated", danger_type,
-                            DOWNLOAD_DANGER_TYPE_MAX);
-  if (danger_type == DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE) {
-    base::UmaHistogramSparse(
-        "Download.DangerousFile.DangerousDownloadValidated",
-        GetDangerousFileType(file_path));
-  }
-}
-
 namespace {
 
 int GetMimeTypeMatch(const std::string& mime_type_string,
diff --git a/components/download/public/common/download_stats.h b/components/download/public/common/download_stats.h
index 49a45d9..5fe38a4 100644
--- a/components/download/public/common/download_stats.h
+++ b/components/download/public/common/download_stats.h
@@ -26,7 +26,6 @@
 #include "url/gurl.h"
 
 namespace base {
-class FilePath;
 class Time;
 class TimeDelta;
 }  // namespace base
@@ -269,11 +268,6 @@
     bool is_parallel_download_enabled,
     DownloadSource download_source);
 
-// Record a dangerous download accept event.
-COMPONENTS_DOWNLOAD_EXPORT void RecordDangerousDownloadAccept(
-    DownloadDangerType danger_type,
-    const base::FilePath& file_path);
-
 // Returns the type of download.
 COMPONENTS_DOWNLOAD_EXPORT DownloadContent
 DownloadContentFromMimeType(const std::string& mime_type_string,
diff --git a/components/exo/client_controlled_shell_surface.cc b/components/exo/client_controlled_shell_surface.cc
index 91aaf01..6db3b7c 100644
--- a/components/exo/client_controlled_shell_surface.cc
+++ b/components/exo/client_controlled_shell_surface.cc
@@ -16,6 +16,7 @@
 #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"
@@ -1193,14 +1194,15 @@
 
   // 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::BackdropWindowMode target_backdrop_mode =
-      enable_backdrop ? ash::BackdropWindowMode::kEnabled
-                      : ash::BackdropWindowMode::kAutoOpaque;
+  ash::WindowBackdrop::BackdropMode target_backdrop_mode =
+      enable_backdrop ? ash::WindowBackdrop::BackdropMode::kEnabled
+                      : ash::WindowBackdrop::BackdropMode::kAuto;
 
-  if (window->GetProperty(ash::kBackdropWindowMode) != target_backdrop_mode)
-    window->SetProperty(ash::kBackdropWindowMode, target_backdrop_mode);
+  ash::WindowBackdrop* window_backdrop = ash::WindowBackdrop::Get(window);
+  if (window_backdrop->mode() != target_backdrop_mode)
+    window_backdrop->SetBackdropMode(target_backdrop_mode);
 }
 
 void ClientControlledShellSurface::UpdateFrameWidth() {
diff --git a/components/feed/core/BUILD.gn b/components/feed/core/BUILD.gn
index 58b17da..24d7cbd 100644
--- a/components/feed/core/BUILD.gn
+++ b/components/feed/core/BUILD.gn
@@ -48,6 +48,7 @@
   ]
 
   deps = [
+    "//components/feed/core/common:feed_core_common",
     "//components/prefs",
     "//components/signin/public/identity_manager",
     "//components/variations",
diff --git a/components/feed/core/common/BUILD.gn b/components/feed/core/common/BUILD.gn
new file mode 100644
index 0000000..bed52bb
--- /dev/null
+++ b/components/feed/core/common/BUILD.gn
@@ -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.
+
+if (is_android) {
+  import("//build/config/android/rules.gni")
+}
+
+source_set("feed_core_common") {
+  sources = [ "enums.h" ]
+}
diff --git a/components/feed/core/common/README.md b/components/feed/core/common/README.md
new file mode 100644
index 0000000..09538074
--- /dev/null
+++ b/components/feed/core/common/README.md
@@ -0,0 +1 @@
+This directory contains code common to feed v2 and v1.
diff --git a/components/feed/core/common/enums.h b/components/feed/core/common/enums.h
new file mode 100644
index 0000000..23fc0ea
--- /dev/null
+++ b/components/feed/core/common/enums.h
@@ -0,0 +1,52 @@
+// 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 COMPONENTS_FEED_CORE_COMMON_ENUMS_H_
+#define COMPONENTS_FEED_CORE_COMMON_ENUMS_H_
+
+// This file contains enumerations common to Feed v1 and v2.
+
+namespace feed {
+
+// The TriggerType enum specifies values for the events that can trigger
+// refreshing articles. When adding values, be certain to also update the
+// corresponding definition in enums.xml.
+enum class TriggerType {
+  kNtpShown = 0,
+  kForegrounded = 1,
+  kFixedTimer = 2,
+  kMaxValue = kFixedTimer
+};
+
+// Different groupings of usage. A user will belong to exactly one of these at
+// any given point in time. Can change at runtime.
+enum class UserClass {
+  kRareSuggestionsViewer,      // Almost never opens surfaces that show
+                               // suggestions, like the NTP.
+  kActiveSuggestionsViewer,    // Frequently shown suggestions, but does not
+                               // usually open them.
+  kActiveSuggestionsConsumer,  // Frequently opens news articles.
+};
+
+// Enum for the status of the refresh, reported through UMA.
+// If any new values are added, update FeedSchedulerRefreshStatus in
+// enums.xml.
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class ShouldRefreshResult {
+  kShouldRefresh = 0,
+  kDontRefreshOutstandingRequest = 1,
+  kDontRefreshTriggerDisabled = 2,
+  kDontRefreshNetworkOffline = 3,
+  kDontRefreshEulaNotAccepted = 4,
+  kDontRefreshArticlesHidden = 5,
+  kDontRefreshRefreshSuppressed = 6,
+  kDontRefreshNotStale = 7,
+  kDontRefreshRefreshThrottled = 8,
+  kMaxValue = kDontRefreshRefreshThrottled,
+};
+
+}  // namespace feed
+
+#endif  // COMPONENTS_FEED_CORE_COMMON_ENUMS_H_
diff --git a/components/feed/core/feed_logging_metrics.cc b/components/feed/core/feed_logging_metrics.cc
index edea2234..6ba1b99 100644
--- a/components/feed/core/feed_logging_metrics.cc
+++ b/components/feed/core/feed_logging_metrics.cc
@@ -631,11 +631,6 @@
       kMaxSuggestionsForArticle + 1);
 }
 
-void FeedLoggingMetrics::OnManageInterestsClicked(int position) {
-  base::UmaHistogramExactLinear("ContentSuggestions.Feed.ManageInterestsOpened",
-                                position, kMaxSuggestionsTotal);
-}
-
 void FeedLoggingMetrics::OnNotInterestedInSource(int position, bool committed) {
   RecordUndoableActionUMA(
       "ContentSuggestions.Feed.InterestHeader.NotInterestedInSource", position,
diff --git a/components/feed/core/feed_logging_metrics.h b/components/feed/core/feed_logging_metrics.h
index ee78f01..c0398a7 100644
--- a/components/feed/core/feed_logging_metrics.h
+++ b/components/feed/core/feed_logging_metrics.h
@@ -86,8 +86,6 @@
 
   void OnNotInterestedInTopic(int position, bool committed);
 
-  void OnManageInterestsClicked(int position);
-
   void OnSpinnerStarted(int spinner_type);
 
   void OnSpinnerFinished(base::TimeDelta shown_time, int spinner_type);
diff --git a/components/feed/core/feed_logging_metrics_unittest.cc b/components/feed/core/feed_logging_metrics_unittest.cc
index 7707f827..89bf8b2 100644
--- a/components/feed/core/feed_logging_metrics_unittest.cc
+++ b/components/feed/core/feed_logging_metrics_unittest.cc
@@ -22,8 +22,6 @@
 namespace feed {
 namespace {
 
-GURL kVisitedUrl("http://visited_url.com/");
-
 // Fixed "now" to make tests more deterministic.
 char kNowString[] = "2018-06-11 15:41";
 
@@ -39,9 +37,15 @@
   DOWNLOAD = 5,
 };
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL VisitedUrl() {
+  return GURL("http://visited_url.com/");
+}
+
 void CheckURLVisit(const GURL& url,
                    FeedLoggingMetrics::CheckURLVisitCallback callback) {
-  if (url == kVisitedUrl) {
+  if (url == VisitedUrl()) {
     std::move(callback).Run(true);
   } else {
     std::move(callback).Run(false);
@@ -178,7 +182,7 @@
 
 TEST_F(FeedLoggingMetricsTest, ShouldLogOnSuggestionDismissedCommitIfVisited) {
   base::HistogramTester histogram_tester;
-  feed_logging_metrics()->OnSuggestionDismissed(/*position=*/10, kVisitedUrl,
+  feed_logging_metrics()->OnSuggestionDismissed(/*position=*/10, VisitedUrl(),
                                                 true);
   EXPECT_THAT(histogram_tester.GetAllSamples(
                   "NewTabPage.ContentSuggestions.DismissedVisited.Commit"),
@@ -198,7 +202,7 @@
 TEST_F(FeedLoggingMetricsTest,
        ShouldLogOnSuggestionDismissedUndoIfUndoDismissAndVisited) {
   base::HistogramTester histogram_tester;
-  feed_logging_metrics()->OnSuggestionDismissed(/*position=*/10, kVisitedUrl,
+  feed_logging_metrics()->OnSuggestionDismissed(/*position=*/10, VisitedUrl(),
                                                 false);
   EXPECT_THAT(histogram_tester.GetAllSamples(
                   "NewTabPage.ContentSuggestions.DismissedVisited.Undo"),
@@ -255,13 +259,4 @@
               SizeIs(1));
 }
 
-TEST_F(FeedLoggingMetricsTest, ShouldLogOnManageInterestsClicked) {
-  base::HistogramTester histogram_tester;
-
-  feed_logging_metrics()->OnManageInterestsClicked(1);
-  EXPECT_THAT(histogram_tester.GetAllSamples(
-                  "ContentSuggestions.Feed.ManageInterestsOpened"),
-              ElementsAre(base::Bucket(/*min=*/1, /*count=*/1)));
-}
-
 }  // namespace feed
diff --git a/components/feed/core/feed_scheduler_host.cc b/components/feed/core/feed_scheduler_host.cc
index 607bdce8..17473ab6 100644
--- a/components/feed/core/feed_scheduler_host.cc
+++ b/components/feed/core/feed_scheduler_host.cc
@@ -27,9 +27,6 @@
 
 namespace {
 
-using TriggerType = FeedSchedulerHost::TriggerType;
-using UserClass = UserClassifier::UserClass;
-
 // Enum for the relation between boolean fields the Feed and host both track.
 // Reported through UMA and must match the corresponding definition in
 // enums.xml
@@ -131,15 +128,15 @@
   }
 }
 
-// Converts UserClassifier::UserClass to a string that corresponds to the
+// Converts UserClass to a string that corresponds to the
 // entries in histogram suffix "UserClasses".
-std::string UserClassToHistogramSuffix(UserClassifier::UserClass user_class) {
+std::string UserClassToHistogramSuffix(UserClass user_class) {
   switch (user_class) {
-    case UserClassifier::UserClass::kRareSuggestionsViewer:
+    case UserClass::kRareSuggestionsViewer:
       return "RareNTPUser";
-    case UserClassifier::UserClass::kActiveSuggestionsViewer:
+    case UserClass::kActiveSuggestionsViewer:
       return "ActiveNTPUser";
-    case UserClassifier::UserClass::kActiveSuggestionsConsumer:
+    case UserClass::kActiveSuggestionsConsumer:
       return "ActiveSuggestionsConsumer";
   }
 }
@@ -150,7 +147,7 @@
 // because this method is only called as a result of a direct user interaction,
 // like opening the NTP or foregrounding the browser.
 void ReportAgeWithSuffix(const std::string& qualified_trigger,
-                         UserClassifier::UserClass user_class,
+                         UserClass user_class,
                          base::TimeDelta sample) {
   std::string name = base::StringPrintf(
       "NewTabPage.ContentSuggestions.%s.%s", qualified_trigger.c_str(),
@@ -160,10 +157,9 @@
                                 /*bucket_count=*/50);
 }
 
-void ReportReasonForNotRefreshingByBehavior(
-    NativeRequestBehavior behavior,
-    FeedSchedulerHost::ShouldRefreshResult status) {
-  DCHECK_NE(status, FeedSchedulerHost::kShouldRefresh);
+void ReportReasonForNotRefreshingByBehavior(NativeRequestBehavior behavior,
+                                            ShouldRefreshResult status) {
+  DCHECK_NE(status, ShouldRefreshResult::kShouldRefresh);
   switch (behavior) {
     case kNoRequestWithWait:
       UMA_HISTOGRAM_ENUMERATION(
@@ -192,24 +188,23 @@
   }
 }
 
-void ReportReasonForNotRefreshingByTrigger(
-    FeedSchedulerHost::TriggerType trigger_type,
-    FeedSchedulerHost::ShouldRefreshResult status) {
-  DCHECK_NE(status, FeedSchedulerHost::kShouldRefresh);
+void ReportReasonForNotRefreshingByTrigger(TriggerType trigger_type,
+                                           ShouldRefreshResult status) {
+  DCHECK_NE(status, ShouldRefreshResult::kShouldRefresh);
   switch (trigger_type) {
-    case FeedSchedulerHost::TriggerType::kNtpShown:
+    case TriggerType::kNtpShown:
       UMA_HISTOGRAM_ENUMERATION(
           "ContentSuggestions.Feed.Scheduler.ShouldRefreshResult."
           "RequestByNtpShown",
           status);
       break;
-    case FeedSchedulerHost::TriggerType::kForegrounded:
+    case TriggerType::kForegrounded:
       UMA_HISTOGRAM_ENUMERATION(
           "ContentSuggestions.Feed.Scheduler.ShouldRefreshResult."
           "RequestByForegrounded",
           status);
       break;
-    case FeedSchedulerHost::TriggerType::kFixedTimer:
+    case TriggerType::kFixedTimer:
       UMA_HISTOGRAM_ENUMERATION(
           "ContentSuggestions.Feed.Scheduler.ShouldRefreshResult."
           "RequestByFixedTimer",
@@ -235,18 +230,18 @@
     eula_accepted_notifier_->Init(this);
   }
 
-  throttlers_.emplace(UserClassifier::UserClass::kRareSuggestionsViewer,
-                      std::make_unique<RefreshThrottler>(
-                          UserClassifier::UserClass::kRareSuggestionsViewer,
-                          profile_prefs_, clock_));
-  throttlers_.emplace(UserClassifier::UserClass::kActiveSuggestionsViewer,
-                      std::make_unique<RefreshThrottler>(
-                          UserClassifier::UserClass::kActiveSuggestionsViewer,
-                          profile_prefs_, clock_));
-  throttlers_.emplace(UserClassifier::UserClass::kActiveSuggestionsConsumer,
-                      std::make_unique<RefreshThrottler>(
-                          UserClassifier::UserClass::kActiveSuggestionsConsumer,
-                          profile_prefs_, clock_));
+  throttlers_.emplace(
+      UserClass::kRareSuggestionsViewer,
+      std::make_unique<RefreshThrottler>(UserClass::kRareSuggestionsViewer,
+                                         profile_prefs_, clock_));
+  throttlers_.emplace(
+      UserClass::kActiveSuggestionsViewer,
+      std::make_unique<RefreshThrottler>(UserClass::kActiveSuggestionsViewer,
+                                         profile_prefs_, clock_));
+  throttlers_.emplace(
+      UserClass::kActiveSuggestionsConsumer,
+      std::make_unique<RefreshThrottler>(UserClass::kActiveSuggestionsConsumer,
+                                         profile_prefs_, clock_));
 }
 
 FeedSchedulerHost::~FeedSchedulerHost() = default;
@@ -339,7 +334,7 @@
 
   NativeRequestBehavior behavior;
   ShouldRefreshResult refresh_status = ShouldRefresh(TriggerType::kNtpShown);
-  if (kShouldRefresh == refresh_status) {
+  if (ShouldRefreshResult::kShouldRefresh == refresh_status) {
     if (!has_content) {
       behavior = kRequestWithWait;
     } else if (IsContentStale(content_creation_date_time)) {
@@ -403,7 +398,7 @@
   DCHECK(refresh_callback_);
   ShouldRefreshResult refresh_status =
       ShouldRefresh(TriggerType::kForegrounded);
-  if (kShouldRefresh == refresh_status) {
+  if (ShouldRefreshResult::kShouldRefresh == refresh_status) {
     refresh_callback_.Run();
   } else {
     ReportReasonForNotRefreshingByTrigger(TriggerType::kForegrounded,
@@ -423,7 +418,7 @@
   }
 
   ShouldRefreshResult refresh_status = ShouldRefresh(TriggerType::kFixedTimer);
-  if (kShouldRefresh == refresh_status) {
+  if (ShouldRefreshResult::kShouldRefresh == refresh_status) {
     // There shouldn't typically be anything in |fixed_timer_completion_| right
     // now, but if there was, run it before we replace it.
     TryRun(std::move(fixed_timer_completion_));
@@ -473,7 +468,7 @@
   }
 
   ShouldRefreshResult refresh_status = ShouldRefresh(TriggerType::kNtpShown);
-  if (kShouldRefresh == refresh_status) {
+  if (ShouldRefreshResult::kShouldRefresh == refresh_status) {
     // Instead of using |refresh_callback_|, instead return our desire to
     // refresh back up to our caller. This allows more information to be given
     // all at once to the Feed which allows it to act more intelligently.
@@ -506,41 +501,40 @@
   OnForegrounded();
 }
 
-FeedSchedulerHost::ShouldRefreshResult FeedSchedulerHost::ShouldRefresh(
-    TriggerType trigger) {
+ShouldRefreshResult FeedSchedulerHost::ShouldRefresh(TriggerType trigger) {
   if (clock_->Now() < outstanding_request_until_) {
     DVLOG(2) << "Outstanding request stopped refresh from trigger "
              << static_cast<int>(trigger);
-    return kDontRefreshOutstandingRequest;
+    return ShouldRefreshResult::kDontRefreshOutstandingRequest;
   }
 
   if (base::Contains(disabled_triggers_, trigger)) {
     DVLOG(2) << "Disabled trigger stopped refresh from trigger "
              << static_cast<int>(trigger);
-    return kDontRefreshTriggerDisabled;
+    return ShouldRefreshResult::kDontRefreshTriggerDisabled;
   }
 
   if (net::NetworkChangeNotifier::IsOffline()) {
     DVLOG(2) << "Network is offline stopped refresh from trigger "
              << static_cast<int>(trigger);
-    return kDontRefreshNetworkOffline;
+    return ShouldRefreshResult::kDontRefreshNetworkOffline;
   }
 
   if (eula_accepted_notifier_ && !eula_accepted_notifier_->IsEulaAccepted()) {
     DVLOG(2) << "EULA not being accepted stopped refresh from trigger "
              << static_cast<int>(trigger);
-    return kDontRefreshEulaNotAccepted;
+    return ShouldRefreshResult::kDontRefreshEulaNotAccepted;
   }
 
   if (!profile_prefs_->GetBoolean(prefs::kArticlesListVisible)) {
     DVLOG(2) << "Articles being hidden stopped refresh from trigger "
              << static_cast<int>(trigger);
-    return kDontRefreshArticlesHidden;
+    return ShouldRefreshResult::kDontRefreshArticlesHidden;
   }
 
   base::TimeDelta attempt_age =
       clock_->Now() - profile_prefs_->GetTime(prefs::kLastFetchAttemptTime);
-  UserClassifier::UserClass user_class = user_classifier_.GetUserClass();
+  UserClass user_class = user_classifier_.GetUserClass();
   if (trigger == TriggerType::kNtpShown &&
       !time_until_first_shown_trigger_reported_) {
     time_until_first_shown_trigger_reported_ = true;
@@ -557,7 +551,7 @@
   if (clock_->Now() < suppress_refreshes_until_) {
     DVLOG(2) << "Refresh suppression until " << suppress_refreshes_until_
              << " stopped refresh from trigger " << static_cast<int>(trigger);
-    return kDontRefreshRefreshSuppressed;
+    return ShouldRefreshResult::kDontRefreshRefreshSuppressed;
   }
 
   // https://crbug.com/988165: When kThrottleBackgroundFetches == false, skip
@@ -566,7 +560,7 @@
     if (attempt_age < GetTriggerThreshold(trigger)) {
       DVLOG(2) << "Last attempt age of " << attempt_age
                << " stopped refresh from trigger " << static_cast<int>(trigger);
-      return kDontRefreshNotStale;
+      return ShouldRefreshResult::kDontRefreshNotStale;
     }
 
     auto throttlerIter = throttlers_.find(user_class);
@@ -574,7 +568,7 @@
         !throttlerIter->second->RequestQuota()) {
       DVLOG(2) << "Throttler stopped refresh from trigger "
                << static_cast<int>(trigger);
-      return kDontRefreshRefreshThrottled;
+      return ShouldRefreshResult::kDontRefreshRefreshThrottled;
     }
   }
 
@@ -599,7 +593,7 @@
 
   last_fetch_trigger_type_ = std::make_unique<TriggerType>(trigger);
 
-  return kShouldRefresh;
+  return ShouldRefreshResult::kShouldRefresh;
 }
 
 bool FeedSchedulerHost::IsContentStale(base::Time content_creation_date_time) {
diff --git a/components/feed/core/feed_scheduler_host.h b/components/feed/core/feed_scheduler_host.h
index 9df2d20..93c88a7 100644
--- a/components/feed/core/feed_scheduler_host.h
+++ b/components/feed/core/feed_scheduler_host.h
@@ -13,6 +13,7 @@
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
+#include "components/feed/core/common/enums.h"
 #include "components/feed/core/refresh_throttler.h"
 #include "components/feed/core/user_classifier.h"
 #include "components/web_resource/eula_accepted_notifier.h"
@@ -49,33 +50,6 @@
 // content.
 class FeedSchedulerHost : web_resource::EulaAcceptedNotifier::Observer {
  public:
-  // The TriggerType enum specifies values for the events that can trigger
-  // refreshing articles. When adding values, be certain to also update the
-  // corresponding definition in enums.xml.
-  enum class TriggerType {
-    kNtpShown = 0,
-    kForegrounded = 1,
-    kFixedTimer = 2,
-    kMaxValue = kFixedTimer
-  };
-
-  // Enum for the status of the refresh, reported through UMA.
-  // If any new values are added, update the corresponding definition in
-  // enums.xml.
-  // These values are persisted to logs. Entries should not be renumbered and
-  // numeric values should never be reused.
-  enum ShouldRefreshResult {
-    kShouldRefresh = 0,
-    kDontRefreshOutstandingRequest = 1,
-    kDontRefreshTriggerDisabled = 2,
-    kDontRefreshNetworkOffline = 3,
-    kDontRefreshEulaNotAccepted = 4,
-    kDontRefreshArticlesHidden = 5,
-    kDontRefreshRefreshSuppressed = 6,
-    kDontRefreshNotStale = 7,
-    kDontRefreshRefreshThrottled = 8,
-    kMaxValue = kDontRefreshRefreshThrottled,
-  };
 
   FeedSchedulerHost(PrefService* profile_prefs,
                     PrefService* local_state,
@@ -224,8 +198,7 @@
 
   // In the case the user transitions between user classes, hold onto a
   // throttler for any situation.
-  base::flat_map<UserClassifier::UserClass, std::unique_ptr<RefreshThrottler>>
-      throttlers_;
+  base::flat_map<UserClass, std::unique_ptr<RefreshThrottler>> throttlers_;
 
   // Status of the last fetch for debugging.
   int last_fetch_status_ = 0;
diff --git a/components/feed/core/feed_scheduler_host_unittest.cc b/components/feed/core/feed_scheduler_host_unittest.cc
index e0f1e40d..e3be160 100644
--- a/components/feed/core/feed_scheduler_host_unittest.cc
+++ b/components/feed/core/feed_scheduler_host_unittest.cc
@@ -92,7 +92,7 @@
     // into kRareNtpUser classification.
     test_clock()->Advance(TimeDelta::FromDays(7));
 
-    ASSERT_EQ(UserClassifier::UserClass::kRareSuggestionsViewer,
+    ASSERT_EQ(UserClass::kRareSuggestionsViewer,
               scheduler()->GetUserClassifierForDebugging()->GetUserClass());
   }
 
@@ -107,7 +107,7 @@
     // Depending on which events occurred over which period of time in the test
     // before this function was called, it may not necessarily be sufficient to
     // push the user into the active consumer class.
-    ASSERT_EQ(UserClassifier::UserClass::kActiveSuggestionsConsumer,
+    ASSERT_EQ(UserClass::kActiveSuggestionsConsumer,
               scheduler()->GetUserClassifierForDebugging()->GetUserClass());
   }
 
@@ -177,23 +177,22 @@
 TEST_F(FeedSchedulerHostTest, GetTriggerThreshold) {
   // Make sure that there is no missing configuration in the Cartesian product
   // of states between TriggerType and UserClass.
-  std::vector<FeedSchedulerHost::TriggerType> triggers = {
-      FeedSchedulerHost::TriggerType::kNtpShown,
-      FeedSchedulerHost::TriggerType::kForegrounded,
-      FeedSchedulerHost::TriggerType::kFixedTimer};
+  std::vector<TriggerType> triggers = {TriggerType::kNtpShown,
+                                       TriggerType::kForegrounded,
+                                       TriggerType::kFixedTimer};
 
   // Classification starts out as an active NTP user.
-  for (FeedSchedulerHost::TriggerType trigger : triggers) {
+  for (TriggerType trigger : triggers) {
     EXPECT_FALSE(scheduler()->GetTriggerThreshold(trigger).is_zero());
   }
 
   ClassifyAsActiveSuggestionsConsumer();
-  for (FeedSchedulerHost::TriggerType trigger : triggers) {
+  for (TriggerType trigger : triggers) {
     EXPECT_FALSE(scheduler()->GetTriggerThreshold(trigger).is_zero());
   }
 
   ClassifyAsRareNtpUser();
-  for (FeedSchedulerHost::TriggerType trigger : triggers) {
+  for (TriggerType trigger : triggers) {
     EXPECT_FALSE(scheduler()->GetTriggerThreshold(trigger).is_zero());
   }
 }
@@ -1034,14 +1033,14 @@
 TEST_F(FeedSchedulerHostTest, GetUserClassifierForDebuggingRareUser) {
   ClassifyAsRareNtpUser();
 
-  EXPECT_EQ(UserClassifier::UserClass::kRareSuggestionsViewer,
+  EXPECT_EQ(UserClass::kRareSuggestionsViewer,
             scheduler()->GetUserClassifierForDebugging()->GetUserClass());
 }
 
 TEST_F(FeedSchedulerHostTest, GetUserClassifierForDebuggingActiveConsumer) {
   ClassifyAsActiveSuggestionsConsumer();
 
-  EXPECT_EQ(UserClassifier::UserClass::kActiveSuggestionsConsumer,
+  EXPECT_EQ(UserClass::kActiveSuggestionsConsumer,
             scheduler()->GetUserClassifierForDebugging()->GetUserClass());
 }
 
@@ -1069,19 +1068,19 @@
 TEST_F(FeedSchedulerHostTest, GetLastFetchTriggerTypeForDebugging) {
   scheduler()->OnForegrounded();
 
-  EXPECT_EQ(FeedSchedulerHost::TriggerType::kForegrounded,
+  EXPECT_EQ(TriggerType::kForegrounded,
             *scheduler()->GetLastFetchTriggerTypeForDebugging());
 
   scheduler()->OnArticlesCleared(/*suppress_refreshes*/ false);
 
-  EXPECT_EQ(FeedSchedulerHost::TriggerType::kNtpShown,
+  EXPECT_EQ(TriggerType::kNtpShown,
             *scheduler()->GetLastFetchTriggerTypeForDebugging());
 
   ClassifyAsActiveSuggestionsConsumer();  // Fixed timer at 48 hours.
   test_clock()->Advance(TimeDelta::FromHours(49));
   scheduler()->OnFixedTimer(base::OnceClosure());
 
-  EXPECT_EQ(FeedSchedulerHost::TriggerType::kFixedTimer,
+  EXPECT_EQ(TriggerType::kFixedTimer,
             *scheduler()->GetLastFetchTriggerTypeForDebugging());
 }
 
diff --git a/components/feed/core/refresh_throttler.cc b/components/feed/core/refresh_throttler.cc
index 223ffd3..5f8f1de 100644
--- a/components/feed/core/refresh_throttler.cc
+++ b/components/feed/core/refresh_throttler.cc
@@ -34,21 +34,20 @@
 // When adding a new type here, extend also the "RequestThrottlerTypes"
 // <histogram_suffixes> in histograms.xml with the |name| string. First value in
 // the pair is the name, second is the default requests per day.
-std::pair<std::string, int> GetThrottlerParams(
-    UserClassifier::UserClass user_class) {
+std::pair<std::string, int> GetThrottlerParams(UserClass user_class) {
   switch (user_class) {
-    case UserClassifier::UserClass::kRareSuggestionsViewer:
+    case UserClass::kRareSuggestionsViewer:
       return {"SuggestionFetcherRareNTPUser", 5};
-    case UserClassifier::UserClass::kActiveSuggestionsViewer:
+    case UserClass::kActiveSuggestionsViewer:
       return {"SuggestionFetcherActiveNTPUser", 20};
-    case UserClassifier::UserClass::kActiveSuggestionsConsumer:
+    case UserClass::kActiveSuggestionsConsumer:
       return {"SuggestionFetcherActiveSuggestionsConsumer", 20};
   }
 }
 
 }  // namespace
 
-RefreshThrottler::RefreshThrottler(UserClassifier::UserClass user_class,
+RefreshThrottler::RefreshThrottler(UserClass user_class,
                                    PrefService* pref_service,
                                    base::Clock* clock)
     : pref_service_(pref_service), clock_(clock) {
diff --git a/components/feed/core/refresh_throttler.h b/components/feed/core/refresh_throttler.h
index 69c37ee..da0fdb8 100644
--- a/components/feed/core/refresh_throttler.h
+++ b/components/feed/core/refresh_throttler.h
@@ -28,7 +28,7 @@
 //  - "NewTabPage.RequestThrottler.PerDay_|name|" - the daily count of requests.
 class RefreshThrottler {
  public:
-  RefreshThrottler(UserClassifier::UserClass user_class,
+  RefreshThrottler(UserClass user_class,
                    PrefService* pref_service,
                    base::Clock* clock);
 
diff --git a/components/feed/core/refresh_throttler_unittest.cc b/components/feed/core/refresh_throttler_unittest.cc
index 7b26fb6..410159d 100644
--- a/components/feed/core/refresh_throttler_unittest.cc
+++ b/components/feed/core/refresh_throttler_unittest.cc
@@ -38,8 +38,7 @@
         {{"quota_SuggestionFetcherActiveNTPUser", "2"}});
 
     throttler_ = std::make_unique<RefreshThrottler>(
-        UserClassifier::UserClass::kActiveSuggestionsViewer, &test_prefs_,
-        &test_clock_);
+        UserClass::kActiveSuggestionsViewer, &test_prefs_, &test_clock_);
   }
 
  protected:
diff --git a/components/feed/core/user_classifier.cc b/components/feed/core/user_classifier.cc
index c306132..4cfbbe5 100644
--- a/components/feed/core/user_classifier.cc
+++ b/components/feed/core/user_classifier.cc
@@ -253,7 +253,7 @@
                                        min_hours_, max_hours_);
 }
 
-UserClassifier::UserClass UserClassifier::GetUserClass() const {
+UserClass UserClassifier::GetUserClass() const {
   // The pref_service_ can be null in tests.
   if (!pref_service_) {
     return UserClass::kActiveSuggestionsViewer;
diff --git a/components/feed/core/user_classifier.h b/components/feed/core/user_classifier.h
index e1c1ed3e..730ed15 100644
--- a/components/feed/core/user_classifier.h
+++ b/components/feed/core/user_classifier.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/macros.h"
+#include "components/feed/core/common/enums.h"
 
 class PrefRegistrySimple;
 class PrefService;
@@ -24,16 +25,6 @@
 // Based on these long-term user rates, it classifies the user in a UserClass.
 class UserClassifier {
  public:
-  // Different groupings of usage. A user will belong to exactly one of these at
-  // any given point in time. Can change at runtime.
-  enum class UserClass {
-    kRareSuggestionsViewer,      // Almost never opens surfaces that show
-                                 // suggestions, like the NTP.
-    kActiveSuggestionsViewer,    // Frequently shown suggestions, but does not
-                                 // usually open them.
-    kActiveSuggestionsConsumer,  // Frequently opens news articles.
-  };
-
   // For estimating the average length of the intervals between two successive
   // events, we keep a simple frequency model, a single value that we call
   // "rate" below.
diff --git a/components/feed/core/user_classifier_unittest.cc b/components/feed/core/user_classifier_unittest.cc
index 84aa9a6..a23a9e6 100644
--- a/components/feed/core/user_classifier_unittest.cc
+++ b/components/feed/core/user_classifier_unittest.cc
@@ -59,7 +59,7 @@
 TEST_F(FeedUserClassifierTest, ShouldBeActiveSuggestionsViewerInitially) {
   UserClassifier* user_classifier = CreateUserClassifier();
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsViewer));
+              Eq(UserClass::kActiveSuggestionsViewer));
 }
 
 TEST_F(FeedUserClassifierTest,
@@ -69,7 +69,7 @@
   // After one click still only an active user.
   user_classifier->OnEvent(UserClassifier::Event::kSuggestionsUsed);
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsViewer));
+              Eq(UserClass::kActiveSuggestionsViewer));
 
   // After a few more clicks, become an active consumer.
   for (int i = 0; i < 5; i++) {
@@ -77,7 +77,7 @@
     user_classifier->OnEvent(UserClassifier::Event::kSuggestionsUsed);
   }
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsConsumer));
+              Eq(UserClass::kActiveSuggestionsConsumer));
 }
 
 TEST_F(FeedUserClassifierTest,
@@ -95,13 +95,13 @@
   test_clock()->Advance(base::TimeDelta::FromHours(1));
   user_classifier->OnEvent(UserClassifier::Event::kSuggestionsUsed);
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsViewer));
+              Eq(UserClass::kActiveSuggestionsViewer));
 
   // One more click to become an active consumer.
   test_clock()->Advance(base::TimeDelta::FromHours(1));
   user_classifier->OnEvent(UserClassifier::Event::kSuggestionsUsed);
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsConsumer));
+              Eq(UserClass::kActiveSuggestionsConsumer));
 }
 
 TEST_F(FeedUserClassifierTest,
@@ -111,12 +111,12 @@
   // After two days of waiting still an active user.
   test_clock()->Advance(base::TimeDelta::FromDays(2));
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsViewer));
+              Eq(UserClass::kActiveSuggestionsViewer));
 
   // Two more days to become a rare user.
   test_clock()->Advance(base::TimeDelta::FromDays(2));
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kRareSuggestionsViewer));
+              Eq(UserClass::kRareSuggestionsViewer));
 }
 
 TEST_F(FeedUserClassifierTest,
@@ -131,12 +131,12 @@
   // After one days of waiting still an active user.
   test_clock()->Advance(base::TimeDelta::FromDays(1));
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kActiveSuggestionsViewer));
+              Eq(UserClass::kActiveSuggestionsViewer));
 
   // One more day to become a rare user.
   test_clock()->Advance(base::TimeDelta::FromDays(1));
   EXPECT_THAT(user_classifier->GetUserClass(),
-              Eq(UserClassifier::UserClass::kRareSuggestionsViewer));
+              Eq(UserClass::kRareSuggestionsViewer));
 }
 
 class FeedUserClassifierEventTest
diff --git a/components/feed/core/v2/README.md b/components/feed/core/v2/README.md
new file mode 100644
index 0000000..267bc513
--- /dev/null
+++ b/components/feed/core/v2/README.md
@@ -0,0 +1 @@
+The next iteration of the feed component, in development.
diff --git a/components/history/core/browser/thumbnail_database_unittest.cc b/components/history/core/browser/thumbnail_database_unittest.cc
index 8c0826f3..933cd87 100644
--- a/components/history/core/browser/thumbnail_database_unittest.cc
+++ b/components/history/core/browser/thumbnail_database_unittest.cc
@@ -42,22 +42,42 @@
 const unsigned char kBlob2[] =
     "goiwuegrqrcomizqyzkjalitbahxfjytrqvpqeroicxmnlkhlzunacxaneviawrtxcywhgef";
 
-// Page and icon urls shared by tests.  Present in golden database
-// files (see VersionN tests).
-const GURL kPageUrl1 = GURL("http://google.com/");
-const GURL kPageUrl2 = GURL("http://yahoo.com/");
-const GURL kPageUrl3 = GURL("http://www.google.com/");
-const GURL kPageUrl4 = GURL("http://www.google.com/blank.html");
-const GURL kPageUrl5 = GURL("http://www.bing.com/");
-
-const GURL kIconUrl1 = GURL("http://www.google.com/favicon.ico");
-const GURL kIconUrl2 = GURL("http://www.yahoo.com/favicon.ico");
-const GURL kIconUrl3 = GURL("http://www.google.com/touch.ico");
-const GURL kIconUrl5 = GURL("http://www.bing.com/favicon.ico");
-
 const gfx::Size kSmallSize = gfx::Size(16, 16);
 const gfx::Size kLargeSize = gfx::Size(32, 32);
 
+// Page and icon urls shared by tests.  Present in golden database
+// files (see VersionN tests).
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL PageUrl1() {
+  return GURL("http://google.com/");
+}
+GURL PageUrl2() {
+  return GURL("http://yahoo.com/");
+}
+GURL PageUrl3() {
+  return GURL("http://www.google.com/");
+}
+GURL PageUrl4() {
+  return GURL("http://www.google.com/blank.html");
+}
+GURL PageUrl5() {
+  return GURL("http://www.bing.com/");
+}
+
+GURL IconUrl1() {
+  return GURL("http://www.google.com/favicon.ico");
+}
+GURL IconUrl2() {
+  return GURL("http://www.yahoo.com/favicon.ico");
+}
+GURL IconUrl3() {
+  return GURL("http://www.google.com/touch.ico");
+}
+GURL IconUrl5() {
+  return GURL("http://www.bing.com/favicon.ico");
+}
+
 // Verify that the up-to-date database has the expected tables and
 // columns.  Functional tests only check whether the things which
 // should be there are, but do not check if extraneous items are
@@ -618,13 +638,13 @@
   db.BeginTransaction();
 
   // Build a database mapping
-  // kPageUrl1 -> kIconUrl1
-  // kPageUrl2 -> kIconUrl2
-  // kPageUrl3 -> kIconUrl1
-  // kPageUrl4 -> kIconUrl1
-  // kPageUrl5 -> kIconUrl5
-  // Then retain kPageUrl1, kPageUrl3, and kPageUrl5. kPageUrl2
-  // and kPageUrl4 should go away, but the others should be retained
+  // PageUrl1() -> IconUrl1()
+  // PageUrl2() -> IconUrl2()
+  // PageUrl3() -> IconUrl1()
+  // PageUrl4() -> IconUrl1()
+  // PageUrl5() -> IconUrl5()
+  // Then retain PageUrl1(), PageUrl3(), and PageUrl5(). PageUrl2()
+  // and PageUrl4() should go away, but the others should be retained
   // correctly.
 
   // TODO(shess): This would probably make sense as a golden file.
@@ -635,46 +655,49 @@
       new base::RefCountedStaticMemory(kBlob2, sizeof(kBlob2)));
 
   favicon_base::FaviconID kept_id1 =
-      db.AddFavicon(kIconUrl1, favicon_base::IconType::kFavicon);
+      db.AddFavicon(IconUrl1(), favicon_base::IconType::kFavicon);
   db.AddFaviconBitmap(kept_id1, favicon1, FaviconBitmapType::ON_VISIT,
                       base::Time::Now(), kLargeSize);
-  db.AddIconMapping(kPageUrl1, kept_id1);
-  db.AddIconMapping(kPageUrl3, kept_id1);
-  db.AddIconMapping(kPageUrl4, kept_id1);
+  db.AddIconMapping(PageUrl1(), kept_id1);
+  db.AddIconMapping(PageUrl3(), kept_id1);
+  db.AddIconMapping(PageUrl4(), kept_id1);
 
   favicon_base::FaviconID unkept_id =
-      db.AddFavicon(kIconUrl2, favicon_base::IconType::kFavicon);
+      db.AddFavicon(IconUrl2(), favicon_base::IconType::kFavicon);
   db.AddFaviconBitmap(unkept_id, favicon1, FaviconBitmapType::ON_VISIT,
                       base::Time::Now(), kLargeSize);
-  db.AddIconMapping(kPageUrl2, unkept_id);
+  db.AddIconMapping(PageUrl2(), unkept_id);
 
   favicon_base::FaviconID kept_id2 =
-      db.AddFavicon(kIconUrl5, favicon_base::IconType::kFavicon);
+      db.AddFavicon(IconUrl5(), favicon_base::IconType::kFavicon);
   db.AddFaviconBitmap(kept_id2, favicon2, FaviconBitmapType::ON_VISIT,
                       base::Time::Now(), kLargeSize);
-  db.AddIconMapping(kPageUrl5, kept_id2);
+  db.AddIconMapping(PageUrl5(), kept_id2);
 
   // RetainDataForPageUrls() uses schema manipulations for efficiency.
   // Grab a copy of the schema to make sure the final schema matches.
   const std::string original_schema = db.db_.GetSchema();
 
   std::vector<GURL> pages_to_keep;
-  pages_to_keep.push_back(kPageUrl1);
-  pages_to_keep.push_back(kPageUrl3);
-  pages_to_keep.push_back(kPageUrl5);
+  pages_to_keep.push_back(PageUrl1());
+  pages_to_keep.push_back(PageUrl3());
+  pages_to_keep.push_back(PageUrl5());
   EXPECT_TRUE(db.RetainDataForPageUrls(pages_to_keep));
 
   // Mappings from the retained urls should be left.
-  EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::IconType::kFavicon,
-                               kIconUrl1, kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl3, favicon_base::IconType::kFavicon,
-                               kIconUrl1, kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl5, favicon_base::IconType::kFavicon,
-                               kIconUrl5, kLargeSize, sizeof(kBlob2), kBlob2));
+  EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
+                               favicon_base::IconType::kFavicon, IconUrl1(),
+                               kLargeSize, sizeof(kBlob1), kBlob1));
+  EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl3(),
+                               favicon_base::IconType::kFavicon, IconUrl1(),
+                               kLargeSize, sizeof(kBlob1), kBlob1));
+  EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl5(),
+                               favicon_base::IconType::kFavicon, IconUrl5(),
+                               kLargeSize, sizeof(kBlob2), kBlob2));
 
   // The ones not retained should be missing.
-  EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
-  EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl4, nullptr));
+  EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+  EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl4(), nullptr));
 
   // Schema should be the same.
   EXPECT_EQ(original_schema, db.db_.GetSchema());
@@ -689,14 +712,14 @@
   scoped_refptr<base::RefCountedStaticMemory> favicon1(
       new base::RefCountedStaticMemory(kBlob1, sizeof(kBlob1)));
   favicon_base::FaviconID kept_id = db.AddFavicon(
-      kIconUrl1, favicon_base::IconType::kFavicon, favicon1,
+      IconUrl1(), favicon_base::IconType::kFavicon, favicon1,
       FaviconBitmapType::ON_VISIT, base::Time::Now(), gfx::Size());
-  db.AddIconMapping(kPageUrl1, kept_id);
+  db.AddIconMapping(PageUrl1(), kept_id);
 
-  EXPECT_TRUE(db.RetainDataForPageUrls(std::vector<GURL>(1u, kPageUrl1)));
+  EXPECT_TRUE(db.RetainDataForPageUrls(std::vector<GURL>(1u, PageUrl1())));
 
-  favicon_base::FaviconID new_favicon_id =
-      db.GetFaviconIDForFaviconURL(kIconUrl1, favicon_base::IconType::kFavicon);
+  favicon_base::FaviconID new_favicon_id = db.GetFaviconIDForFaviconURL(
+      IconUrl1(), favicon_base::IconType::kFavicon);
   ASSERT_NE(0, new_favicon_id);
   std::vector<FaviconBitmap> new_favicon_bitmaps;
   db.GetFaviconBitmaps(new_favicon_id, &new_favicon_bitmaps);
@@ -805,13 +828,13 @@
   db.BeginTransaction();
 
   const GURL kPageUrl("http://www.google.com");
-  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl1,
+  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl1(),
                          favicon_base::IconType::kFavicon);
-  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl2,
+  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl2(),
                          favicon_base::IconType::kTouchIcon);
-  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl3,
+  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl3(),
                          favicon_base::IconType::kTouchIcon);
-  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl5,
+  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl5(),
                          favicon_base::IconType::kTouchPrecomposedIcon);
 
   // Only the mappings for kFavicon and kTouchIcon should be returned.
@@ -823,9 +846,9 @@
   SortMappingsByIconUrl(&icon_mappings);
 
   ASSERT_EQ(3u, icon_mappings.size());
-  EXPECT_EQ(kIconUrl1, icon_mappings[0].icon_url);
-  EXPECT_EQ(kIconUrl3, icon_mappings[1].icon_url);
-  EXPECT_EQ(kIconUrl2, icon_mappings[2].icon_url);
+  EXPECT_EQ(IconUrl1(), icon_mappings[0].icon_url);
+  EXPECT_EQ(IconUrl3(), icon_mappings[1].icon_url);
+  EXPECT_EQ(IconUrl2(), icon_mappings[2].icon_url);
 }
 
 TEST_F(ThumbnailDatabaseTest, FindFirstPageURLForHost) {
@@ -843,11 +866,11 @@
       kPageUrlHttps,
       {favicon_base::IconType::kFavicon, favicon_base::IconType::kTouchIcon}));
 
-  AddAndMapFaviconSimple(&db, kPageUrlHttpsSamePrefix, kIconUrl1,
+  AddAndMapFaviconSimple(&db, kPageUrlHttpsSamePrefix, IconUrl1(),
                          favicon_base::IconType::kFavicon);
-  AddAndMapFaviconSimple(&db, kPageUrlHttpsSameSuffix, kIconUrl2,
+  AddAndMapFaviconSimple(&db, kPageUrlHttpsSameSuffix, IconUrl2(),
                          favicon_base::IconType::kFavicon);
-  AddAndMapFaviconSimple(&db, kPageUrlInPath, kIconUrl3,
+  AddAndMapFaviconSimple(&db, kPageUrlInPath, IconUrl3(),
                          favicon_base::IconType::kTouchIcon);
 
   // There should be no matching host for www.google.com when no matching host
@@ -856,7 +879,7 @@
                                           {favicon_base::IconType::kFavicon}));
 
   // Register the HTTP url in the database as a touch icon.
-  AddAndMapFaviconSimple(&db, kPageUrlHttp, kIconUrl5,
+  AddAndMapFaviconSimple(&db, kPageUrlHttp, IconUrl5(),
                          favicon_base::IconType::kTouchIcon);
 
   EXPECT_FALSE(db.FindFirstPageURLForHost(kPageUrlHttps,
@@ -877,7 +900,7 @@
       {favicon_base::IconType::kFavicon, favicon_base::IconType::kTouchIcon},
       &icon_mappings));
   ASSERT_EQ(1u, icon_mappings.size());
-  EXPECT_EQ(kIconUrl5, icon_mappings[0].icon_url);
+  EXPECT_EQ(IconUrl5(), icon_mappings[0].icon_url);
 }
 
 TEST_F(ThumbnailDatabaseTest, HasMappingFor) {
@@ -971,17 +994,17 @@
   ASSERT_TRUE(db);
   VerifyTablesAndColumns(&db->db_);
 
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl1,
-                               favicon_base::IconType::kFavicon, kIconUrl1,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl1(),
+                               favicon_base::IconType::kFavicon, IconUrl1(),
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl2,
-                               favicon_base::IconType::kFavicon, kIconUrl2,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl2(),
+                               favicon_base::IconType::kFavicon, IconUrl2(),
                                kLargeSize, sizeof(kBlob2), kBlob2));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
-                               favicon_base::IconType::kFavicon, kIconUrl1,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
+                               favicon_base::IconType::kFavicon, IconUrl1(),
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
-                               favicon_base::IconType::kTouchIcon, kIconUrl3,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
+                               favicon_base::IconType::kTouchIcon, IconUrl3(),
                                kLargeSize, sizeof(kBlob2), kBlob2));
 }
 
@@ -991,17 +1014,17 @@
   ASSERT_TRUE(db);
   VerifyTablesAndColumns(&db->db_);
 
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl1,
-                               favicon_base::IconType::kFavicon, kIconUrl1,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl1(),
+                               favicon_base::IconType::kFavicon, IconUrl1(),
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl2,
-                               favicon_base::IconType::kFavicon, kIconUrl2,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl2(),
+                               favicon_base::IconType::kFavicon, IconUrl2(),
                                kLargeSize, sizeof(kBlob2), kBlob2));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
-                               favicon_base::IconType::kFavicon, kIconUrl1,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
+                               favicon_base::IconType::kFavicon, IconUrl1(),
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
-                               favicon_base::IconType::kTouchIcon, kIconUrl3,
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
+                               favicon_base::IconType::kTouchIcon, IconUrl3(),
                                kLargeSize, sizeof(kBlob2), kBlob2));
 }
 
@@ -1020,11 +1043,11 @@
     ThumbnailDatabase db(nullptr);
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
-                                 favicon_base::IconType::kFavicon, kIconUrl1,
+    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
+                                 favicon_base::IconType::kFavicon, IconUrl1(),
                                  kLargeSize, sizeof(kBlob1), kBlob1));
-    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl2,
-                                 favicon_base::IconType::kFavicon, kIconUrl2,
+    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl2(),
+                                 favicon_base::IconType::kFavicon, IconUrl2(),
                                  kLargeSize, sizeof(kBlob2), kBlob2));
   }
 
@@ -1055,11 +1078,11 @@
     ThumbnailDatabase db(nullptr);
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    // Data for kPageUrl2 was deleted, but the index entry remains,
+    // Data for PageUrl2() was deleted, but the index entry remains,
     // this will throw SQLITE_CORRUPT.  The corruption handler will
     // recover the database and poison the handle, so the outer call
     // fails.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -1080,11 +1103,11 @@
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
     // Now this fails because there is no mapping.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
 
     // Other data was retained by recovery.
-    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
-                                 favicon_base::IconType::kFavicon, kIconUrl1,
+    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
+                                 favicon_base::IconType::kFavicon, IconUrl1(),
                                  kLargeSize, sizeof(kBlob1), kBlob1));
   }
 
@@ -1108,9 +1131,9 @@
     ThumbnailDatabase db(nullptr);
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
-    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
-                                 favicon_base::IconType::kFavicon, kIconUrl1,
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
+                                 favicon_base::IconType::kFavicon, IconUrl1(),
                                  kLargeSize, sizeof(kBlob1), kBlob1));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
@@ -1150,11 +1173,11 @@
     ThumbnailDatabase db(nullptr);
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    // Data for kPageUrl2 was deleted, but the index entry remains,
+    // Data for PageUrl2() was deleted, but the index entry remains,
     // this will throw SQLITE_CORRUPT.  The corruption handler will
     // recover the database and poison the handle, so the outer call
     // fails.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -1175,11 +1198,11 @@
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
     // Now this fails because there is no mapping.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
 
     // Other data was retained by recovery.
-    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
-                                 favicon_base::IconType::kFavicon, kIconUrl1,
+    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
+                                 favicon_base::IconType::kFavicon, IconUrl1(),
                                  kLargeSize, sizeof(kBlob1), kBlob1));
   }
 
@@ -1203,9 +1226,9 @@
     ThumbnailDatabase db(nullptr);
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
-    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
-                                 favicon_base::IconType::kFavicon, kIconUrl1,
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
+                                 favicon_base::IconType::kFavicon, IconUrl1(),
                                  kLargeSize, sizeof(kBlob1), kBlob1));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
diff --git a/components/history/core/browser/top_sites_database_unittest.cc b/components/history/core/browser/top_sites_database_unittest.cc
index f68c64c..494b9be 100644
--- a/components/history/core/browser/top_sites_database_unittest.cc
+++ b/components/history/core/browser/top_sites_database_unittest.cc
@@ -24,13 +24,21 @@
 namespace {
 
 // URL with url_rank 0 in golden files.
-const GURL kUrl0 = GURL("http://www.google.com/");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url0() {
+  return GURL("http://www.google.com/");
+}
 
 // URL with url_rank 1 in golden files.
-const GURL kUrl1 = GURL("http://www.google.com/chrome/intl/en/welcome.html");
+GURL Url1() {
+  return GURL("http://www.google.com/chrome/intl/en/welcome.html");
+}
 
 // URL with url_rank 2 in golden files.
-const GURL kUrl2 = GURL("https://chrome.google.com/webstore?hl=en");
+GURL Url2() {
+  return GURL("https://chrome.google.com/webstore?hl=en");
+}
 
 // Verify that the up-to-date database has the expected tables and
 // columns.  Functional tests only check whether the things which
@@ -114,7 +122,7 @@
   MostVisitedURLList urls;
   db.GetSites(&urls);
   ASSERT_EQ(3u, urls.size());
-  EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+  EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
 
   sql::Transaction transaction(db.db_.get());
   transaction.Begin();
@@ -137,7 +145,7 @@
   MostVisitedURLList urls;
   db.GetSites(&urls);
   ASSERT_EQ(3u, urls.size());
-  EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+  EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
 
   sql::Transaction transaction(db.db_.get());
   transaction.Begin();
@@ -242,7 +250,7 @@
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(3u, urls.size());
-    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -282,11 +290,11 @@
       sql::test::ScopedErrorExpecter expecter;
       expecter.ExpectError(SQLITE_CORRUPT);
 
-      // Data for kUrl1 was deleted, but the index entry remains, this will
+      // Data for Url1() was deleted, but the index entry remains, this will
       // throw SQLITE_CORRUPT.  The corruption handler will recover the database
       // and poison the handle, so the outer call fails.
       EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-                db.GetURLRank(MostVisitedURL(kUrl1, base::string16())));
+                db.GetURLRank(MostVisitedURL(Url1(), base::string16())));
 
       ASSERT_TRUE(expecter.SawExpectedErrors());
     }
@@ -307,13 +315,13 @@
     VerifyTablesAndColumns(db.db_.get());
 
     EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-              db.GetURLRank(MostVisitedURL(kUrl1, base::string16())));
+              db.GetURLRank(MostVisitedURL(Url1(), base::string16())));
 
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(2u, urls.size());
-    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
-    EXPECT_EQ(kUrl2, urls[1].url);  // [1] because of url_rank.
+    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(Url2(), urls[1].url);  // [1] because of url_rank.
   }
 }
 
@@ -345,7 +353,7 @@
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(3u, urls.size());
-    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -385,11 +393,11 @@
       sql::test::ScopedErrorExpecter expecter;
       expecter.ExpectError(SQLITE_CORRUPT);
 
-      // Data for kUrl1 was deleted, but the index entry remains, this will
+      // Data for Url1() was deleted, but the index entry remains, this will
       // throw SQLITE_CORRUPT.  The corruption handler will recover the database
       // and poison the handle, so the outer call fails.
       EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-                db.GetURLRank(MostVisitedURL(kUrl1, base::string16())));
+                db.GetURLRank(MostVisitedURL(Url1(), base::string16())));
 
       ASSERT_TRUE(expecter.SawExpectedErrors());
     }
@@ -410,13 +418,13 @@
     VerifyTablesAndColumns(db.db_.get());
 
     EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-              db.GetURLRank(MostVisitedURL(kUrl1, base::string16())));
+              db.GetURLRank(MostVisitedURL(Url1(), base::string16())));
 
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(2u, urls.size());
-    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
-    EXPECT_EQ(kUrl2, urls[1].url);  // [1] because of url_rank.
+    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(Url2(), urls[1].url);  // [1] because of url_rank.
   }
 }
 
@@ -427,8 +435,8 @@
   ASSERT_TRUE(db.Init(file_name_));
 
   TopSitesDelta delta;
-  // Delete kUrl0. Now db has kUrl1 and kUrl2.
-  MostVisitedURL url_to_delete(kUrl0, base::ASCIIToUTF16("Google"));
+  // Delete Url0(). Now db has Url1() and Url2().
+  MostVisitedURL url_to_delete(Url0(), base::ASCIIToUTF16("Google"));
   delta.deleted.push_back(url_to_delete);
 
   // Update db.
@@ -437,7 +445,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({kUrl1, kUrl2}), urls);
+  VerifyURLsEqual(std::vector<GURL>({Url1(), Url2()}), urls);
 }
 
 TEST_F(TopSitesDatabaseTest, ApplyDelta_Add) {
@@ -448,7 +456,7 @@
 
   GURL mapsUrl = GURL("http://maps.google.com/");
 
-  // Add a new URL, rank = 0. Now db has mapsUrl, kUrl0, kUrl1, and kUrl2.
+  // Add a new URL, rank = 0. Now db has mapsUrl, Url0(), Url1(), and Url2().
   TopSitesDelta delta;
   MostVisitedURLWithRank url_to_add;
   url_to_add.url = MostVisitedURL(mapsUrl, base::ASCIIToUTF16("Google Maps"));
@@ -461,7 +469,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({mapsUrl, kUrl0, kUrl1, kUrl2}), urls);
+  VerifyURLsEqual(std::vector<GURL>({mapsUrl, Url0(), Url1(), Url2()}), urls);
 }
 
 TEST_F(TopSitesDatabaseTest, ApplyDelta_Move) {
@@ -470,10 +478,11 @@
   TopSitesDatabase db;
   ASSERT_TRUE(db.Init(file_name_));
 
-  // Move kUrl1 by updating its rank to 2. Now db has kUrl0, kUrl2, and kUrl1.
+  // Move Url1() by updating its rank to 2. Now db has Url0(), Url2(), and
+  // Url1().
   TopSitesDelta delta;
   MostVisitedURLWithRank url_to_move;
-  url_to_move.url = MostVisitedURL(kUrl1, base::ASCIIToUTF16("Google Chrome"));
+  url_to_move.url = MostVisitedURL(Url1(), base::ASCIIToUTF16("Google Chrome"));
   url_to_move.rank = 2;
   delta.moved.push_back(url_to_move);
 
@@ -483,7 +492,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({kUrl0, kUrl2, kUrl1}), urls);
+  VerifyURLsEqual(std::vector<GURL>({Url0(), Url2(), Url1()}), urls);
 }
 
 TEST_F(TopSitesDatabaseTest, ApplyDelta_All) {
@@ -495,19 +504,20 @@
   GURL mapsUrl = GURL("http://maps.google.com/");
 
   TopSitesDelta delta;
-  // Delete kUrl0. Now db has kUrl1 and kUrl2.
-  MostVisitedURL url_to_delete(kUrl0, base::ASCIIToUTF16("Google"));
+  // Delete Url0(). Now db has Url1() and Url2().
+  MostVisitedURL url_to_delete(Url0(), base::ASCIIToUTF16("Google"));
   delta.deleted.push_back(url_to_delete);
 
-  // Add a new URL, not forced, rank = 0. Now db has mapsUrl, kUrl1 and kUrl2.
+  // Add a new URL, not forced, rank = 0. Now db has mapsUrl, Url1() and Url2().
   MostVisitedURLWithRank url_to_add;
   url_to_add.url = MostVisitedURL(mapsUrl, base::ASCIIToUTF16("Google Maps"));
   url_to_add.rank = 0;
   delta.added.push_back(url_to_add);
 
-  // Move kUrl1 by updating its rank to 2. Now db has mapsUrl, kUrl2 and kUrl1.
+  // Move Url1() by updating its rank to 2. Now db has mapsUrl, Url2() and
+  // Url1().
   MostVisitedURLWithRank url_to_move;
-  url_to_move.url = MostVisitedURL(kUrl1, base::ASCIIToUTF16("Google Chrome"));
+  url_to_move.url = MostVisitedURL(Url1(), base::ASCIIToUTF16("Google Chrome"));
   url_to_move.rank = 2;
   delta.moved.push_back(url_to_move);
 
@@ -517,7 +527,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({mapsUrl, kUrl2, kUrl1}), urls);
+  VerifyURLsEqual(std::vector<GURL>({mapsUrl, Url2(), Url1()}), urls);
 }
 
 }  // namespace history
diff --git a/components/image_fetcher/core/cached_image_fetcher_unittest.cc b/components/image_fetcher/core/cached_image_fetcher_unittest.cc
index d319b18..81a53879 100644
--- a/components/image_fetcher/core/cached_image_fetcher_unittest.cc
+++ b/components/image_fetcher/core/cached_image_fetcher_unittest.cc
@@ -46,8 +46,6 @@
 
 namespace {
 
-const GURL kImageUrl = GURL("http://gstatic.img.com/foo.jpg");
-
 constexpr char kUmaClientName[] = "TestUma";
 constexpr char kImageData[] = "data";
 constexpr char kImageDataOther[] = "other";
@@ -57,6 +55,12 @@
 const char kNetworkLoadHistogramName[] =
     "ImageFetcher.ImageLoadFromNetworkTime";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL ImageUrl() {
+  return GURL("http://gstatic.img.com/foo.jpg");
+}
+
 }  // namespace
 
 class CachedImageFetcherTest : public testing::Test {
@@ -91,11 +95,11 @@
         base::SequencedTaskRunnerHandle::Get());
 
     // Use an initial request to start the cache up.
-    image_cache_->SaveImage(kImageUrl.spec(), kImageData,
+    image_cache_->SaveImage(ImageUrl().spec(), kImageData,
                             /* needs_transcoding */ false);
     RunUntilIdle();
     db_->InitStatusCallback(leveldb_proto::Enums::InitStatus::kOK);
-    image_cache_->DeleteImage(kImageUrl.spec());
+    image_cache_->DeleteImage(ImageUrl().spec());
     RunUntilIdle();
 
     shared_factory_ =
@@ -164,7 +168,7 @@
 // that they both can use what's inside.
 TEST_F(CachedImageFetcherTest, FetchImageFromCache) {
   // Save the image in the database.
-  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
+  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
                            /* needs_transcoding */ false);
   RunUntilIdle();
 
@@ -174,7 +178,7 @@
   EXPECT_CALL(data_callback, Run(kImageData, _));
   EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
   cached_image_fetcher()->FetchImageAndData(
-      kImageUrl, data_callback.Get(), image_callback.Get(),
+      ImageUrl(), data_callback.Get(), image_callback.Get(),
       ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
   db()->LoadCallback(true);
   RunUntilIdle();
@@ -188,7 +192,7 @@
 
 TEST_F(CachedImageFetcherTest, FetchImageFromCacheNeedsTranscoding) {
   // Save the image in the database.
-  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
+  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
                            /* needs_transcoding */ true);
   RunUntilIdle();
 
@@ -198,7 +202,7 @@
   EXPECT_CALL(data_callback, Run(kImageData, _));
   EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
   cached_image_fetcher()->FetchImageAndData(
-      kImageUrl, data_callback.Get(), image_callback.Get(),
+      ImageUrl(), data_callback.Get(), image_callback.Get(),
       ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
   db()->LoadCallback(true);
   RunUntilIdle();
@@ -214,9 +218,9 @@
 TEST_F(CachedImageFetcherTest, FetchImageFromCacheReadOnly) {
   CreateCachedImageFetcher(/* read_only */ true);
   // Save the image in the database.
-  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
+  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
                            /* needs_transcoding */ false);
-  test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
+  test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
   RunUntilIdle();
   {
     // Even if there's a decoding error, read_only cache shouldn't alter the
@@ -226,7 +230,7 @@
     base::MockCallback<ImageFetcherCallback> image_callback;
     EXPECT_CALL(image_callback, Run(EmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), image_callback.Get(),
+        ImageUrl(), data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -246,7 +250,7 @@
     base::MockCallback<ImageFetcherCallback> image_callback;
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), image_callback.Get(),
+        ImageUrl(), data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -256,7 +260,7 @@
 TEST_F(CachedImageFetcherTest, FetchImagePopulatesCache) {
   // Expect the image to be fetched by URL.
   {
-    test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
+    test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
 
     base::MockCallback<ImageDataFetcherCallback> data_callback;
     base::MockCallback<ImageFetcherCallback> image_callback;
@@ -264,7 +268,7 @@
     EXPECT_CALL(data_callback, Run(NonEmptyString(), _));
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), image_callback.Get(),
+        ImageUrl(), data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -279,7 +283,7 @@
   {
     EXPECT_CALL(*this, OnImageLoaded(false, NonEmptyString()));
     image_cache()->LoadImage(
-        /* read_only */ false, kImageUrl.spec(),
+        /* read_only */ false, ImageUrl().spec(),
         base::BindOnce(&CachedImageFetcherTest::OnImageLoaded,
                        base::Unretained(this)));
     db()->LoadCallback(true);
@@ -295,7 +299,7 @@
     EXPECT_CALL(data_callback, Run(NonEmptyString(), _));
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), image_callback.Get(),
+        ImageUrl(), data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -306,7 +310,7 @@
   CreateCachedImageFetcher(/* read_only */ true);
   // Expect the image to be fetched by URL.
   {
-    test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
+    test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
 
     base::MockCallback<ImageDataFetcherCallback> data_callback;
     base::MockCallback<ImageFetcherCallback> image_callback;
@@ -314,7 +318,7 @@
     EXPECT_CALL(data_callback, Run(NonEmptyString(), _));
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), image_callback.Get(),
+        ImageUrl(), data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -329,7 +333,7 @@
   {
     EXPECT_CALL(*this, OnImageLoaded(false, std::string()));
     image_cache()->LoadImage(
-        /* read_only */ false, kImageUrl.spec(),
+        /* read_only */ false, ImageUrl().spec(),
         base::BindOnce(&CachedImageFetcherTest::OnImageLoaded,
                        base::Unretained(this)));
     db()->LoadCallback(true);
@@ -339,7 +343,7 @@
 
 TEST_F(CachedImageFetcherTest, FetchImageWithoutTranscodingDoesNotDecode) {
   {
-    test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
+    test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
     image_decoder()->SetDecodingValid(false);
 
     base::MockCallback<ImageDataFetcherCallback> data_callback;
@@ -347,7 +351,7 @@
     EXPECT_CALL(data_callback, Run(kImageData, _));
     ImageFetcherParams params(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName);
     params.set_skip_transcoding_for_testing(true);
-    cached_image_fetcher()->FetchImageAndData(kImageUrl, data_callback.Get(),
+    cached_image_fetcher()->FetchImageAndData(ImageUrl(), data_callback.Get(),
                                               ImageFetcherCallback(), params);
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -357,7 +361,7 @@
     base::MockCallback<ImageDataFetcherCallback> data_callback;
     EXPECT_CALL(data_callback, Run(kImageData, _));
     cached_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), ImageFetcherCallback(),
+        ImageUrl(), data_callback.Get(), ImageFetcherCallback(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -366,10 +370,10 @@
 
 TEST_F(CachedImageFetcherTest, FetchImageWithSkipDiskCache) {
   // Save the image in the database.
-  image_cache()->SaveImage(kImageUrl.spec(), kImageDataOther,
+  image_cache()->SaveImage(ImageUrl().spec(), kImageDataOther,
                            /* needs_transcoding */ false);
   RunUntilIdle();
-  test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
+  test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
 
   base::MockCallback<ImageDataFetcherCallback> data_callback;
   base::MockCallback<ImageFetcherCallback> image_callback;
@@ -379,7 +383,7 @@
 
   EXPECT_CALL(data_callback, Run(kImageData, _));
   EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
-  cached_image_fetcher()->FetchImageAndData(kImageUrl, data_callback.Get(),
+  cached_image_fetcher()->FetchImageAndData(ImageUrl(), data_callback.Get(),
                                             image_callback.Get(), params);
 
   RunUntilIdle();
diff --git a/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc b/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc
index ad193d3..1514ea8 100644
--- a/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc
+++ b/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc
@@ -44,13 +44,17 @@
 
 namespace {
 
-const GURL kImageUrl = GURL("http://gstatic.img.com/foo.jpg");
-
 constexpr char kUmaClientName[] = "TestUma";
 constexpr char kImageData[] = "data";
 
 const char kImageFetcherEventHistogramName[] = "ImageFetcher.Events";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL ImageUrl() {
+  return GURL("http://gstatic.img.com/foo.jpg");
+}
+
 }  // namespace
 
 class ReducedModeImageFetcherTest : public testing::Test {
@@ -85,11 +89,11 @@
         base::SequencedTaskRunnerHandle::Get());
 
     // Use an initial request to start the cache up.
-    image_cache_->SaveImage(kImageUrl.spec(), kImageData,
+    image_cache_->SaveImage(ImageUrl().spec(), kImageData,
                             /* needs_transcoding */ false);
     RunUntilIdle();
     db_->InitStatusCallback(leveldb_proto::Enums::InitStatus::kOK);
-    image_cache_->DeleteImage(kImageUrl.spec());
+    image_cache_->DeleteImage(ImageUrl().spec());
     RunUntilIdle();
 
     shared_factory_ =
@@ -115,7 +119,7 @@
 
     EXPECT_CALL(data_callback, Run(kImageData, _));
     reduced_mode_image_fetcher()->FetchImageAndData(
-        kImageUrl, data_callback.Get(), ImageFetcherCallback(),
+        ImageUrl(), data_callback.Get(), ImageFetcherCallback(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -160,14 +164,14 @@
 
 TEST_F(ReducedModeImageFetcherTest, FetchNeedsTranscodingImageFromCache) {
   // Save the image that needs transcoding in the database.
-  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
+  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
                            /* needs_transcoding */ true);
   VerifyCacheHit();
 }
 
 TEST_F(ReducedModeImageFetcherTest, FetchImageFromCache) {
   // Save the image that doesn't need transcoding in the database.
-  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
+  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
                            /* needs_transcoding */ false);
   VerifyCacheHit();
 }
diff --git a/components/offline_pages/core/background/change_requests_state_task_unittest.cc b/components/offline_pages/core/background/change_requests_state_task_unittest.cc
index d4d876d..85f4e96e 100644
--- a/components/offline_pages/core/background/change_requests_state_task_unittest.cc
+++ b/components/offline_pages/core/background/change_requests_state_task_unittest.cc
@@ -20,11 +20,19 @@
 const int64_t kRequestId1 = 42;
 const int64_t kRequestId2 = 43;
 const int64_t kRequestId3 = 44;
-const GURL kUrl1("http://example.com");
-const GURL kUrl2("http://another-example.com");
+
 const ClientId kClientId1("bookmark", "1234");
 const ClientId kClientId2("async", "5678");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+GURL Url2() {
+  return GURL("http://another-example.com");
+}
+
 class ChangeRequestsStateTaskTest : public RequestQueueTaskTestBase {
  public:
   ~ChangeRequestsStateTaskTest() override = default;
@@ -43,12 +51,12 @@
 
 void ChangeRequestsStateTaskTest::AddItemsToStore() {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request_1(kRequestId1, Url1(), kClientId1, creation_time,
                             true);
   store_.AddRequest(request_1, RequestQueue::AddOptions(),
                     base::BindOnce(&ChangeRequestsStateTaskTest::AddRequestDone,
                                    base::Unretained(this)));
-  SavePageRequest request_2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request_2(kRequestId2, Url2(), kClientId2, creation_time,
                             true);
   store_.AddRequest(request_2, RequestQueue::AddOptions(),
                     base::BindOnce(&ChangeRequestsStateTaskTest::AddRequestDone,
diff --git a/components/offline_pages/core/background/cleanup_task_unittest.cc b/components/offline_pages/core/background/cleanup_task_unittest.cc
index 0b39fbd..2a6260ed 100644
--- a/components/offline_pages/core/background/cleanup_task_unittest.cc
+++ b/components/offline_pages/core/background/cleanup_task_unittest.cc
@@ -26,20 +26,27 @@
 namespace {
 // Data for request 1.
 const int64_t kRequestId1 = 17;
-const GURL kUrl1("https://google.com");
 const ClientId kClientId1("bookmark", "1234");
 // Data for request 2.
 const int64_t kRequestId2 = 42;
-const GURL kUrl2("http://nytimes.com");
+
 const ClientId kClientId2("bookmark", "5678");
 const bool kUserRequested = true;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("https://google.com");
+}
+
+GURL Url2() {
+  return GURL("http://nytimes.com");
+}
+
 // Default request
-const SavePageRequest kEmptyRequest(0UL,
-                                    GURL(""),
-                                    ClientId("", ""),
-                                    base::Time(),
-                                    true);
+SavePageRequest EmptyRequest() {
+  return SavePageRequest(0UL, GURL(""), ClientId("", ""), base::Time(), true);
+}
 
 // TODO: Refactor this stub class into its own file, use in Pick Request Task
 // Test too.
@@ -47,7 +54,7 @@
 class RequestNotifierStub : public RequestNotifier {
  public:
   RequestNotifierStub()
-      : last_expired_request_(kEmptyRequest), total_expired_requests_(0) {}
+      : last_expired_request_(EmptyRequest()), total_expired_requests_(0) {}
 
   void NotifyAdded(const SavePageRequest& request) override {}
   void NotifyChanged(const SavePageRequest& request) override {}
@@ -163,9 +170,9 @@
       creation_time - base::TimeDelta::FromSeconds(
                           policy()->GetRequestExpirationTimeInSeconds() + 10);
   // Request2 will be expired, request1 will be current.
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, expired_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, expired_time,
                            kUserRequested);
   QueueRequests(request1, request2);
 
@@ -184,9 +191,9 @@
 TEST_F(CleanupTaskTest, CleanupStartCountExceededRequest) {
   base::Time creation_time = OfflineTimeNow();
   // Request2 will have an exceeded start count.
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_started_attempt_count(policy()->GetMaxStartedTries());
   QueueRequests(request1, request2);
@@ -206,9 +213,9 @@
 TEST_F(CleanupTaskTest, CleanupCompletionCountExceededRequest) {
   base::Time creation_time = OfflineTimeNow();
   // Request2 will have an exceeded completion count.
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(policy()->GetMaxCompletedTries());
   QueueRequests(request1, request2);
@@ -229,11 +236,11 @@
   base::Time creation_time = OfflineTimeNow();
   // Both requests will have an exceeded completion count.
   // The first request will be marked as started.
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
   request1.set_completed_attempt_count(policy()->GetMaxCompletedTries());
   request1.MarkAttemptStarted(creation_time);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(policy()->GetMaxCompletedTries());
   QueueRequests(request1, request2);
diff --git a/components/offline_pages/core/background/get_requests_task_unittest.cc b/components/offline_pages/core/background/get_requests_task_unittest.cc
index 7a804d85..13b8e17d 100644
--- a/components/offline_pages/core/background/get_requests_task_unittest.cc
+++ b/components/offline_pages/core/background/get_requests_task_unittest.cc
@@ -19,11 +19,19 @@
 namespace {
 const int64_t kRequestId1 = 42;
 const int64_t kRequestId2 = 44;
-const GURL kUrl1("http://example.com");
-const GURL kUrl2("http://otherexample.com");
+
 const ClientId kClientId1("download", "1234");
 const ClientId kClientId2("download", "5678");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+GURL Url2() {
+  return GURL("http://otherexample.com");
+}
+
 class GetRequestsTaskTest : public RequestQueueTaskTestBase {
  public:
   GetRequestsTaskTest() = default;
@@ -54,12 +62,12 @@
 
 void GetRequestsTaskTest::AddItemsToStore(RequestQueueStore* store) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request_1(kRequestId1, Url1(), kClientId1, creation_time,
                             true);
   store->AddRequest(request_1, RequestQueue::AddOptions(),
                     base::BindOnce(&GetRequestsTaskTest::AddRequestDone));
   creation_time = OfflineTimeNow();
-  SavePageRequest request_2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request_2(kRequestId2, Url2(), kClientId2, creation_time,
                             true);
   store->AddRequest(request_2, RequestQueue::AddOptions(),
                     base::BindOnce(&GetRequestsTaskTest::AddRequestDone));
diff --git a/components/offline_pages/core/background/mark_attempt_aborted_task_unittest.cc b/components/offline_pages/core/background/mark_attempt_aborted_task_unittest.cc
index abb19df..63b23b4 100644
--- a/components/offline_pages/core/background/mark_attempt_aborted_task_unittest.cc
+++ b/components/offline_pages/core/background/mark_attempt_aborted_task_unittest.cc
@@ -22,9 +22,15 @@
 namespace {
 const int64_t kRequestId1 = 42;
 const int64_t kRequestId2 = 44;
-const GURL kUrl1("http://example.com");
+
 const ClientId kClientId1("download", "1234");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+
 class MarkAttemptAbortedTaskTest : public RequestQueueTaskTestBase {
  public:
   MarkAttemptAbortedTaskTest() {}
@@ -46,7 +52,7 @@
 
 void MarkAttemptAbortedTaskTest::AddItemToStore(RequestQueueStore* store) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request_1(kRequestId1, Url1(), kClientId1, creation_time,
                             true);
   store->AddRequest(request_1, RequestQueue::AddOptions(),
                     base::BindOnce(&MarkAttemptAbortedTaskTest::AddRequestDone,
diff --git a/components/offline_pages/core/background/mark_attempt_completed_task_unittest.cc b/components/offline_pages/core/background/mark_attempt_completed_task_unittest.cc
index 17f5b06..2bfe026 100644
--- a/components/offline_pages/core/background/mark_attempt_completed_task_unittest.cc
+++ b/components/offline_pages/core/background/mark_attempt_completed_task_unittest.cc
@@ -18,9 +18,15 @@
 namespace {
 const int64_t kRequestId1 = 42;
 const int64_t kRequestId2 = 44;
-const GURL kUrl1("http://example.com");
+
 const ClientId kClientId1("download", "1234");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+
 class MarkAttemptCompletedTaskTest : public RequestQueueTaskTestBase {
  public:
   MarkAttemptCompletedTaskTest() {}
@@ -41,7 +47,7 @@
 
 void MarkAttemptCompletedTaskTest::AddStartedItemToStore() {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request_1(kRequestId1, Url1(), kClientId1, creation_time,
                             true);
   request_1.MarkAttemptStarted(OfflineTimeNow());
   store_.AddRequest(
diff --git a/components/offline_pages/core/background/mark_attempt_started_task_unittest.cc b/components/offline_pages/core/background/mark_attempt_started_task_unittest.cc
index 26616a3..ee1c8d8 100644
--- a/components/offline_pages/core/background/mark_attempt_started_task_unittest.cc
+++ b/components/offline_pages/core/background/mark_attempt_started_task_unittest.cc
@@ -19,9 +19,14 @@
 namespace {
 const int64_t kRequestId1 = 42;
 const int64_t kRequestId2 = 44;
-const GURL kUrl1("http://example.com");
 const ClientId kClientId1("download", "1234");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+
 class MarkAttemptStartedTaskTest : public RequestQueueTaskTestBase {
  public:
   MarkAttemptStartedTaskTest() {}
@@ -42,7 +47,7 @@
 
 void MarkAttemptStartedTaskTest::AddItemToStore() {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request_1(kRequestId1, Url1(), kClientId1, creation_time,
                             true);
   store_.AddRequest(
       request_1, RequestQueue::AddOptions(),
diff --git a/components/offline_pages/core/background/pick_request_task_unittest.cc b/components/offline_pages/core/background/pick_request_task_unittest.cc
index 88b34e9..d923e28 100644
--- a/components/offline_pages/core/background/pick_request_task_unittest.cc
+++ b/components/offline_pages/core/background/pick_request_task_unittest.cc
@@ -28,11 +28,9 @@
 namespace {
 // Data for request 1.
 const int64_t kRequestId1 = 17;
-const GURL kUrl1("https://google.com");
 const ClientId kClientId1("bookmark", "1234");
 // Data for request 2.
 const int64_t kRequestId2 = 42;
-const GURL kUrl2("http://nytimes.com");
 const ClientId kClientId2("bookmark", "5678");
 const bool kUserRequested = true;
 const int kAttemptCount = 1;
@@ -45,18 +43,26 @@
 const bool kPreferRetryCount = true;
 const int kBackgroundProcessingTimeBudgetSeconds = 170;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("https://google.com");
+}
+
+GURL Url2() {
+  return GURL("http://nytimes.com");
+}
+
 // Default request
-const SavePageRequest kEmptyRequest(0UL,
-                                    GURL(""),
-                                    ClientId("", ""),
-                                    base::Time(),
-                                    true);
+SavePageRequest EmptyRequest() {
+  return SavePageRequest(0UL, GURL(""), ClientId("", ""), base::Time(), true);
+}
 
 // Helper class needed by the PickRequestTask
 class RequestNotifierStub : public RequestNotifier {
  public:
   RequestNotifierStub()
-      : last_expired_request_(kEmptyRequest), total_expired_requests_(0) {}
+      : last_expired_request_(EmptyRequest()), total_expired_requests_(0) {}
 
   void NotifyAdded(const SavePageRequest& request) override {}
   void NotifyChanged(const SavePageRequest& request) override {}
@@ -226,9 +232,9 @@
   MakePickRequestTask();
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
 
@@ -248,9 +254,9 @@
   base::Time creation_time1 =
       OfflineTimeNow() - base::TimeDelta::FromSeconds(10);
   base::Time creation_time2 = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time1,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time2,
                            kUserRequested);
 
   QueueRequests(request1, request2);
@@ -273,9 +279,9 @@
   base::Time creation_time1 =
       OfflineTimeNow() - base::TimeDelta::FromSeconds(10);
   base::Time creation_time2 = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time1,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time2,
                            kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
 
@@ -297,9 +303,9 @@
   MakePickRequestTask();
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
 
@@ -321,9 +327,9 @@
   MakePickRequestTask();
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
 
@@ -347,9 +353,9 @@
   base::Time creation_time1 =
       OfflineTimeNow() - base::TimeDelta::FromSeconds(10);
   base::Time creation_time2 = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time1,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time2,
                            kUserRequested);
 
   QueueRequests(request1, request2);
@@ -367,9 +373,9 @@
   base::Time expired_time =
       creation_time - base::TimeDelta::FromSeconds(
                           policy_->GetRequestExpirationTimeInSeconds() + 60);
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, expired_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, expired_time,
                            kUserRequested);
 
   QueueRequests(request1, request2);
@@ -389,9 +395,9 @@
   base::Time creation_time1 =
       OfflineTimeNow() - base::TimeDelta::FromSeconds(1);
   base::Time creation_time2 = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time1,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time2,
                            kUserRequested);
 
   // With default policy settings, we should choose the earlier request.
@@ -415,9 +421,9 @@
   base::Time creation_time1 =
       OfflineTimeNow() - base::TimeDelta::FromSeconds(1);
   base::Time creation_time2 = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time1,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time2,
                            kUserRequested);
 
   // With default policy settings, we should choose the earlier request.
@@ -446,9 +452,9 @@
   MakePickRequestTask();
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
 
@@ -475,9 +481,9 @@
   MakePickRequestTask();
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   // Since default policy prefer untried requests, make request1 the favorable
   // pick if no prioritized requests. But request2 is prioritized so it should
@@ -516,9 +522,9 @@
   base::Time creation_time = OfflineTimeNow();
   base::Time older_creation_time =
       creation_time - base::TimeDelta::FromMinutes(10);
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, older_creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, older_creation_time,
                            kUserRequested);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
 
diff --git a/components/offline_pages/core/background/reconcile_task_unittest.cc b/components/offline_pages/core/background/reconcile_task_unittest.cc
index add0f4a..6a94916 100644
--- a/components/offline_pages/core/background/reconcile_task_unittest.cc
+++ b/components/offline_pages/core/background/reconcile_task_unittest.cc
@@ -23,20 +23,20 @@
 namespace {
 // Data for request 1.
 const int64_t kRequestId1 = 17;
-const GURL kUrl1("https://google.com");
 const ClientId kClientId1("bookmark", "1234");
 // Data for request 2.
 const int64_t kRequestId2 = 42;
-const GURL kUrl2("http://nytimes.com");
 const ClientId kClientId2("bookmark", "5678");
 const bool kUserRequested = true;
 
-// Default request
-const SavePageRequest kEmptyRequest(0UL,
-                                    GURL(""),
-                                    ClientId("", ""),
-                                    base::Time(),
-                                    true);
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("https://google.com");
+}
+GURL Url2() {
+  return GURL("http://nytimes.com");
+}
 
 class ReconcileTaskTest : public RequestQueueTaskTestBase {
  public:
@@ -117,10 +117,10 @@
 TEST_F(ReconcileTaskTest, Reconcile) {
   base::Time creation_time = OfflineTimeNow();
   // Request2 will be expired, request1 will be current.
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
   request1.set_request_state(SavePageRequest::RequestState::PAUSED);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_request_state(SavePageRequest::RequestState::OFFLINING);
   QueueRequests(request1, request2);
@@ -152,10 +152,10 @@
 TEST_F(ReconcileTaskTest, NothingToReconcile) {
   base::Time creation_time = OfflineTimeNow();
   // Request2 will be expired, request1 will be current.
-  SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request1(kRequestId1, Url1(), kClientId1, creation_time,
                            kUserRequested);
   request1.set_request_state(SavePageRequest::RequestState::PAUSED);
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   request2.set_request_state(SavePageRequest::RequestState::AVAILABLE);
   QueueRequests(request1, request2);
diff --git a/components/offline_pages/core/background/remove_requests_task_unittest.cc b/components/offline_pages/core/background/remove_requests_task_unittest.cc
index 07fa027..bf2c6c8 100644
--- a/components/offline_pages/core/background/remove_requests_task_unittest.cc
+++ b/components/offline_pages/core/background/remove_requests_task_unittest.cc
@@ -20,11 +20,19 @@
 const int64_t kRequestId1 = 42;
 const int64_t kRequestId2 = 43;
 const int64_t kRequestId3 = 44;
-const GURL kUrl1("http://example.com");
-const GURL kUrl2("http://another-example.com");
+
 const ClientId kClientId1("bookmark", "1234");
 const ClientId kClientId2("async", "5678");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+GURL Url2() {
+  return GURL("http://another-example.com");
+}
+
 class RemoveRequestsTaskTest : public RequestQueueTaskTestBase {
  public:
   RemoveRequestsTaskTest() {}
@@ -51,11 +59,11 @@
 
 void RemoveRequestsTaskTest::AddRequestsToStore() {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
+  SavePageRequest request_1(kRequestId1, Url1(), kClientId1, creation_time,
                             true);
   store_.AddRequest(request_1, RequestQueue::AddOptions(),
                     base::BindOnce(&RemoveRequestsTaskTest::AddRequestDone));
-  SavePageRequest request_2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request_2(kRequestId2, Url2(), kClientId2, creation_time,
                             true);
   store_.AddRequest(request_2, RequestQueue::AddOptions(),
                     base::BindOnce(&RemoveRequestsTaskTest::AddRequestDone));
diff --git a/components/offline_pages/core/background/request_coordinator_unittest.cc b/components/offline_pages/core/background/request_coordinator_unittest.cc
index e84b2de..fc630ce2 100644
--- a/components/offline_pages/core/background/request_coordinator_unittest.cc
+++ b/components/offline_pages/core/background/request_coordinator_unittest.cc
@@ -43,8 +43,6 @@
 
 namespace {
 // put test constants here
-const GURL kUrl1("http://universe.com/everything");
-const GURL kUrl2("http://universe.com/toinfinityandbeyond");
 const std::string kClientNamespace("bookmark");
 const std::string kId1("42");
 const std::string kId2("life*universe+everything");
@@ -60,6 +58,15 @@
 const int kAttemptCount = 1;
 const std::string kRequestOrigin("abc.xyz");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://universe.com/everything");
+}
+GURL Url2() {
+  return GURL("http://universe.com/toinfinityandbeyond");
+}
+
 class BoolCallbackResult {
  public:
   base::RepeatingCallback<void(bool)> Bind() {
@@ -322,7 +329,7 @@
 
   int64_t SavePageLater() {
     RequestCoordinator::SavePageLaterParams params;
-    params.url = kUrl1;
+    params.url = Url1();
     params.client_id = kClientId1;
     params.user_requested = kUserRequested;
     params.request_origin = kRequestOrigin;
@@ -334,7 +341,7 @@
   int64_t SavePageLaterWithAvailability(
       RequestCoordinator::RequestAvailability availability) {
     RequestCoordinator::SavePageLaterParams params;
-    params.url = kUrl1;
+    params.url = Url1();
     params.client_id = kClientId1;
     params.user_requested = kUserRequested;
     params.availability = availability;
@@ -519,14 +526,14 @@
 }
 
 SavePageRequest RequestCoordinatorTest::AddRequest1() {
-  offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request1(kRequestId1, Url1(), kClientId1,
                                           OfflineTimeNow(), kUserRequested);
   queue()->AddRequest(request1, RequestQueue::AddOptions(), base::DoNothing());
   return request1;
 }
 
 SavePageRequest RequestCoordinatorTest::AddRequest2() {
-  offline_pages::SavePageRequest request2(kRequestId2, kUrl2, kClientId2,
+  offline_pages::SavePageRequest request2(kRequestId2, Url2(), kClientId2,
                                           OfflineTimeNow(), kUserRequested);
   queue()->AddRequest(request2, RequestQueue::AddOptions(), base::DoNothing());
   return request2;
@@ -641,9 +648,9 @@
 
   // Use default values for |user_requested| and |availability|.
   RequestCoordinator::SavePageLaterParams params;
-  params.url = kUrl1;
+  params.url = Url1();
   params.client_id = kClientId1;
-  params.original_url = kUrl2;
+  params.original_url = Url2();
   params.request_origin = kRequestOrigin;
   EXPECT_NE(0, coordinator()->SavePageLater(
                    params, base::BindOnce(
@@ -664,10 +671,10 @@
 
   // Check the request queue is as expected.
   ASSERT_EQ(1UL, last_requests().size());
-  EXPECT_EQ(kUrl1, last_requests().at(0)->url());
+  EXPECT_EQ(Url1(), last_requests().at(0)->url());
   EXPECT_EQ(kClientId1, last_requests().at(0)->client_id());
   EXPECT_TRUE(last_requests().at(0)->user_requested());
-  EXPECT_EQ(kUrl2, last_requests().at(0)->original_url());
+  EXPECT_EQ(Url2(), last_requests().at(0)->original_url());
   EXPECT_EQ(kRequestOrigin, last_requests().at(0)->request_origin());
 
   // Expect that the scheduler got notified.
@@ -715,7 +722,7 @@
   EXPECT_TRUE(add_request_callback_called());
   // Check the request queue is as expected.
   EXPECT_EQ(1UL, last_requests().size());
-  EXPECT_EQ(kUrl1, last_requests().at(0)->url());
+  EXPECT_EQ(Url1(), last_requests().at(0)->url());
   EXPECT_EQ(kClientId1, last_requests().at(0)->client_id());
 
   // Expect that the scheduler got notified.
@@ -731,7 +738,7 @@
 
 TEST_F(RequestCoordinatorTest, OfflinerDoneRequestSucceeded) {
   // Add a request to the queue, wait for callbacks to finish.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   SetupForOfflinerDoneCallbackTest(&request);
 
@@ -762,7 +769,7 @@
 
 TEST_F(RequestCoordinatorTest, OfflinerDoneRequestSucceededButLostNetwork) {
   // Add a request to the queue and set offliner done callback for it.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   SetupForOfflinerDoneCallbackTest(&request);
   EnableOfflinerCallback(false);
@@ -791,7 +798,7 @@
 
 TEST_F(RequestCoordinatorTest, OfflinerDoneRequestFailed) {
   // Add a request to the queue, wait for callbacks to finish.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   request.set_completed_attempt_count(kMaxCompletedTries - 1);
   SetupForOfflinerDoneCallbackTest(&request);
@@ -834,7 +841,7 @@
 
 TEST_F(RequestCoordinatorTest, OfflinerDoneRequestFailedNoRetryFailure) {
   // Add a request to the queue, wait for callbacks to finish.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   SetupForOfflinerDoneCallbackTest(&request);
   EnableOfflinerCallback(false);
@@ -877,7 +884,7 @@
 
 TEST_F(RequestCoordinatorTest, OfflinerDoneRequestFailedNoNextFailure) {
   // Add a request to the queue, wait for callbacks to finish.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   SetupForOfflinerDoneCallbackTest(&request);
   EnableOfflinerCallback(false);
@@ -909,7 +916,7 @@
 
 TEST_F(RequestCoordinatorTest, OfflinerDoneForegroundCancel) {
   // Add a request to the queue, wait for callbacks to finish.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   SetupForOfflinerDoneCallbackTest(&request);
 
@@ -936,7 +943,7 @@
   // defer_while_page_is_active.
   active_tab_info_->set_does_active_tab_match(true);
   RequestCoordinator::SavePageLaterParams params;
-  params.url = kUrl1;
+  params.url = Url1();
   // Auto-async uses defer_background_fetch_while_page_is_active.
   params.client_id = ClientId(kAutoAsyncNamespace, "1");
   coordinator()->SavePageLater(params, base::DoNothing());
@@ -972,7 +979,7 @@
   // false. The page should be offlined.
   active_tab_info_->set_does_active_tab_match(false);
   RequestCoordinator::SavePageLaterParams params;
-  params.url = kUrl1;
+  params.url = Url1();
   // Auto-async uses defer_background_fetch_while_page_is_active.
   params.client_id = ClientId(kAutoAsyncNamespace, "1");
   coordinator()->SavePageLater(params, base::DoNothing());
@@ -1040,7 +1047,7 @@
   // the second is not user requested.
   AddRequest1();
 
-  offline_pages::SavePageRequest request2(kRequestId2, kUrl2, kClientId2,
+  offline_pages::SavePageRequest request2(kRequestId2, Url2(), kClientId2,
                                           OfflineTimeNow(), !kUserRequested);
   queue()->AddRequest(request2, RequestQueue::AddOptions(), base::DoNothing());
   PumpLoop();
@@ -1263,7 +1270,7 @@
 
   // Add a new request, and remove current request while it is processing.
   RequestCoordinator::SavePageLaterParams request2;
-  request2.url = kUrl2;
+  request2.url = Url2();
   request2.client_id = kClientId2;
   request2.user_requested = true;
   coordinator()->SavePageLater(request2, base::DoNothing());
@@ -1339,7 +1346,7 @@
 TEST_F(RequestCoordinatorTest,
        WatchdogTimeoutForScheduledProcessingNoLastSnapshot) {
   // Build a request to use with the pre-renderer, and put it on the queue.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   // Set request to allow one more completed attempt.
   int max_tries = coordinator()->policy()->GetMaxCompletedTries();
@@ -1412,7 +1419,7 @@
   // Build two requests to use with the pre-renderer, and put it on the queue.
   AddRequest1();
   // The second request will have a larger completed attempt count.
-  offline_pages::SavePageRequest request2(kRequestId1 + 1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request2(kRequestId1 + 1, Url1(), kClientId1,
                                           OfflineTimeNow(), kUserRequested);
   request2.set_completed_attempt_count(kAttemptCount);
   queue()->AddRequest(request2, RequestQueue::AddOptions(), base::DoNothing());
@@ -1696,7 +1703,7 @@
 
 TEST_F(RequestCoordinatorTest, SnapshotOnLastTryForScheduledProcessing) {
   // Build a request to use with the pre-renderer, and put it on the queue.
-  offline_pages::SavePageRequest request(kRequestId1, kUrl1, kClientId1,
+  offline_pages::SavePageRequest request(kRequestId1, Url1(), kClientId1,
                                          OfflineTimeNow(), kUserRequested);
   // Set request to allow one more completed attempt. So that the next try would
   // be the last retry.
@@ -1862,7 +1869,7 @@
 
   // Make a second request.
   RequestCoordinator::SavePageLaterParams params;
-  params.url = kUrl2;
+  params.url = Url2();
   params.client_id = kClientId2;
   params.user_requested = kUserRequested;
   EXPECT_NE(0, coordinator()->SavePageLater(
@@ -1883,7 +1890,7 @@
   EnableOfflinerCallback(false);
 
   RequestCoordinator::SavePageLaterParams params;
-  params.url = kUrl1;
+  params.url = Url1();
   params.client_id = kClientId1;
   params.add_options.disallow_duplicate_requests = true;
   std::vector<AddRequestResult> results;
diff --git a/components/offline_pages/core/background/request_queue_store_unittest.cc b/components/offline_pages/core/background/request_queue_store_unittest.cc
index d96e041..bc62f962 100644
--- a/components/offline_pages/core/background/request_queue_store_unittest.cc
+++ b/components/offline_pages/core/background/request_queue_store_unittest.cc
@@ -30,8 +30,7 @@
 const int64_t kRequestId = 42;
 const int64_t kRequestId2 = 44;
 const int64_t kRequestId3 = 47;
-const GURL kUrl("http://example.com");
-const GURL kUrl2("http://another-example.com");
+
 const ClientId kClientId("bookmark", "1234");
 const ClientId kClientId2("async", "5678");
 const bool kUserRequested = true;
@@ -42,8 +41,17 @@
   RESULT_TRUE,
 };
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+GURL Url2() {
+  return GURL("http://another-example.com");
+}
+
 SavePageRequest GetTestRequest() {
-  SavePageRequest request(kRequestId, kUrl, kClientId,
+  SavePageRequest request(kRequestId, Url1(), kClientId,
                           base::Time::FromDeltaSinceWindowsEpoch(
                               base::TimeDelta::FromSeconds(1000)),
                           kUserRequested);
@@ -55,7 +63,7 @@
       base::TimeDelta::FromSeconds(400)));
   request.set_request_origin("http://www.origin.com");
   // Note: pending_state is not stored.
-  request.set_original_url(kUrl2);
+  request.set_original_url(Url2());
   request.set_auto_fetch_notification_state(
       SavePageRequest::AutoFetchNotificationState::kShown);
   return request;
@@ -97,7 +105,7 @@
   statement.BindInt64(4, 0);
   statement.BindInt64(5, 0);
   statement.BindInt64(6, 0);
-  statement.BindString(7, kUrl.spec());
+  statement.BindString(7, Url1().spec());
   statement.BindString(8, kClientId.name_space);
   statement.BindString(9, kClientId.id);
   ASSERT_TRUE(statement.Run());
@@ -143,10 +151,10 @@
   statement.BindInt64(4, 0);
   statement.BindInt64(5, 0);
   statement.BindInt64(6, 0);
-  statement.BindString(7, kUrl.spec());
+  statement.BindString(7, Url1().spec());
   statement.BindString(8, kClientId.name_space);
   statement.BindString(9, kClientId.id);
-  statement.BindString(10, kUrl2.spec());
+  statement.BindString(10, Url2().spec());
   ASSERT_TRUE(statement.Run());
   ASSERT_TRUE(connection.DoesTableExist(REQUEST_QUEUE_TABLE_NAME));
   ASSERT_FALSE(
@@ -191,10 +199,10 @@
   statement.BindInt64(4, 0);
   statement.BindInt64(5, 0);
   statement.BindInt64(6, 0);
-  statement.BindString(7, kUrl.spec());
+  statement.BindString(7, Url1().spec());
   statement.BindString(8, kClientId.name_space);
   statement.BindString(9, kClientId.id);
-  statement.BindString(10, kUrl2.spec());
+  statement.BindString(10, Url2().spec());
   statement.BindString(11, kRequestOrigin);
   ASSERT_TRUE(statement.Run());
   ASSERT_TRUE(connection.DoesTableExist(REQUEST_QUEUE_TABLE_NAME));
@@ -242,10 +250,10 @@
   statement.BindInt64(4, 0);
   statement.BindInt64(5, 0);
   statement.BindInt64(6, 0);
-  statement.BindString(7, kUrl.spec());
+  statement.BindString(7, Url1().spec());
   statement.BindString(8, kClientId.name_space);
   statement.BindString(9, kClientId.id);
-  statement.BindString(10, kUrl2.spec());
+  statement.BindString(10, Url2().spec());
   statement.BindString(11, kRequestOrigin);
   statement.BindInt64(12, 1);
   ASSERT_TRUE(statement.Run());
@@ -412,7 +420,7 @@
     }
 
     // Verify a request can be added and retrieved.
-    SavePageRequest request(kRequestId, kUrl, kClientId, OfflineTimeNow(),
+    SavePageRequest request(kRequestId, Url1(), kClientId, OfflineTimeNow(),
                             kUserRequested);
     store->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
@@ -443,7 +451,7 @@
   ASSERT_EQ(LastResult::RESULT_TRUE, this->last_result());
   ASSERT_EQ(1u, this->last_requests().size());
   EXPECT_EQ(kRequestId, this->last_requests()[0]->request_id());
-  EXPECT_EQ(kUrl, this->last_requests()[0]->url());
+  EXPECT_EQ(Url1(), this->last_requests()[0]->url());
   EXPECT_EQ(GURL(), this->last_requests()[0]->original_url());
 
   PostUpgradeChecks(store.get());
@@ -459,8 +467,8 @@
   ASSERT_EQ(LastResult::RESULT_TRUE, this->last_result());
   ASSERT_EQ(1u, this->last_requests().size());
   EXPECT_EQ(kRequestId, this->last_requests()[0]->request_id());
-  EXPECT_EQ(kUrl, this->last_requests()[0]->url());
-  EXPECT_EQ(kUrl2, this->last_requests()[0]->original_url());
+  EXPECT_EQ(Url1(), this->last_requests()[0]->url());
+  EXPECT_EQ(Url2(), this->last_requests()[0]->original_url());
   EXPECT_EQ("", this->last_requests()[0]->request_origin());
 
   PostUpgradeChecks(store.get());
@@ -476,8 +484,8 @@
   ASSERT_EQ(LastResult::RESULT_TRUE, this->last_result());
   ASSERT_EQ(1u, this->last_requests().size());
   EXPECT_EQ(kRequestId, this->last_requests()[0]->request_id());
-  EXPECT_EQ(kUrl, this->last_requests()[0]->url());
-  EXPECT_EQ(kUrl2, this->last_requests()[0]->original_url());
+  EXPECT_EQ(Url1(), this->last_requests()[0]->url());
+  EXPECT_EQ(Url2(), this->last_requests()[0]->original_url());
   EXPECT_EQ(kRequestOrigin, this->last_requests()[0]->request_origin());
   EXPECT_EQ(0, static_cast<int>(this->last_requests()[0]->fail_state()));
 
@@ -496,8 +504,8 @@
       this->last_requests();
   ASSERT_EQ(1u, requests.size());
   EXPECT_EQ(kRequestId, requests[0]->request_id());
-  EXPECT_EQ(kUrl, requests[0]->url());
-  EXPECT_EQ(kUrl2, requests[0]->original_url());
+  EXPECT_EQ(Url1(), requests[0]->url());
+  EXPECT_EQ(Url2(), requests[0]->original_url());
   EXPECT_EQ(kRequestOrigin, requests[0]->request_origin());
   EXPECT_EQ(1, static_cast<int>(requests[0]->fail_state()));
   EXPECT_EQ(0, static_cast<int>(requests[0]->auto_fetch_notification_state()));
@@ -522,12 +530,12 @@
   this->InitializeStore(store.get());
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request1(kRequestId, Url1(), kClientId, creation_time,
                            kUserRequested);
   store->AddRequest(request1, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
                                    base::Unretained(this)));
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   store->AddRequest(request2, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
@@ -583,9 +591,9 @@
   this->InitializeStore(store.get());
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
-  request.set_original_url(kUrl2);
+  request.set_original_url(Url2());
 
   store->AddRequest(request, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
@@ -645,7 +653,7 @@
   this->InitializeStore(store.get());
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest original_request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest original_request(kRequestId, Url1(), kClientId, creation_time,
                                    kUserRequested);
   store->AddRequest(original_request, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
@@ -656,12 +664,12 @@
   base::Time new_creation_time =
       creation_time + base::TimeDelta::FromMinutes(1);
   // Try updating an existing request.
-  SavePageRequest updated_request(kRequestId, kUrl, kClientId,
+  SavePageRequest updated_request(kRequestId, Url1(), kClientId,
                                   new_creation_time, kUserRequested);
-  updated_request.set_original_url(kUrl2);
+  updated_request.set_original_url(Url2());
   updated_request.set_request_origin(kRequestOrigin);
   // Try to update a non-existing request.
-  SavePageRequest updated_request2(kRequestId2, kUrl, kClientId,
+  SavePageRequest updated_request2(kRequestId2, Url1(), kClientId,
                                    new_creation_time, kUserRequested);
   std::vector<SavePageRequest> requests_to_update{updated_request,
                                                   updated_request2};
@@ -701,12 +709,12 @@
   this->InitializeStore(store.get());
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request1(kRequestId, Url1(), kClientId, creation_time,
                            kUserRequested);
   store->AddRequest(request1, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
                                    base::Unretained(this)));
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   store->AddRequest(request2, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
@@ -765,7 +773,7 @@
   this->InitializeStore(store.get());
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest original_request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest original_request(kRequestId, Url1(), kClientId, creation_time,
                                    kUserRequested);
   store->AddRequest(original_request, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
@@ -795,7 +803,7 @@
   this->InitializeStore(store.get());
 
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest original_request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest original_request(kRequestId, Url1(), kClientId, creation_time,
                                    kUserRequested);
   store->AddRequest(original_request, RequestQueue::AddOptions(),
                     base::BindOnce(&RequestQueueStoreTestBase::AddRequestDone,
diff --git a/components/offline_pages/core/background/request_queue_unittest.cc b/components/offline_pages/core/background/request_queue_unittest.cc
index 460db16..b47800f 100644
--- a/components/offline_pages/core/background/request_queue_unittest.cc
+++ b/components/offline_pages/core/background/request_queue_unittest.cc
@@ -30,22 +30,27 @@
 namespace {
 // Data for request 1.
 const int64_t kRequestId = 42;
-const GURL kUrl("http://example.com");
 const ClientId kClientId("bookmark", "1234");
 // Data for request 2.
 const int64_t kRequestId2 = 77;
-const GURL kUrl2("http://test.com");
 const ClientId kClientId2("bookmark", "567");
 const bool kUserRequested = true;
 const int64_t kRequestId3 = 99;
 const int kOneWeekInSeconds = 7 * 24 * 60 * 60;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+GURL Url2() {
+  return GURL("http://test.com");
+}
+
 // Default request
-const SavePageRequest kEmptyRequest(0UL,
-                                    GURL(""),
-                                    ClientId("", ""),
-                                    base::Time(),
-                                    true);
+SavePageRequest EmptyRequest() {
+  return SavePageRequest(0UL, GURL(""), ClientId("", ""), base::Time(), true);
+}
 
 }  // namespace
 
@@ -53,7 +58,7 @@
 class RequestNotifierStub : public RequestNotifier {
  public:
   RequestNotifierStub()
-      : last_expired_request_(kEmptyRequest), total_expired_requests_(0) {}
+      : last_expired_request_(EmptyRequest()), total_expired_requests_(0) {}
 
   void NotifyAdded(const SavePageRequest& request) override {}
   void NotifyChanged(const SavePageRequest& request) override {}
@@ -210,7 +215,7 @@
 
 TEST_F(RequestQueueTest, AddRequest) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -229,7 +234,7 @@
 
 TEST_F(RequestQueueTest, RemoveRequest) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -258,7 +263,7 @@
 
 TEST_F(RequestQueueTest, RemoveSeveralRequests) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -266,7 +271,7 @@
   PumpLoop();
   ASSERT_EQ(kRequestId, last_added_request()->request_id());
 
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   queue()->AddRequest(request2, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -307,7 +312,7 @@
 
 TEST_F(RequestQueueTest, PauseAndResume) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -377,14 +382,14 @@
 // listing multiple items and removing the right item.
 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request1(kRequestId, Url1(), kClientId, creation_time,
                            kUserRequested);
   queue()->AddRequest(request1, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
                                      base::Unretained(this)));
   PumpLoop();
   ASSERT_EQ(request1.request_id(), last_added_request()->request_id());
-  SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+  SavePageRequest request2(kRequestId2, Url2(), kClientId2, creation_time,
                            kUserRequested);
   queue()->AddRequest(request2, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -420,7 +425,7 @@
 TEST_F(RequestQueueTest, MarkAttemptStarted) {
   // First add a request.  Retry count will be set to 0.
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -460,7 +465,7 @@
   // First add a request.  Retry count will be set to 0.
   base::Time creation_time = OfflineTimeNow();
   // This request is never put into the queue.
-  SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request1(kRequestId, Url1(), kClientId, creation_time,
                            kUserRequested);
 
   queue()->MarkAttemptStarted(
@@ -476,7 +481,7 @@
 
 TEST_F(RequestQueueTest, MarkAttemptAborted) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -509,7 +514,7 @@
   // First add a request.  Retry count will be set to 0.
   base::Time creation_time = OfflineTimeNow();
   // This request is never put into the queue.
-  SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request1(kRequestId, Url1(), kClientId, creation_time,
                            kUserRequested);
 
   queue()->MarkAttemptAborted(
@@ -525,7 +530,7 @@
 
 TEST_F(RequestQueueTest, MarkAttemptCompleted) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   queue()->AddRequest(request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
@@ -560,7 +565,7 @@
   base::Time creation_time =
       OfflineTimeNow() - base::TimeDelta::FromSeconds(2 * kOneWeekInSeconds);
 
-  SavePageRequest original_request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest original_request(kRequestId, Url1(), kClientId, creation_time,
                                    kUserRequested);
   queue()->AddRequest(original_request, RequestQueue::AddOptions(),
                       base::BindOnce(&RequestQueueTest::AddRequestDone,
diff --git a/components/offline_pages/core/background/save_page_request_unittest.cc b/components/offline_pages/core/background/save_page_request_unittest.cc
index e9ec7e8..6fef0daa 100644
--- a/components/offline_pages/core/background/save_page_request_unittest.cc
+++ b/components/offline_pages/core/background/save_page_request_unittest.cc
@@ -11,11 +11,19 @@
 
 namespace {
 const int64_t kRequestId = 42;
-const GURL kUrl("http://example.com");
-const GURL kUrl2("http://example.com/test");
 const ClientId kClientId("bookmark", "1234");
 const bool kUserRequested = true;
 const std::string kRequestOrigin = "abc.xyz";
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL Url1() {
+  return GURL("http://example.com");
+}
+GURL Url2() {
+  return GURL("http://example.com/test");
+}
+
 }  // namespace
 
 class SavePageRequestTest : public testing::Test {
@@ -27,11 +35,11 @@
 
 TEST_F(SavePageRequestTest, CreatePendingReqeust) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
-  request.set_original_url(kUrl2);
+  request.set_original_url(Url2());
   EXPECT_EQ(kRequestId, request.request_id());
-  EXPECT_EQ(kUrl, request.url());
+  EXPECT_EQ(Url1(), request.url());
   EXPECT_EQ(kClientId, request.client_id());
   EXPECT_EQ(creation_time, request.creation_time());
   EXPECT_EQ(base::Time(), request.last_attempt_time());
@@ -39,13 +47,13 @@
   EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE, request.request_state());
   EXPECT_EQ(0, request.started_attempt_count());
   EXPECT_EQ(0, request.completed_attempt_count());
-  EXPECT_EQ(kUrl2, request.original_url());
+  EXPECT_EQ(Url2(), request.original_url());
   EXPECT_EQ("", request.request_origin());
 }
 
 TEST_F(SavePageRequestTest, StartAndCompleteRequest) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
   request.set_request_origin(kRequestOrigin);
 
@@ -54,7 +62,7 @@
 
   // Most things don't change about the request.
   EXPECT_EQ(kRequestId, request.request_id());
-  EXPECT_EQ(kUrl, request.url());
+  EXPECT_EQ(Url1(), request.url());
   EXPECT_EQ(kClientId, request.client_id());
   EXPECT_EQ(creation_time, request.creation_time());
   EXPECT_EQ(kRequestOrigin, request.request_origin());
@@ -68,7 +76,7 @@
 
   // Again, most things don't change about the request.
   EXPECT_EQ(kRequestId, request.request_id());
-  EXPECT_EQ(kUrl, request.url());
+  EXPECT_EQ(Url1(), request.url());
   EXPECT_EQ(kClientId, request.client_id());
   EXPECT_EQ(creation_time, request.creation_time());
 
@@ -79,7 +87,7 @@
 
 TEST_F(SavePageRequestTest, StartAndAbortRequest) {
   base::Time creation_time = OfflineTimeNow();
-  SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
+  SavePageRequest request(kRequestId, Url1(), kClientId, creation_time,
                           kUserRequested);
 
   base::Time start_time = creation_time + base::TimeDelta::FromHours(3);
@@ -87,7 +95,7 @@
 
   // Most things don't change about the request.
   EXPECT_EQ(kRequestId, request.request_id());
-  EXPECT_EQ(kUrl, request.url());
+  EXPECT_EQ(Url1(), request.url());
   EXPECT_EQ(kClientId, request.client_id());
   EXPECT_EQ(creation_time, request.creation_time());
   EXPECT_EQ("", request.request_origin());
@@ -101,7 +109,7 @@
 
   // Again, most things don't change about the request.
   EXPECT_EQ(kRequestId, request.request_id());
-  EXPECT_EQ(kUrl, request.url());
+  EXPECT_EQ(Url1(), request.url());
   EXPECT_EQ(kClientId, request.client_id());
   EXPECT_EQ(creation_time, request.creation_time());
   EXPECT_EQ("", request.request_origin());
diff --git a/components/offline_pages/core/downloads/offline_item_conversions_unittest.cc b/components/offline_pages/core/downloads/offline_item_conversions_unittest.cc
index 3aa47c8e..d69ca8a2 100644
--- a/components/offline_pages/core/downloads/offline_item_conversions_unittest.cc
+++ b/components/offline_pages/core/downloads/offline_item_conversions_unittest.cc
@@ -21,8 +21,14 @@
 namespace offline_pages {
 
 namespace {
-const GURL kTestUrl("http://www.example.com");
-const GURL kTestOriginalUrl("http://www.exampleoriginalurl.com");
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("http://www.example.com");
+}
+GURL TestOriginalUrl() {
+  return GURL("http://www.exampleoriginalurl.com");
+}
 
 }  // namespace
 
@@ -37,9 +43,9 @@
   base::Time last_access_time = base::Time::Now();
   std::string title = "test title";
 
-  OfflinePageItem offline_page_item(kTestUrl, offline_id, client_id, file_path,
+  OfflinePageItem offline_page_item(TestUrl(), offline_id, client_id, file_path,
                                     file_size, creation_time);
-  offline_page_item.original_url_if_different = kTestOriginalUrl;
+  offline_page_item.original_url_if_different = TestOriginalUrl();
   offline_page_item.title = base::UTF8ToUTF16(title);
   offline_page_item.last_access_time = last_access_time;
   offline_page_item.file_missing_time = base::Time::Now();
@@ -48,8 +54,8 @@
       OfflineItemConversions::CreateOfflineItem(offline_page_item, true);
 
   EXPECT_EQ(ContentId(kOfflinePageNamespace, guid), offline_item.id);
-  EXPECT_EQ(kTestUrl, offline_item.page_url);
-  EXPECT_EQ(kTestOriginalUrl, offline_item.original_url);
+  EXPECT_EQ(TestUrl(), offline_item.page_url);
+  EXPECT_EQ(TestOriginalUrl(), offline_item.original_url);
   EXPECT_EQ(title, offline_item.title);
   EXPECT_EQ(file_path, offline_item.file_path);
   EXPECT_EQ(creation_time, offline_item.creation_time);
@@ -88,9 +94,9 @@
   int64_t request_id = 5;
   base::Time creation_time = base::Time::Now();
 
-  SavePageRequest save_page_request(request_id, kTestUrl, client_id,
+  SavePageRequest save_page_request(request_id, TestUrl(), client_id,
                                     creation_time, false);
-  save_page_request.set_original_url(kTestOriginalUrl);
+  save_page_request.set_original_url(TestOriginalUrl());
   save_page_request.set_request_state(SavePageRequest::RequestState::OFFLINING);
   save_page_request.set_fail_state(FailState::NETWORK_FAILED);
   save_page_request.set_pending_state(PendingState::PENDING_ANOTHER_DOWNLOAD);
@@ -99,9 +105,9 @@
       OfflineItemConversions::CreateOfflineItem(save_page_request);
 
   EXPECT_EQ(ContentId(kOfflinePageNamespace, guid), offline_item.id);
-  EXPECT_EQ(kTestUrl, offline_item.page_url);
-  EXPECT_EQ(kTestOriginalUrl, offline_item.original_url);
-  EXPECT_EQ(kTestUrl.host(), offline_item.title);
+  EXPECT_EQ(TestUrl(), offline_item.page_url);
+  EXPECT_EQ(TestOriginalUrl(), offline_item.original_url);
+  EXPECT_EQ(TestUrl().host(), offline_item.title);
   EXPECT_EQ(base::FilePath(), offline_item.file_path);
   EXPECT_EQ(creation_time, offline_item.creation_time);
   EXPECT_EQ(base::Time(), offline_item.completion_time);
diff --git a/components/offline_pages/core/model/add_page_task_unittest.cc b/components/offline_pages/core/model/add_page_task_unittest.cc
index 903ea15..bd8098ba 100644
--- a/components/offline_pages/core/model/add_page_task_unittest.cc
+++ b/components/offline_pages/core/model/add_page_task_unittest.cc
@@ -27,8 +27,6 @@
 namespace {
 
 const char kTestNamespace[] = "default";
-const GURL kTestUrl1("http://example.com");
-const GURL kTestUrl2("http://other.page.com");
 const int64_t kTestOfflineId1 = 1234LL;
 const ClientId kTestClientId1(kTestNamespace, "1234");
 const base::FilePath kTestFilePath(FILE_PATH_LITERAL("/test/path/file"));
@@ -40,6 +38,15 @@
 const std::string kTestAttribution = "attribution";
 const std::string kTestSnippet = "snippet";
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl1() {
+  return GURL("http://example.com");
+}
+GURL TestUrl2() {
+  return GURL("http://other.page.com");
+}
+
 }  // namespace
 
 class AddPageTaskTest : public ModelTaskTestBase {
@@ -93,11 +100,11 @@
 }
 
 TEST_F(AddPageTaskTest, AddPageWithAllFieldsSet) {
-  OfflinePageItem page(kTestUrl1, kTestOfflineId1, kTestClientId1,
+  OfflinePageItem page(TestUrl1(), kTestOfflineId1, kTestClientId1,
                        kTestFilePath, kTestFileSize, base::Time::Now());
   page.request_origin = kTestOrigin;
   page.title = kTestTitle;
-  page.original_url_if_different = kTestUrl2;
+  page.original_url_if_different = TestUrl2();
   page.system_download_id = kTestDownloadId;
   page.file_missing_time = base::Time::Now();
   page.digest = kTestDigest;
diff --git a/components/offline_pages/core/model/clear_storage_task_unittest.cc b/components/offline_pages/core/model/clear_storage_task_unittest.cc
index 7f48904..2d9e8a0 100644
--- a/components/offline_pages/core/model/clear_storage_task_unittest.cc
+++ b/components/offline_pages/core/model/clear_storage_task_unittest.cc
@@ -29,7 +29,6 @@
 
 namespace {
 
-const GURL kTestUrl("http://example.com");
 const int64_t kTestFileSize = 1 << 19;              // Make a page 512KB.
 const int64_t kFreeSpaceNormal = 1000 * (1 << 20);  // 1000MB free space.
 
diff --git a/components/offline_pages/core/model/delete_page_task_unittest.cc b/components/offline_pages/core/model/delete_page_task_unittest.cc
index 0c812ca..37c4a27 100644
--- a/components/offline_pages/core/model/delete_page_task_unittest.cc
+++ b/components/offline_pages/core/model/delete_page_task_unittest.cc
@@ -30,10 +30,17 @@
 namespace {
 
 const char kTestNamespace[] = "default";
-const GURL kTestUrl1("http://example.com");
-const GURL kTestUrl2("http://other.page.com");
 const ClientId kTestClientIdNoMatch(kTestNamespace, "20170905");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl1() {
+  return GURL("http://example.com");
+}
+GURL TestUrl2() {
+  return GURL("http://other.page.com");
+}
+
 GURL OriginalUrl() {
   return GURL("http://original.com");
 }
@@ -100,7 +107,7 @@
 TEST_F(DeletePageTaskTest, OfflinePageItemIsPopulated) {
   generator()->SetNamespace(kTestNamespace);
   OfflinePageItem page1 = generator()->CreateItemWithTempFile();
-  page1.url = kTestUrl1;
+  page1.url = TestUrl1();
   page1.original_url_if_different = OriginalUrl();
   page1.request_origin = "test-origin";
   page1.system_download_id = 1234;
@@ -130,11 +137,11 @@
 TEST_F(DeletePageTaskTest, DeletePageByUrlPredicate) {
   // Add 3 pages and try to delete 2 of them using url predicate.
   generator()->SetNamespace(kTestNamespace);
-  generator()->SetUrl(kTestUrl1);
+  generator()->SetUrl(TestUrl1());
   OfflinePageItem page1 = generator()->CreateItemWithTempFile();
   generator()->SetAccessCount(200);
   OfflinePageItem page2 = generator()->CreateItemWithTempFile();
-  generator()->SetUrl(kTestUrl2);
+  generator()->SetUrl(TestUrl2());
   OfflinePageItem page3 = generator()->CreateItemWithTempFile();
 
   store_test_util()->InsertItem(page1);
@@ -146,7 +153,7 @@
   EXPECT_TRUE(base::PathExists(page2.file_path));
   EXPECT_TRUE(base::PathExists(page3.file_path));
 
-  // Delete all pages with url contains example.com, which are with kTestUrl1.
+  // Delete all pages with url contains example.com, which are with TestUrl1().
   UrlPredicate predicate = base::BindRepeating([](const GURL& url) -> bool {
     return url.spec().find("example.com") != std::string::npos;
   });
@@ -181,10 +188,10 @@
 TEST_F(DeletePageTaskTest, DeletePageByUrlPredicateNotFound) {
   // Add 3 pages and try to delete 2 of them using url predicate.
   generator()->SetNamespace(kTestNamespace);
-  generator()->SetUrl(kTestUrl1);
+  generator()->SetUrl(TestUrl1());
   OfflinePageItem page1 = generator()->CreateItemWithTempFile();
   OfflinePageItem page2 = generator()->CreateItemWithTempFile();
-  generator()->SetUrl(kTestUrl2);
+  generator()->SetUrl(TestUrl2());
   OfflinePageItem page3 = generator()->CreateItemWithTempFile();
 
   store_test_util()->InsertItem(page1);
@@ -222,7 +229,7 @@
 TEST_F(DeletePageTaskTest, DeletePageForPageLimit) {
   // Add 3 pages, the kTestNamespace has a limit of 1 for page per url.
   generator()->SetNamespace(kTestNamespace);
-  generator()->SetUrl(kTestUrl1);
+  generator()->SetUrl(TestUrl1());
   // Guarantees that page1 will be deleted by making it older.
   base::Time now = OfflineTimeNow();
   generator()->SetLastAccessTime(now - base::TimeDelta::FromMinutes(5));
@@ -230,7 +237,7 @@
   generator()->SetLastAccessTime(now);
   OfflinePageItem page2 = generator()->CreateItemWithTempFile();
   OfflinePageItem page = generator()->CreateItem();
-  generator()->SetUrl(kTestUrl2);
+  generator()->SetUrl(TestUrl2());
   OfflinePageItem page3 = generator()->CreateItemWithTempFile();
 
   store_test_util()->InsertItem(page1);
@@ -264,11 +271,11 @@
 TEST_F(DeletePageTaskTest, DeletePageForPageLimit_UnlimitedNamespace) {
   // Add 3 pages, the kTestNamespace has a limit of 1 for page per url.
   generator()->SetNamespace(kDownloadNamespace);
-  generator()->SetUrl(kTestUrl1);
+  generator()->SetUrl(TestUrl1());
   OfflinePageItem page1 = generator()->CreateItemWithTempFile();
   OfflinePageItem page2 = generator()->CreateItemWithTempFile();
   OfflinePageItem page = generator()->CreateItem();
-  generator()->SetUrl(kTestUrl2);
+  generator()->SetUrl(TestUrl2());
   OfflinePageItem page3 = generator()->CreateItemWithTempFile();
 
   store_test_util()->InsertItem(page1);
diff --git a/components/offline_pages/core/model/mark_page_accessed_task_unittest.cc b/components/offline_pages/core/model/mark_page_accessed_task_unittest.cc
index 231cd7f..2b4eac5 100644
--- a/components/offline_pages/core/model/mark_page_accessed_task_unittest.cc
+++ b/components/offline_pages/core/model/mark_page_accessed_task_unittest.cc
@@ -16,12 +16,18 @@
 namespace offline_pages {
 
 namespace {
-const GURL kTestUrl("http://example.com");
 const int64_t kTestOfflineId = 1234LL;
 const char kTestClientNamespace[] = "default";
 const ClientId kTestClientId(kTestClientNamespace, "1234");
 const base::FilePath kTestFilePath(FILE_PATH_LITERAL("/test/path/file"));
 const int64_t kTestFileSize = 876543LL;
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("http://example.com");
+}
+
 }  // namespace
 
 class MarkPageAccessedTaskTest : public ModelTaskTestBase {
@@ -33,7 +39,7 @@
 };
 
 TEST_F(MarkPageAccessedTaskTest, MarkPageAccessed) {
-  OfflinePageItem page(kTestUrl, kTestOfflineId, kTestClientId, kTestFilePath,
+  OfflinePageItem page(TestUrl(), kTestOfflineId, kTestClientId, kTestFilePath,
                        kTestFileSize);
   store_test_util()->InsertItem(page);
 
@@ -43,7 +49,7 @@
   RunTask(std::move(task));
 
   auto offline_page = store_test_util()->GetPageByOfflineId(kTestOfflineId);
-  EXPECT_EQ(kTestUrl, offline_page->url);
+  EXPECT_EQ(TestUrl(), offline_page->url);
   EXPECT_EQ(kTestClientId, offline_page->client_id);
   EXPECT_EQ(kTestFileSize, offline_page->file_size);
   EXPECT_EQ(1, offline_page->access_count);
@@ -59,7 +65,7 @@
 }
 
 TEST_F(MarkPageAccessedTaskTest, MarkPageAccessedTwice) {
-  OfflinePageItem page(kTestUrl, kTestOfflineId, kTestClientId, kTestFilePath,
+  OfflinePageItem page(TestUrl(), kTestOfflineId, kTestClientId, kTestFilePath,
                        kTestFileSize);
   store_test_util()->InsertItem(page);
 
@@ -70,7 +76,7 @@
 
   auto offline_page = store_test_util()->GetPageByOfflineId(kTestOfflineId);
   EXPECT_EQ(kTestOfflineId, offline_page->offline_id);
-  EXPECT_EQ(kTestUrl, offline_page->url);
+  EXPECT_EQ(TestUrl(), offline_page->url);
   EXPECT_EQ(kTestClientId, offline_page->client_id);
   EXPECT_EQ(kTestFileSize, offline_page->file_size);
   EXPECT_EQ(1, offline_page->access_count);
diff --git a/components/offline_pages/core/model/offline_page_model_taskified_unittest.cc b/components/offline_pages/core/model/offline_page_model_taskified_unittest.cc
index 9ee01b29..7b821040 100644
--- a/components/offline_pages/core/model/offline_page_model_taskified_unittest.cc
+++ b/components/offline_pages/core/model/offline_page_model_taskified_unittest.cc
@@ -56,12 +56,6 @@
 using ClearStorageResult = ClearStorageTask::ClearStorageResult;
 
 namespace {
-const GURL kTestUrl("http://example.com");
-const GURL kTestUrl2("http://other.page.com");
-const GURL kTestUrlWithFragment("http://example.com#frag");
-const GURL kTestUrl2WithFragment("http://other.page.com#frag");
-const GURL kOtherUrl("http://foo");
-const GURL kFileUrl("file:///foo");
 const ClientId kTestClientId1(kDefaultNamespace, "1234");
 const ClientId kTestClientId2(kDefaultNamespace, "5678");
 const ClientId kTestUserRequestedClientId(kDownloadNamespace, "714");
@@ -74,6 +68,27 @@
 const char kTestDigest[] = "test digest";
 const int64_t kDownloadId = 42LL;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestUrl() {
+  return GURL("http://example.com");
+}
+GURL TestUrl2() {
+  return GURL("http://other.page.com");
+}
+GURL TestUrlWithFragment() {
+  return GURL("http://example.com#frag");
+}
+GURL TestUrl2WithFragment() {
+  return GURL("http://other.page.com#frag");
+}
+GURL OtherUrl() {
+  return GURL("http://foo");
+}
+GURL FileUrl() {
+  return GURL("file:///foo");
+}
+
 }  // namespace
 
 class OfflinePageModelTaskifiedTest : public testing::Test,
@@ -371,10 +386,11 @@
 
 // Tests saving successfully a non-user-requested offline page.
 TEST_F(OfflinePageModelTaskifiedTest, SavePageSuccessful) {
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
 
   int64_t offline_id = SavePageWithExpectedResult(
-      kTestUrl, kTestClientId1, kTestUrl2, kEmptyRequestOrigin,
+      TestUrl(), kTestClientId1, TestUrl2(), kEmptyRequestOrigin,
       std::move(archiver), SavePageResult::SUCCESS);
 
   EXPECT_EQ(1UL, test_utils::GetFileCountInDirectory(temporary_dir_path()));
@@ -382,7 +398,7 @@
   auto saved_page_ptr = store_test_util()->GetPageByOfflineId(offline_id);
   ASSERT_TRUE(saved_page_ptr);
 
-  EXPECT_EQ(kTestUrl, saved_page_ptr->url);
+  EXPECT_EQ(TestUrl(), saved_page_ptr->url);
   EXPECT_EQ(kTestClientId1.id, saved_page_ptr->client_id.id);
   EXPECT_EQ(kTestClientId1.name_space, saved_page_ptr->client_id.name_space);
   EXPECT_EQ(last_path_created_by_archiver(), saved_page_ptr->file_path);
@@ -390,7 +406,7 @@
   EXPECT_EQ(0, saved_page_ptr->access_count);
   EXPECT_EQ(0, saved_page_ptr->flags);
   EXPECT_EQ(kTestTitle, saved_page_ptr->title);
-  EXPECT_EQ(kTestUrl2, saved_page_ptr->original_url_if_different);
+  EXPECT_EQ(TestUrl2(), saved_page_ptr->original_url_if_different);
   EXPECT_EQ("", saved_page_ptr->request_origin);
   EXPECT_EQ(kTestDigest, saved_page_ptr->digest);
 
@@ -437,11 +453,12 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageSuccessfulWithSameOriginalUrl) {
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
 
   // Pass the original URL same as the final URL.
   int64_t offline_id = SavePageWithExpectedResult(
-      kTestUrl, kTestClientId1, kTestUrl, kEmptyRequestOrigin,
+      TestUrl(), kTestClientId1, TestUrl(), kEmptyRequestOrigin,
       std::move(archiver), SavePageResult::SUCCESS);
 
   EXPECT_EQ(1UL, test_utils::GetFileCountInDirectory(temporary_dir_path()));
@@ -449,7 +466,7 @@
   auto saved_page_ptr = store_test_util()->GetPageByOfflineId(offline_id);
   ASSERT_TRUE(saved_page_ptr);
 
-  EXPECT_EQ(kTestUrl, saved_page_ptr->url);
+  EXPECT_EQ(TestUrl(), saved_page_ptr->url);
   // The original URL should be empty.
   EXPECT_TRUE(saved_page_ptr->original_url_if_different.is_empty());
 
@@ -473,10 +490,11 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageSuccessfulWithRequestOrigin) {
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
 
   int64_t offline_id = SavePageWithExpectedResult(
-      kTestUrl, kTestClientId1, kTestUrl2, kTestRequestOrigin,
+      TestUrl(), kTestClientId1, TestUrl2(), kTestRequestOrigin,
       std::move(archiver), SavePageResult::SUCCESS);
 
   EXPECT_EQ(1UL, test_utils::GetFileCountInDirectory(temporary_dir_path()));
@@ -484,7 +502,7 @@
   auto saved_page_ptr = store_test_util()->GetPageByOfflineId(offline_id);
   ASSERT_TRUE(saved_page_ptr);
 
-  EXPECT_EQ(kTestUrl, saved_page_ptr->url);
+  EXPECT_EQ(TestUrl(), saved_page_ptr->url);
   EXPECT_EQ(kTestClientId1.id, saved_page_ptr->client_id.id);
   EXPECT_EQ(kTestClientId1.name_space, saved_page_ptr->client_id.name_space);
   EXPECT_EQ(last_path_created_by_archiver(), saved_page_ptr->file_path);
@@ -492,7 +510,7 @@
   EXPECT_EQ(0, saved_page_ptr->access_count);
   EXPECT_EQ(0, saved_page_ptr->flags);
   EXPECT_EQ(kTestTitle, saved_page_ptr->title);
-  EXPECT_EQ(kTestUrl2, saved_page_ptr->original_url_if_different);
+  EXPECT_EQ(TestUrl2(), saved_page_ptr->original_url_if_different);
   EXPECT_EQ(kTestRequestOrigin, saved_page_ptr->request_origin);
 
   histogram_tester()->ExpectUniqueSample(
@@ -515,8 +533,8 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageOfflineArchiverCancelled) {
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::ERROR_CANCELED);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+  auto archiver = BuildArchiver(TestUrl(), ArchiverResult::ERROR_CANCELED);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::CANCELLED);
 
@@ -539,8 +557,8 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageOfflineArchiverDeviceFull) {
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::ERROR_DEVICE_FULL);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+  auto archiver = BuildArchiver(TestUrl(), ArchiverResult::ERROR_DEVICE_FULL);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::DEVICE_FULL);
 
@@ -565,8 +583,8 @@
 TEST_F(OfflinePageModelTaskifiedTest,
        SavePageOfflineArchiverContentUnavailable) {
   auto archiver =
-      BuildArchiver(kTestUrl, ArchiverResult::ERROR_CONTENT_UNAVAILABLE);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+      BuildArchiver(TestUrl(), ArchiverResult::ERROR_CONTENT_UNAVAILABLE);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::CONTENT_UNAVAILABLE);
 
@@ -590,8 +608,8 @@
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageOfflineCreationFailed) {
   auto archiver =
-      BuildArchiver(kTestUrl, ArchiverResult::ERROR_ARCHIVE_CREATION_FAILED);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+      BuildArchiver(TestUrl(), ArchiverResult::ERROR_ARCHIVE_CREATION_FAILED);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::ARCHIVE_CREATION_FAILED);
 
@@ -616,7 +634,7 @@
 TEST_F(OfflinePageModelTaskifiedTest, SavePageOfflineArchiverReturnedWrongUrl) {
   auto archiver = BuildArchiver(GURL("http://other.random.url.com"),
                                 ArchiverResult::SUCCESSFULLY_CREATED);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::ARCHIVE_CREATION_FAILED);
 
@@ -646,7 +664,7 @@
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageLocalFileFailed) {
   SavePageWithExpectedResult(
-      kFileUrl, kTestClientId1, kTestUrl2, kEmptyRequestOrigin,
+      FileUrl(), kTestClientId1, TestUrl2(), kEmptyRequestOrigin,
       std::unique_ptr<OfflinePageTestArchiver>(), SavePageResult::SKIPPED);
 
   histogram_tester()->ExpectUniqueSample(
@@ -685,15 +703,16 @@
   // delayed_archiver_ptr will be valid until after first PumpLoop() call after
   // CompleteCreateArchive() is called. Keeping the raw pointer because the
   // ownership is transferring to the model.
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
   OfflinePageTestArchiver* delayed_archiver_ptr = archiver.get();
   delayed_archiver_ptr->set_delayed(true);
-  SavePageWithCallback(kTestUrl, kTestClientId1, GURL(), kEmptyRequestOrigin,
+  SavePageWithCallback(TestUrl(), kTestClientId1, GURL(), kEmptyRequestOrigin,
                        std::move(archiver), callback.Get());
 
   // Request to save another page, with request origin.
-  archiver = BuildArchiver(kTestUrl2, ArchiverResult::SUCCESSFULLY_CREATED);
-  SavePageWithCallback(kTestUrl2, kTestClientId2, GURL(), kTestRequestOrigin,
+  archiver = BuildArchiver(TestUrl2(), ArchiverResult::SUCCESSFULLY_CREATED);
+  SavePageWithCallback(TestUrl2(), kTestClientId2, GURL(), kTestRequestOrigin,
                        std::move(archiver), callback.Get());
 
   EXPECT_EQ(1UL, test_utils::GetFileCountInDirectory(temporary_dir_path()));
@@ -721,13 +740,13 @@
   ASSERT_TRUE(saved_page_ptr1);
   ASSERT_TRUE(saved_page_ptr2);
 
-  EXPECT_EQ(kTestUrl2, saved_page_ptr1->url);
+  EXPECT_EQ(TestUrl2(), saved_page_ptr1->url);
   EXPECT_EQ(kTestClientId2, saved_page_ptr1->client_id);
   EXPECT_EQ(saved_file_path1, saved_page_ptr1->file_path);
   EXPECT_EQ(kTestFileSize, saved_page_ptr1->file_size);
   EXPECT_EQ(kTestRequestOrigin, saved_page_ptr1->request_origin);
 
-  EXPECT_EQ(kTestUrl, saved_page_ptr2->url);
+  EXPECT_EQ(TestUrl(), saved_page_ptr2->url);
   EXPECT_EQ(kTestClientId1, saved_page_ptr2->client_id);
   EXPECT_EQ(saved_file_path2, saved_page_ptr2->file_path);
   EXPECT_EQ(kTestFileSize, saved_page_ptr2->file_size);
@@ -751,13 +770,14 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageOnBackground) {
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
   OfflinePageTestArchiver* archiver_ptr = archiver.get();
 
   OfflinePageModel::SavePageParams save_page_params;
-  save_page_params.url = kTestUrl;
+  save_page_params.url = TestUrl();
   save_page_params.client_id = kTestClientId1;
-  save_page_params.original_url = kTestUrl2;
+  save_page_params.original_url = TestUrl2();
   save_page_params.is_background = true;
   save_page_params.use_page_problem_detectors = false;
 
@@ -773,7 +793,7 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, SavePageWithNullArchiver) {
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, GURL(),
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, GURL(),
                              kEmptyRequestOrigin, nullptr,
                              SavePageResult::CONTENT_UNAVAILABLE);
   histogram_tester()->ExpectUniqueSample(
@@ -904,9 +924,9 @@
 TEST_F(OfflinePageModelTaskifiedTest, DeletePagesByUrlPredicate) {
   page_generator()->SetArchiveDirectory(temporary_dir_path());
   page_generator()->SetNamespace(kDefaultNamespace);
-  page_generator()->SetUrl(kTestUrl);
+  page_generator()->SetUrl(TestUrl());
   OfflinePageItem page1 = page_generator()->CreateItemWithTempFile();
-  page_generator()->SetUrl(kTestUrl2);
+  page_generator()->SetUrl(TestUrl2());
   OfflinePageItem page2 = page_generator()->CreateItemWithTempFile();
   InsertPageIntoStore(page1);
   InsertPageIntoStore(page2);
@@ -921,7 +941,7 @@
       [](const GURL& expected_url, const GURL& url) -> bool {
         return url == expected_url;
       },
-      kTestUrl);
+      TestUrl());
 
   model()->DeleteCachedPagesByURLPredicate(predicate, callback.Get());
   EXPECT_TRUE(task_queue()->HasRunningTask());
@@ -951,7 +971,7 @@
 
 TEST_F(OfflinePageModelTaskifiedTest, GetPageByOfflineId) {
   page_generator()->SetNamespace(kDefaultNamespace);
-  page_generator()->SetUrl(kTestUrl);
+  page_generator()->SetUrl(TestUrl());
   OfflinePageItem page = page_generator()->CreateItem();
   InsertPageIntoStore(page);
 
@@ -965,31 +985,31 @@
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, GetPagesWithCriteria_FinalUrl) {
-  page_generator()->SetUrl(kTestUrl);
+  page_generator()->SetUrl(TestUrl());
   OfflinePageItem page1 = page_generator()->CreateItem();
   InsertPageIntoStore(page1);
-  page_generator()->SetUrl(kTestUrl2);
+  page_generator()->SetUrl(TestUrl2());
   OfflinePageItem page2 = page_generator()->CreateItem();
   InsertPageIntoStore(page2);
 
-  // Search by kTestUrl.
+  // Search by TestUrl().
   base::MockCallback<MultipleOfflinePageItemCallback> callback;
   EXPECT_CALL(callback, Run(ElementsAre(page1)));
   PageCriteria criteria;
-  criteria.url = kTestUrl;
+  criteria.url = TestUrl();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   EXPECT_TRUE(task_queue()->HasRunningTask());
   PumpLoop();
 
-  // Search by kTestUrl2.
+  // Search by TestUrl2().
   EXPECT_CALL(callback, Run(ElementsAre(page2)));
-  criteria.url = kTestUrl2;
+  criteria.url = TestUrl2();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   PumpLoop();
 
   // Search by random url, which should return no pages.
   EXPECT_CALL(callback, Run(IsEmpty()));
-  criteria.url = kOtherUrl;
+  criteria.url = OtherUrl();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   EXPECT_TRUE(task_queue()->HasRunningTask());
   PumpLoop();
@@ -997,43 +1017,43 @@
 
 TEST_F(OfflinePageModelTaskifiedTest,
        GetPagesByUrl_FinalUrlWithFragmentStripped) {
-  page_generator()->SetUrl(kTestUrl);
+  page_generator()->SetUrl(TestUrl());
   OfflinePageItem page1 = page_generator()->CreateItem();
   InsertPageIntoStore(page1);
-  page_generator()->SetUrl(kTestUrl2WithFragment);
+  page_generator()->SetUrl(TestUrl2WithFragment());
   OfflinePageItem page2 = page_generator()->CreateItem();
   InsertPageIntoStore(page2);
 
-  // Search by kTestUrlWithFragment.
+  // Search by TestUrlWithFragment().
   base::MockCallback<MultipleOfflinePageItemCallback> callback;
   EXPECT_CALL(callback, Run(ElementsAre(page1)));
   PageCriteria criteria;
-  criteria.url = kTestUrlWithFragment;
+  criteria.url = TestUrlWithFragment();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   EXPECT_TRUE(task_queue()->HasRunningTask());
   PumpLoop();
 
-  // Search by kTestUrl2.
+  // Search by TestUrl2().
   EXPECT_CALL(callback, Run(ElementsAre(page2)));
-  criteria.url = kTestUrl2;
+  criteria.url = TestUrl2();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   EXPECT_TRUE(task_queue()->HasRunningTask());
   PumpLoop();
 
-  // Search by kTestUrl2WithFragment.
+  // Search by TestUrl2WithFragment().
   EXPECT_CALL(callback, Run(ElementsAre(page2)));
-  criteria.url = kTestUrl2WithFragment;
+  criteria.url = TestUrl2WithFragment();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   EXPECT_TRUE(task_queue()->HasRunningTask());
   PumpLoop();
 }
 
 TEST_F(OfflinePageModelTaskifiedTest, GetPagesWithCriteria_AllUrls) {
-  page_generator()->SetUrl(kTestUrl);
-  page_generator()->SetOriginalUrl(kTestUrl2);
+  page_generator()->SetUrl(TestUrl());
+  page_generator()->SetOriginalUrl(TestUrl2());
   OfflinePageItem page1 = page_generator()->CreateItem();
   InsertPageIntoStore(page1);
-  page_generator()->SetUrl(kTestUrl2);
+  page_generator()->SetUrl(TestUrl2());
   page_generator()->SetOriginalUrl(GURL());
   OfflinePageItem page2 = page_generator()->CreateItem();
   InsertPageIntoStore(page2);
@@ -1041,7 +1061,7 @@
   base::MockCallback<MultipleOfflinePageItemCallback> callback;
   EXPECT_CALL(callback, Run(UnorderedElementsAre(page1, page2)));
   PageCriteria criteria;
-  criteria.url = kTestUrl2;
+  criteria.url = TestUrl2();
   model()->GetPagesWithCriteria(criteria, callback.Get());
   PumpLoop();
 }
@@ -1084,9 +1104,10 @@
 #endif
 TEST_F(OfflinePageModelTaskifiedTest, MAYBE_CheckTempPagesSavedInCorrectDir) {
   // Save a temporary page.
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
   int64_t temporary_id = SavePageWithExpectedResult(
-      kTestUrl, kTestLastNClientId, GURL(), kEmptyRequestOrigin,
+      TestUrl(), kTestLastNClientId, GURL(), kEmptyRequestOrigin,
       std::move(archiver), SavePageResult::SUCCESS);
 
   std::unique_ptr<OfflinePageItem> temporary_page =
@@ -1124,9 +1145,9 @@
        MAYBE_CheckPersistenPagesSavedInCorrectDir) {
   // Save a persistent page that will be published to the public folder.
   auto archiver =
-      BuildArchiver(kTestUrl2, ArchiverResult::SUCCESSFULLY_CREATED);
+      BuildArchiver(TestUrl2(), ArchiverResult::SUCCESSFULLY_CREATED);
   int64_t persistent_id = SavePageWithExpectedResult(
-      kTestUrl2, kTestUserRequestedClientId, GURL(), kEmptyRequestOrigin,
+      TestUrl2(), kTestUserRequestedClientId, GURL(), kEmptyRequestOrigin,
       std::move(archiver), SavePageResult::SUCCESS);
 
   std::unique_ptr<OfflinePageItem> persistent_page =
@@ -1161,7 +1182,8 @@
 TEST_F(OfflinePageModelTaskifiedTest, MAYBE_PublishPageFailure) {
   // Save a persistent page that will report failure to be copied to a public
   // dir.
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
 
   // Expect that PublishArchive is called and force returning FILE_MOVE_FAILED.
   auto publisher = std::make_unique<OfflinePageTestArchivePublisher>(
@@ -1170,7 +1192,7 @@
   publisher->set_archive_attempt_failure(true);
   SetTestArchivePublisher(std::move(publisher));
 
-  SavePageWithFileMoveFailure(kTestUrl, kTestUserRequestedClientId, GURL(),
+  SavePageWithFileMoveFailure(TestUrl(), kTestUserRequestedClientId, GURL(),
                               kEmptyRequestOrigin, std::move(archiver));
 
   // Ensure that a histogram is emitted for the failure
@@ -1190,9 +1212,9 @@
   // Save a persistent page into our internal directory that will not be
   // published. We use a "browser actions" page for this purpose.
   std::unique_ptr<OfflinePageTestArchiver> test_archiver =
-      BuildArchiver(kTestUrl2, ArchiverResult::SUCCESSFULLY_CREATED);
+      BuildArchiver(TestUrl2(), ArchiverResult::SUCCESSFULLY_CREATED);
   int64_t persistent_id = SavePageWithExpectedResult(
-      kTestUrl2, kTestBrowserActionsClientId, GURL(), kEmptyRequestOrigin,
+      TestUrl2(), kTestBrowserActionsClientId, GURL(), kEmptyRequestOrigin,
       std::move(test_archiver), SavePageResult::SUCCESS);
 
   std::unique_ptr<OfflinePageItem> persistent_page =
@@ -1219,7 +1241,7 @@
   // The 'default' namespace has a limit of 1 per url.
   page_generator()->SetArchiveDirectory(temporary_dir_path());
   page_generator()->SetNamespace(kDefaultNamespace);
-  page_generator()->SetUrl(kTestUrl);
+  page_generator()->SetUrl(TestUrl());
   OfflinePageItem page1 = page_generator()->CreateItemWithTempFile();
   OfflinePageItem page2 = page_generator()->CreateItemWithTempFile();
   InsertPageIntoStore(page1);
@@ -1228,8 +1250,8 @@
   ResetResults();
 
   std::unique_ptr<OfflinePageTestArchiver> archiver(
-      BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED));
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED));
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::SUCCESS);
 
@@ -1363,8 +1385,9 @@
   FastForwardBy(OfflinePageModelTaskified::kClearStorageInterval / 2 +
                 base::TimeDelta::FromSeconds(1));
   // Saving a page should also immediately enqueue the ClearStorage task.
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::SUCCESS);
   last_scheduling_time = clock()->Now();
@@ -1469,8 +1492,9 @@
   // get expired.
   FastForwardBy(base::TimeDelta::FromDays(400));
   // Saving a page should also immediately enqueue the consistency check task.
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::SUCCESS);
   // Advance the delay to activate task execution.
@@ -1494,8 +1518,9 @@
   // maintenance tasks.
   base::MockCallback<MultipleOfflinePageItemCallback> callback;
   model()->GetAllPages(callback.Get());
-  auto archiver = BuildArchiver(kTestUrl, ArchiverResult::SUCCESSFULLY_CREATED);
-  SavePageWithExpectedResult(kTestUrl, kTestClientId1, kTestUrl2,
+  auto archiver =
+      BuildArchiver(TestUrl(), ArchiverResult::SUCCESSFULLY_CREATED);
+  SavePageWithExpectedResult(TestUrl(), kTestClientId1, TestUrl2(),
                              kEmptyRequestOrigin, std::move(archiver),
                              SavePageResult::SUCCESS);
   PumpLoop();
diff --git a/components/offline_pages/core/model/offline_page_model_utils_unittest.cc b/components/offline_pages/core/model/offline_page_model_utils_unittest.cc
index da92148..ad8af0e 100644
--- a/components/offline_pages/core/model/offline_page_model_utils_unittest.cc
+++ b/components/offline_pages/core/model/offline_page_model_utils_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
+#include "base/no_destructor.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -37,45 +38,50 @@
             OfflinePagesNamespaceEnumeration::BROWSER_ACTIONS);
 }
 
-static const struct GenerateUniqueFilenameTestCase {
+struct GenerateUniqueFilenameTestCase {
   const base::string16 page_title;
   const GURL page_url;
   const base::FilePath::CharType* expected_basename;
-} kGenerateUniqueFilenameCases[] = {
-    {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org-Main_Page.mhtml")},
-    {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org-Main_Page (1).mhtml")},
-    {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org-Main_Page (2).mhtml")},
-    {base::ASCIIToUTF16("wikipedia.org-Main_Page.mhtml"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org-Main_Page (3).mhtml")},
-    {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org-Main_Page (4).mhtml")},
-    {base::ASCIIToUTF16("wikipedia.org"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org.mhtml")},
-    {base::ASCIIToUTF16("wikipedia.org"),
-     GURL("http://www.wikipedia.org/Main_Page"),
-     FILE_PATH_LITERAL("wikipedia.org (1).mhtml")},
-    {base::UTF8ToUTF16("bücher.com"), GURL("http://xn--bcher-kva.com"),
-     FILE_PATH_LITERAL("bücher.com.mhtml")},
-    {base::ASCIIToUTF16("http://foo.com/path/title.html"),
-     GURL("http://foo.com"),
-     FILE_PATH_LITERAL("http___foo.com_path_title.html.mhtml")},
-    {base::ASCIIToUTF16("foo.com/foo-%40.html"),
-     GURL("http://foo.com/foo-%40.html"),
-     FILE_PATH_LITERAL("foo-@.html.mhtml")},
-    {base::ASCIIToUTF16("Viva%40%40%40-TestTitle"),
-     GURL("http://foo.com/%40.html"),
-     FILE_PATH_LITERAL("Viva%40%40%40-TestTitle.mhtml")},
 };
 
+const std::vector<GenerateUniqueFilenameTestCase>& UniqueFilenameCases() {
+  static base::NoDestructor<std::vector<GenerateUniqueFilenameTestCase>> cases{{
+      {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org-Main_Page.mhtml")},
+      {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org-Main_Page (1).mhtml")},
+      {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org-Main_Page (2).mhtml")},
+      {base::ASCIIToUTF16("wikipedia.org-Main_Page.mhtml"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org-Main_Page (3).mhtml")},
+      {base::ASCIIToUTF16("wikipedia.org-Main_Page"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org-Main_Page (4).mhtml")},
+      {base::ASCIIToUTF16("wikipedia.org"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org.mhtml")},
+      {base::ASCIIToUTF16("wikipedia.org"),
+       GURL("http://www.wikipedia.org/Main_Page"),
+       FILE_PATH_LITERAL("wikipedia.org (1).mhtml")},
+      {base::UTF8ToUTF16("bücher.com"), GURL("http://xn--bcher-kva.com"),
+       FILE_PATH_LITERAL("bücher.com.mhtml")},
+      {base::ASCIIToUTF16("http://foo.com/path/title.html"),
+       GURL("http://foo.com"),
+       FILE_PATH_LITERAL("http___foo.com_path_title.html.mhtml")},
+      {base::ASCIIToUTF16("foo.com/foo-%40.html"),
+       GURL("http://foo.com/foo-%40.html"),
+       FILE_PATH_LITERAL("foo-@.html.mhtml")},
+      {base::ASCIIToUTF16("Viva%40%40%40-TestTitle"),
+       GURL("http://foo.com/%40.html"),
+       FILE_PATH_LITERAL("Viva%40%40%40-TestTitle.mhtml")},
+  }};
+  return *cases;
+}
+
 // Crashing on Windows, see http://crbug.com/79365
 #if defined(OS_WIN)
 #define MAYBE_TestGenerateUniqueFilename DISABLED_TestGenerateUniqueFilename
@@ -86,7 +92,7 @@
   base::ScopedTempDir temp_dir;
   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
 
-  for (const auto& test_case : kGenerateUniqueFilenameCases) {
+  for (const auto& test_case : UniqueFilenameCases()) {
     base::FilePath path = model_utils::GenerateUniqueFilenameForOfflinePage(
         test_case.page_title, test_case.page_url, temp_dir.GetPath());
     // Writing a dummy file so the uniquifier can increase.
diff --git a/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc b/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc
index cc7c349..16d37b5a 100644
--- a/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc
+++ b/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc
@@ -61,8 +61,6 @@
 using testing::_;
 
 const char kTestID[] = "id";
-const GURL kTestURL("https://www.chromium.org");
-const GURL kTestURL2("https://www.chromium.org/2");
 const int64_t kTestOfflineID = 1111;
 const char kClientID[] = "client-id-1";
 const char kOperationName[] = "operation-1";
@@ -74,9 +72,18 @@
 const char kFaviconData[] = "favicon_data";
 const base::Time kRenderTime = base::Time::Now();
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestURL1() {
+  return GURL("https://www.chromium.org");
+}
+GURL TestURL2() {
+  return GURL("https://www.chromium.org/2");
+}
+
 PrefetchSuggestion TestSuggestion1() {
   PrefetchSuggestion suggestion;
-  suggestion.article_url = kTestURL;
+  suggestion.article_url = TestURL1();
   suggestion.article_title = "Article Title";
   suggestion.article_attribution = "From news.com";
   suggestion.article_snippet = "This is an article";
@@ -87,7 +94,7 @@
 
 PrefetchSuggestion TestSuggestion2() {
   PrefetchSuggestion suggestion;
-  suggestion.article_url = kTestURL2;
+  suggestion.article_url = TestURL2();
   suggestion.article_title = "Second Title";
   suggestion.article_attribution = "From fun.com";
   suggestion.article_snippet = "More fun stuff";
@@ -638,7 +645,7 @@
 TEST_F(PrefetchDispatcherTest, DispatcherReleasesBackgroundTask) {
   Configure(PrefetchServiceTestTaco::kContentSuggestions);
 
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url));
   RunUntilIdle();
@@ -687,7 +694,7 @@
 TEST_F(PrefetchDispatcherTest, RetryWithBackoffAfterFailedNetworkRequest) {
   Configure(PrefetchServiceTestTaco::kContentSuggestions);
 
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url));
   RunUntilIdle();
@@ -696,7 +703,7 @@
   RunUntilIdle();
 
   // Trigger another request to make sure we have more work to do.
-  PrefetchURL prefetch_url2(kTestID, kTestURL2, base::string16());
+  PrefetchURL prefetch_url2(kTestID, TestURL2(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url2));
   RunUntilIdle();
@@ -721,7 +728,7 @@
 TEST_F(PrefetchDispatcherTest, RetryWithoutBackoffAfterFailedNetworkRequest) {
   Configure(PrefetchServiceTestTaco::kContentSuggestions);
 
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url));
   RunUntilIdle();
@@ -730,7 +737,7 @@
   RunUntilIdle();
 
   // Trigger another request to make sure we have more work to do.
-  PrefetchURL prefetch_url2(kTestID, kTestURL2, base::string16());
+  PrefetchURL prefetch_url2(kTestID, TestURL2(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url2));
 
@@ -753,7 +760,7 @@
 
 TEST_F(PrefetchDispatcherTest, SuspendAfterFailedNetworkRequest) {
   Configure(PrefetchServiceTestTaco::kContentSuggestions);
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url));
   RunUntilIdle();
@@ -762,7 +769,7 @@
   RunUntilIdle();
 
   // Trigger another request to make sure we have more work to do.
-  PrefetchURL prefetch_url2(kTestID, kTestURL2, base::string16());
+  PrefetchURL prefetch_url2(kTestID, TestURL2(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url2));
 
@@ -801,7 +808,7 @@
 TEST_F(PrefetchDispatcherTest, SuspendRemovedAfterNewBackgroundTask) {
   Configure(PrefetchServiceTestTaco::kContentSuggestions);
 
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url));
   RunUntilIdle();
@@ -827,7 +834,7 @@
   EXPECT_EQ(nullptr, GetBackgroundTask());
 
   // Trigger another request to make sure we have more work to do.
-  PrefetchURL prefetch_url2(kTestID, kTestURL2, base::string16());
+  PrefetchURL prefetch_url2(kTestID, TestURL2(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url2));
 
@@ -843,7 +850,7 @@
 TEST_F(PrefetchDispatcherTest, ZineNoNetworkRequestsAfterNewURLs) {
   Configure(PrefetchServiceTestTaco::kContentSuggestions);
 
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_dispatcher()->AddCandidatePrefetchURLs(
       kSuggestedArticlesNamespace, std::vector<PrefetchURL>(1, prefetch_url));
   RunUntilIdle();
@@ -925,7 +932,7 @@
   Configure(PrefetchServiceTestTaco::kFeed);
   suggestions_provider_->SetSuggestions({TestSuggestion1()});
 
-  PrefetchURL prefetch_url(kTestID, kTestURL, base::string16());
+  PrefetchURL prefetch_url(kTestID, TestURL1(), base::string16());
   prefetch_service()->NewSuggestionsAvailable();
   RunUntilIdle();
 
diff --git a/components/offline_pages/core/prefetch/prefetch_importer_impl_unittest.cc b/components/offline_pages/core/prefetch/prefetch_importer_impl_unittest.cc
index b0ea704..5a5075c 100644
--- a/components/offline_pages/core/prefetch/prefetch_importer_impl_unittest.cc
+++ b/components/offline_pages/core/prefetch/prefetch_importer_impl_unittest.cc
@@ -20,12 +20,21 @@
 
 const int64_t kTestOfflineID = 111;
 const int64_t kTestOfflineIDFailedToAdd = 223344;
-const GURL kTestURL("http://sample.org");
-const GURL kTestFinalURL("https://sample.org/foo");
+
 const ClientId kTestClientID("Foo", "C56A4180-65AA-42EC-A945-5FD21DEC0538");
 const base::string16 kTestTitle = base::UTF8ToUTF16("Hello");
 const base::FilePath kTestFilePath(FILE_PATH_LITERAL("foo"));
 const int64_t kTestFileSize = 88888;
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestURL() {
+  return GURL("http://sample.org");
+}
+GURL TestFinalURL() {
+  return GURL("https://sample.org/foo");
+}
+
 GURL TestFaviconURL() {
   return GURL("http://sample.org/favicon.png");
 }
@@ -81,8 +90,8 @@
     PrefetchArchiveInfo archive;
     archive.offline_id = offline_id;
     archive.client_id = kTestClientID;
-    archive.url = kTestURL;
-    archive.final_archived_url = kTestFinalURL;
+    archive.url = TestURL();
+    archive.final_archived_url = TestFinalURL();
     archive.title = kTestTitle;
     archive.file_path = file_path;
     archive.file_size = kTestFileSize;
@@ -121,8 +130,8 @@
   EXPECT_TRUE(offline_page_model()->page_added());
   EXPECT_EQ(kTestOfflineID, offline_page_model()->last_added_page().offline_id);
   EXPECT_EQ(kTestClientID, offline_page_model()->last_added_page().client_id);
-  EXPECT_EQ(kTestFinalURL, offline_page_model()->last_added_page().url);
-  EXPECT_EQ(kTestURL,
+  EXPECT_EQ(TestFinalURL(), offline_page_model()->last_added_page().url);
+  EXPECT_EQ(TestURL(),
             offline_page_model()->last_added_page().original_url_if_different);
   EXPECT_EQ(kTestTitle, offline_page_model()->last_added_page().title);
   EXPECT_EQ(kTestFileSize, offline_page_model()->last_added_page().file_size);
diff --git a/components/offline_pages/core/prefetch/prefetch_request_fetcher_unittest.cc b/components/offline_pages/core/prefetch/prefetch_request_fetcher_unittest.cc
index 88b6f8d..1aa33cf4 100644
--- a/components/offline_pages/core/prefetch/prefetch_request_fetcher_unittest.cc
+++ b/components/offline_pages/core/prefetch/prefetch_request_fetcher_unittest.cc
@@ -21,8 +21,13 @@
 namespace offline_pages {
 
 namespace {
-const GURL kTestURL("http://exmaple.org");
 const char kTestMessage[] = "Testing";
+
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL TestURL() {
+  return GURL("http://example.org");
+}
 }  // namespace
 
 class PrefetchRequestFetcherTest : public PrefetchRequestTestBase {
@@ -90,7 +95,7 @@
   base::MockCallback<PrefetchRequestFetcher::FinishedCallback> callback;
   std::unique_ptr<PrefetchRequestFetcher> fetcher =
       PrefetchRequestFetcher::CreateForPost(
-          kTestURL, kTestMessage, /*testing_header_value=*/"", empty_request_,
+          TestURL(), kTestMessage, /*testing_header_value=*/"", empty_request_,
           shared_url_loader_factory(), callback.Get());
 
   PrefetchRequestStatus status;
diff --git a/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc b/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
index d19e10c..18d50b3 100644
--- a/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
+++ b/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
@@ -53,6 +53,10 @@
   expected_subframe_navigation_ = true;
 }
 
+void PageLoadMetricsTestWaiter::AddSubframeDataExpectation() {
+  expected_subframe_data_ = true;
+}
+
 void PageLoadMetricsTestWaiter::AddMinimumCompleteResourcesExpectation(
     int expected_minimum_complete_resources) {
   expected_minimum_complete_resources_ = expected_minimum_complete_resources;
@@ -152,6 +156,11 @@
         current_network_body_bytes_ += resource->encoded_body_length;
     }
     current_network_bytes_ += resource->delta_bytes;
+
+    // If |rfh| is a subframe with nonzero bytes, update the subframe
+    // data expectation.
+    if (rfh->GetParent() && resource->delta_bytes > 0)
+      expected_subframe_data_ = false;
   }
   if (ExpectationsSatisfied() && run_loop_)
     run_loop_->Quit();
@@ -264,15 +273,21 @@
   return !expected_subframe_navigation_;
 }
 
+bool PageLoadMetricsTestWaiter::SubframeDataExpectationsSatisfied() const {
+  return !expected_subframe_data_;
+}
+
 bool PageLoadMetricsTestWaiter::ExpectationsSatisfied() const {
   return subframe_expected_fields_.Empty() && page_expected_fields_.Empty() &&
          ResourceUseExpectationsSatisfied() &&
          WebFeaturesExpectationsSatisfied() &&
          SubframeNavigationExpectationsSatisfied() &&
-         expected_frame_sizes_.empty() && CpuTimeExpectationsSatisfied();
+         SubframeDataExpectationsSatisfied() && expected_frame_sizes_.empty() &&
+         CpuTimeExpectationsSatisfied();
 }
 
-PageLoadMetricsTestWaiter::WaiterMetricsObserver::~WaiterMetricsObserver() {}
+PageLoadMetricsTestWaiter::WaiterMetricsObserver::~WaiterMetricsObserver() =
+    default;
 
 PageLoadMetricsTestWaiter::WaiterMetricsObserver::WaiterMetricsObserver(
     base::WeakPtr<PageLoadMetricsTestWaiter> waiter)
diff --git a/components/page_load_metrics/browser/page_load_metrics_test_waiter.h b/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
index dde3bcb..728d9b1d 100644
--- a/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
+++ b/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
@@ -52,6 +52,9 @@
   // Wait for the subframe to navigate at least once.
   void AddSubframeNavigationExpectation();
 
+  // Wait for the subframe to load at least one byte.
+  void AddSubframeDataExpectation();
+
   // Add a minimum completed resource expectation.
   void AddMinimumCompleteResourcesExpectation(
       int expected_minimum_complete_resources);
@@ -216,6 +219,8 @@
 
   bool SubframeNavigationExpectationsSatisfied() const;
 
+  bool SubframeDataExpectationsSatisfied() const;
+
   std::unique_ptr<base::RunLoop> run_loop_;
 
   TimingFieldBitSet page_expected_fields_;
@@ -223,6 +228,7 @@
   std::bitset<static_cast<size_t>(blink::mojom::WebFeature::kNumberOfFeatures)>
       expected_web_features_;
   size_t expected_subframe_navigation_ = false;
+  bool expected_subframe_data_ = false;
 
   TimingFieldBitSet observed_page_fields_;
   std::bitset<static_cast<size_t>(blink::mojom::WebFeature::kNumberOfFeatures)>
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 9abdc06..161861f 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -760,6 +760,7 @@
           "<ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" />" hat Vorrang vor dieser Richtlinie. Eine Erweiterung auf der schwarzen Liste wird folglich nicht installiert, auch wenn sie von einer Website auf dieser Liste stammt.</translation>
 <translation id="214901426630414675">Duplexdruck einschränken</translation>
 <translation id="2149330464730004005">Farbdruck einschränken</translation>
+<translation id="2151831603578119302">Tastenkombinationen für Bedienungshilfen aktivieren</translation>
 <translation id="2156132677421487971">Konfigurieren von Richtlinien für <ph name="PRODUCT_NAME" />, ein Tool, mit dem Nutzer Inhalte von Tabs, Websites oder dem Desktop von einem Browser auf andere Bildschirme und Soundsysteme übertragen können.</translation>
 <translation id="2156755242840687300">Externe Druckserver aktiviert</translation>
 <translation id="2160336427036785721">Diese Richtlinie legt fest, wie viel Arbeitsspeicher eine einzelne Instanz von <ph name="PRODUCT_NAME" /> verbrauchen darf, bevor Tabs verworfen werden, um Arbeitsspeicher zu leeren. Der vom jeweiligen Tab verbrauchte Arbeitsspeicher wird freigegeben und der Tab muss neu geladen werden, wenn er wieder aufgerufen wird.
@@ -873,6 +874,7 @@
 <translation id="2294382669900758280">Das Abspielen von Videos in Android-Apps wird nicht berücksichtigt, auch wenn diese Richtlinie auf <ph name="TRUE" /> gesetzt ist.</translation>
 <translation id="2299220924812062390">Liste der aktivierten Plug-ins angeben</translation>
 <translation id="2303795211377219696">AutoFill für Kreditkarten aktivieren</translation>
+<translation id="2307496301287881990">Status von Display und Grafikkarte melden</translation>
 <translation id="2309390639296060546">Standardeinstellung für "Standortbestimmung"</translation>
 <translation id="2327252517317514801">Domains definieren, die auf die G Suite zugreifen dürfen</translation>
 <translation id="2328573323851533589">Mit dieser Richtlinie kann die Aktivierung oder Deaktivierung der Datenleckprüfung für Anmeldedaten in <ph name="PRODUCT_NAME" /> erzwungen werden.
@@ -1126,6 +1128,7 @@
       Wenn die Richtlinie deaktiviert oder nicht konfiguriert ist, werden für die Anmeldeseite die standardmäßigen Plattformeinstellungen für die Website-Isolierung verwendet.
       </translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> als Standardbrowser festlegen</translation>
+<translation id="2588071938417715443">Diese Richtlinie definiert den Zugriff auf steuerbare Funktionen in der Benutzeroberfläche der lokalen Erkennung (<ph name="CHROME_DEVICES_LINK" />), die sichtbare Geräte in der Umgebung des Nutzers und dessen registrierte Cloud-Geräte zeigt. Unter allen Betriebssystemen (mit Ausnahme von <ph name="PRODUCT_OS_NAME" />) können Nutzer über die Benutzeroberfläche für die lokale Erkennung <ph name="CLOUD_PRINT_NAME" /> auch klassische Drucker hinzufügen, die ihren Computern zugeordnet sind.</translation>
 <translation id="2592091433672667839">Dauer der Inaktivität, bevor im Händlermodus der Bildschirmschoner auf der Anmeldeseite erscheint</translation>
 <translation id="2592162121850992309">Wenn diese Richtlinie auf "true" gesetzt oder nicht konfiguriert ist, wird die Hardwarebeschleunigung aktiviert, sofern eine bestimmte GPU-Funktion nicht auf die schwarze Liste gesetzt wurde.
 
@@ -1368,19 +1371,6 @@
 <translation id="2960691910306063964">Authentifizierung ohne PIN für Hosts für den Remotezugriff aktivieren oder deaktivieren</translation>
 <translation id="2987155890997901449">ARC aktivieren</translation>
 <translation id="2987227569419001736">Verwendung der Web Bluetooth API steuern</translation>
-<translation id="3011301228198307065">Hiermit wird die Standard-URL für die Startseite in <ph name="PRODUCT_NAME" /> konfiguriert und verhindert, dass diese von Nutzern geändert werden kann.
-
-          Die Startseite wird über die Schaltfläche "Startseite" geöffnet. Die Seiten, die beim Hochfahren geöffnet werden, werden über die Richtlinien "RestoreOnStartup" kontrolliert.
-
-          Der Startseitentyp kann entweder auf eine URL, die Sie hier angeben, oder auf die "Neuer Tab"-Seite eingestellt werden. Wenn Sie sich für die "Neuer Tab"-Seite entscheiden, wird diese Richtlinie nicht angewendet.
-
-          Wenn Sie diese Einstellung aktivieren, können Nutzer ihre Startseiten-URL in <ph name="PRODUCT_NAME" /> nicht ändern, jedoch weiterhin ihre Startseite auf die "Neuer Tab"-Seite umstellen.
-
-          Ist diese Richtlinie nicht konfiguriert, können die Nutzer selbst eine Startseite wählen, sofern "HomepageIsNewTabPage" ebenfalls nicht konfiguriert ist.
-
-          Die URL muss ein Standardschema haben, z. B. "http://example.com" oder "https://example.com".
-
-          Diese Richtlinie steht nur bei Windows-Instanzen zur Verfügung, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, oder bei Windows 10 Pro- oder Enterprise-Instanzen, für die eine Geräteverwaltung eingerichtet ist.</translation>
 <translation id="3016255526521614822">Auf dem <ph name="PRODUCT_OS_NAME" />-Sperrbildschirm zulässige Notizen-Apps auf die weiße Liste setzen</translation>
 <translation id="3020064401262077616">Legt die Richtlinien für die Elternaufsicht fest. Diese werden nur auf Kinderkonten angewendet.</translation>
 <translation id="3021562480854470924">Rollback bei erreichter Anzahl von Meilensteinen ist erlaubt</translation>
@@ -2866,6 +2856,7 @@
       Wenn die VPN-Verbindung innerhalb einer VPN-App erstellt wird, hat diese Richtlinie keine Auswirkungen auf die Benutzeroberfläche der App. So könnte der Nutzer die App auch weiterhin zum Modifizieren der VPN-Verbindung verwenden.
 
       Diese Richtlinie soll gemeinsam mit der Funktion "Durchgehend aktives VPN" verwendet werden, mit der der Administrator festlegen kann, ob beim Start eine VPN-Verbindung hergestellt werden soll.</translation>
+<translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> aktivieren</translation>
 <translation id="5405289061476885481">Konfiguriert, welche Tastaturlayouts auf der <ph name="PRODUCT_OS_NAME" />-Anmeldeseite erlaubt sind.
 
       Ist für diese Richtlinie eine Liste mit IDs für Eingabemethoden festgelegt, werden die entsprechenden Eingabemethoden auf der Anmeldeseite bereitgestellt. Das oberste Listenelement ist vorab ausgewählt. Während bestimmte Nutzerdaten auf der Anmeldeseite markiert sind, wird zusätzlich zu den von dieser Richtlinie bereitgestellten Eingabemethoden auch die vom Nutzer zuletzt verwendete angeboten. Ist diese Richtlinie nicht konfiguriert, werden die Eingabemethoden auf der Anmeldeseite von der Sprache der Anmeldeseite abgeleitet. Werte, die keine gültigen IDs für Eingabemethoden sind, werden ignoriert.</translation>
@@ -3124,6 +3115,7 @@
           Wenn die Richtlinie nicht konfiguriert ist, wird das Gerät standardmäßig gesperrt.
 
           Falls das Gerät gesperrt werden soll, kann separat konfiguriert werden, ob <ph name="PRODUCT_OS_NAME" /> den Bildschirm vorher sperren soll oder nicht.</translation>
+<translation id="574983287620584622">Tastenkombinationen für Bedienungshilfen auf dem Anmeldebildschirm aktivieren</translation>
 <translation id="5755002458331714762"> Die Web Components v0 APIs (Shadow DOM v0, Custom Elements v0 und HTML Imports) wurden 2018 eingestellt und ab M80 standardmäßig deaktiviert. Mit dieser Richtlinie lassen sich die Funktionen selektiv bis M84 wieder aktivieren.
 
       Wenn die Richtlinie auf "True" gesetzt ist, sind die Funktionen von Web Components v0 für alle Websites aktiviert.
@@ -4250,6 +4242,15 @@
       Ist die Richtlinie auf "false" gestellt, werden keine Safe Browsing-Daten erhoben.
 
       Die Richtlinie wird nur angewendet, wenn die <ph name="CHROME_REPORTING_EXTENSION_NAME" /> aktiviert und das Gerät bei <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" /> registriert ist.</translation>
+<translation id="777734450201217641">Mit dieser Richtlinie aktivieren Sie auf dem Anmeldebildschirm die Tastenkombinationen für Bedienungshilfen.
+
+          Wenn diese Richtlinie auf "true" gesetzt ist, werden die Tastenkombinationen für Bedienungshilfen auf dem Anmeldebildschirm immer aktiviert.
+
+          Wenn diese Richtlinie auf "false" gesetzt ist, werden die Tastenkombinationen für Bedienungshilfen auf dem Anmeldebildschirm immer deaktiviert.
+
+          Wenn Sie diese Richtlinie konfigurieren, kann sie vom Nutzer nicht geändert oder überschrieben werden.
+
+          Wird sie nicht konfiguriert, werden die Tastenkombinationen für Bedienungshilfen auf dem Anmeldebildschirm standardmäßig aktiviert.</translation>
 <translation id="7777535871204167559">Externe Speichergeräte nur schreibgeschützt verwenden</translation>
 <translation id="7788511847830146438">Nach Profil</translation>
 <translation id="7792973482799545782">Keiner Website das Laden von blockierbaren gemischten Inhalten erlauben</translation>
@@ -4652,6 +4653,15 @@
 
       Achtung: Die Konfiguration von Versionsbeschränkungen wird nicht empfohlen, da Nutzer dann unter Umständen Softwareupdates und wichtige Sicherheitspatches nicht erhalten. Bei Beschränkung von Updates auf ein bestimmtes Versionspräfix besteht eventuell ein Risiko für die Nutzer.</translation>
 <translation id="8519264904050090490">Manuell festgelegte Ausnahme-URLs für verwalteten Nutzer</translation>
+<translation id="8519516251436131647">Mit dieser Richtlinie aktivieren Sie die Tastenkombinationen für Bedienungshilfen.
+
+          Wenn diese Richtlinie auf "true" gesetzt ist, sind die Tastenkombinationen für Bedienungshilfen immer aktiviert.
+
+          Wenn diese Richtlinie auf "false" gesetzt ist, sind die Tastenkombinationen für Bedienungshilfen immer deaktiviert.
+
+          Wenn Sie diese Richtlinie konfigurieren, kann sie vom Nutzer nicht geändert oder überschrieben werden.
+
+          Wird sie nicht konfiguriert, sind die Tastenkombinationen für Bedienungshilfen standardmäßig aktiviert.</translation>
 <translation id="8525526490824335042">Linux-Container</translation>
 <translation id="8538235451413605457">Konfiguriert die Anforderung an die zulässige Mindestversion von <ph name="PRODUCT_NAME" />. Versionen unter dem angegebenen Wert werden als veraltet angesehen und der Nutzer kann sich erst anmelden, nachdem das Betriebssystem aktualisiert wurde.
       Wenn die aktuelle Version sich während einer Nutzersitzung als veraltet herausstellt, wird die Abmeldung des Nutzers erzwungen.
@@ -4880,6 +4890,12 @@
 
           Ist diese Richtlinie nicht konfiguriert, wird "PromptOnAccess" verwendet und der Nutzer kann diese Einstellung ändern.</translation>
 <translation id="8911348623012274122">Mit dieser Richtlinie können Sie ein Limit für die Arbeitsspeichernutzung von Chrome festlegen</translation>
+<translation id="8911736066340032670">Mit dieser Richtlinie melden Sie Informationen rund um das Display, wie etwa die Aktualisierungsrate, sowie
+      Informationen im Zusammenhang mit der Grafikkarte, wie beispielsweise die Treiberversion.
+
+      Wenn diese Richtlinie auf "false" gesetzt oder nicht konfiguriert ist, wird der
+      Status von Display und Grafikkarte nicht gemeldet. Ist die Richtlinie auf "true" gesetzt, wird der
+      Status von Display und Grafikkarte gemeldet.</translation>
 <translation id="891435090623616439">Als JSON-String codiert, weitere Informationen unter <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Nutzern erlauben, installierte CA-Zertifikate zu verwalten.</translation>
 <translation id="8926275581598789324">Diese Richtlinie ist veraltet und wird in Version 82 von <ph name="PRODUCT_OS_NAME" /> entfernt. Bitte verwenden Sie stattdessen die Richtlinie "<ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />".
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 38915f3..0b6a40e 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -751,6 +751,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> tiene prioridad sobre esta política. Esto quiere decir que no se instalará ninguna extensión de la lista negra, incluso si proviene de un sitio en esta lista.</translation>
 <translation id="214901426630414675">Restringir el modo de impresión doble</translation>
 <translation id="2149330464730004005">Habilitar la impresión a color</translation>
+<translation id="2151831603578119302">Habilita las combinaciones de teclas para las funciones de accesibilidad</translation>
 <translation id="2156132677421487971">Configura las políticas para <ph name="PRODUCT_NAME" />, una función que permite que los usuarios envíen el contenido de las pestañas, los sitios o el escritorio del navegador a pantallas y sistemas de sonido remotos.</translation>
 <translation id="2156755242840687300">Habilita los servidores de impresión externos</translation>
 <translation id="2160336427036785721">Configura la cantidad de memoria que puede usar una única instancia de <ph name="PRODUCT_NAME" /> antes de que se empiecen a descartar las pestañas (es decir que se liberará la memoria que utiliza la pestaña, la cual se deberá volver a cargar cuando se seleccione), a fin de ahorrar memoria.
@@ -859,6 +860,7 @@
 <translation id="2294382669900758280">No se tiene en cuenta la reproducción de video en las apps de Android, incluso si esta política se establece como <ph name="TRUE" />.</translation>
 <translation id="2299220924812062390">Especificar una lista de complementos habilitados</translation>
 <translation id="2303795211377219696">Habilitar la función Autocompletar para tarjetas de crédito</translation>
+<translation id="2307496301287881990">Informa los estados de la tarjeta gráfica y la pantalla</translation>
 <translation id="2309390639296060546">Configuración de geolocalización predeterminada</translation>
 <translation id="2327252517317514801">Definir los dominios con permiso para acceder a G Suite</translation>
 <translation id="2328573323851533589">Se puede usar esta política para forzar la habilitación o inhabilitación de la búsqueda de filtraciones de credenciales en <ph name="PRODUCT_NAME" />.
@@ -1112,6 +1114,7 @@
       Si se inhabilita la política o no se configura, se usará la configuración predeterminada de aislamiento de sitios de la plataforma para la pantalla de acceso.
       </translation>
 <translation id="2587719089023392205">Establecer <ph name="PRODUCT_NAME" /> como navegador predeterminado</translation>
+<translation id="2588071938417715443">Esta política establece el acceso a las funciones controlables de la IU de descubrimiento local (<ph name="CHROME_DEVICES_LINK" />) que muestra los dispositivos detectables cerca del usuario y los dispositivos en la nube que están registrados con ellos. En todos los sistemas operativos, excepto en <ph name="PRODUCT_OS_NAME" />, la IU de descubrimiento local también permite que los usuarios agreguen a <ph name="CLOUD_PRINT_NAME" /> impresoras clásicas conectadas a sus computadoras.</translation>
 <translation id="2592091433672667839">Duración de la inactividad antes de que se muestre el protector de pantalla en el modo de venta</translation>
 <translation id="2592162121850992309">Si esta política se configura como verdadera o no se configura, se habilitará la aceleración de hardware a menos que una función determinada de la GPU esté en la lista negra.
 
@@ -1354,19 +1357,6 @@
 <translation id="2960691910306063964">Habilitar o inhabilitar la autenticación sin PIN para hosts de acceso remoto</translation>
 <translation id="2987155890997901449">Habilitar ARC</translation>
 <translation id="2987227569419001736">Controlar el uso de la API de Bluetooth web</translation>
-<translation id="3011301228198307065">Configura la URL de la página principal predeterminada en <ph name="PRODUCT_NAME" /> y evita que los usuarios la modifiquen.
-
-          La página principal es la que se abre con el botón Página principal. Las páginas que se abren al inicio se controlan a través de las políticas RestoreOnStartup.
-
-          El tipo de página principal puede configurarse como una URL que se especifica aquí o establecerse en la página Nueva pestaña. Si se selecciona la página Nueva pestaña, no se aplicará esta política.
-
-          Si se habilita esta configuración, los usuarios no podrán cambiar la URL de la página principal en <ph name="PRODUCT_NAME" />, pero podrán elegir la página Nueva pestaña como principal.
-
-          Si no se establecen esta política ni HomepageIsNewTabPage, el usuario podrá elegir la página principal.
-
-          La URL debe tener un esquema estándar, p. ej., "http://ejemplo.com" o "https://ejemplo.com".
-
-          Esta política solo está disponible en instancias de Windows vinculadas a un dominio de <ph name="MS_AD_NAME" /> o instancias de Windows 10 Pro o Enterprise habilitadas para la administración de dispositivos.</translation>
 <translation id="3016255526521614822">Incluir en la lista blanca las apps para tomar notas que se permiten en la pantalla bloqueada de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Controla las políticas de supervisión parental, que se aplican solo a las cuentas de menores de edad.</translation>
 <translation id="3021562480854470924">Cantidad de hitos que se permiten en la reversión</translation>
@@ -2853,6 +2843,7 @@
       Si se crea la conexión VPN mediante una app de VPN, esta política no modificará la IU de la app. Por lo tanto, es posible que el usuario aún pueda usar la app para modificar la conexión VPN.
 
       Esta política está diseñada para usarse junto con la función "VPN siempre activada", que permite que el administrador decida establecer una conexión VPN en el inicio.</translation>
+<translation id="5401696449591951427">Habilita <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Establece los diseños de teclado compatibles con la pantalla de acceso de <ph name="PRODUCT_OS_NAME" />.
 
       Si esta política se establece como una lista de identificadores de método de entrada, estos métodos estarán disponibles en la pantalla de acceso y se preseleccionará el primero de ellos. Cuando se activa un módulo de sesión de usuario en la pantalla de acceso, el último método de entrada que este utilizó estará disponible junto con aquellos que especifica esta política. Si no se establece esta política, los métodos de entrada de la pantalla de acceso se obtendrán a partir de la configuración regional que se muestra en la pantalla de acceso. Se ignorarán los valores que no sean identificadores válidos de métodos de entrada.</translation>
@@ -3113,6 +3104,7 @@
           Si no se configura esta política, se implementará la acción predeterminada, es decir, la suspensión.
 
           Si la acción es la suspensión, <ph name="PRODUCT_OS_NAME" /> se podrá configurar por separado para que la pantalla se bloquee o no antes de la suspensión.</translation>
+<translation id="574983287620584622">Habilita las combinaciones de teclas para las funciones de accesibilidad en la pantalla de acceso</translation>
 <translation id="5755002458331714762"> En 2018, las API de Web Components v0 (Shadow DOM v0, Custom Elements v0 y HTML Imports) dejaron de estar disponibles. Además, se inhabilitaron de forma predeterminada a partir de la versión M80. Esta política permite volver a habilitar estas funciones de forma selectiva hasta la versión M84.
 
       Si se establece esta política como verdadera, se habilitarán las funciones de Web Components v0 para todos los sitios.
@@ -4255,6 +4247,15 @@
       Si se establece como falsa, no se recopilarán los datos de "Navegación segura".
 
       Esta política solo es válida si se habilita la extensión <ph name="CHROME_REPORTING_EXTENSION_NAME" />, y la máquina está inscrita en <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Habilita las combinaciones de teclas para las funciones de accesibilidad en la pantalla de acceso.
+
+          Si se establece como verdadera esta política, las combinaciones de teclas para las funciones de accesibilidad estarán siempre habilitadas en la pantalla de acceso.
+
+          Si se establece como falsa, las combinaciones de teclas para las funciones de accesibilidad estarán siempre inhabilitadas en la pantalla de acceso.
+
+          Si estableces esta política, los usuarios no podrán cambiarla ni anularla.
+
+          Si no la estableces, las combinaciones de teclas para las funciones de accesibilidad estarán habilitadas de forma predeterminada en la pantalla de acceso.</translation>
 <translation id="7777535871204167559">Tratar los dispositivos de almacenamiento externo como de solo lectura</translation>
 <translation id="7788511847830146438">Por perfil</translation>
 <translation id="7792973482799545782">No permitir que ningún sitio cargue contenido mixto bloqueable</translation>
@@ -4679,6 +4680,15 @@
 
       Advertencia: No se recomienda configurar restricciones de la versión, ya que pueden impedir que los usuarios reciban actualizaciones de software y correcciones de seguridad muy importantes. La restricción de las actualizaciones a un prefijo de una versión específica puede poner en riesgo a los usuarios.</translation>
 <translation id="8519264904050090490">Direcciones URL de excepción manual de usuario administrado</translation>
+<translation id="8519516251436131647">Habilita las combinaciones de teclas para las funciones de accesibilidad.
+
+          Si se establece esta política como verdadera, las combinaciones de teclas para las funciones de accesibilidad estarán siempre habilitadas.
+
+          Si se establece como falsa, las combinaciones de teclas para las funciones de accesibilidad estarán siempre inhabilitadas.
+
+          Si estableces esta política, los usuarios no podrán cambiarla ni anularla.
+
+          Si no la estableces, las combinaciones de teclas para las funciones de accesibilidad estarán habilitadas de forma predeterminada.</translation>
 <translation id="8525526490824335042">Contenedor de Linux</translation>
 <translation id="8538235451413605457">Configura los requisitos de la versión mínima permitida de <ph name="PRODUCT_NAME" />. Las versiones anteriores se tratan como obsoletas, y es posible que el dispositivo no permita acceder al usuario si no actualiza el SO.
       Si la versión actual se vuelve obsoleta durante la sesión de usuario, se lo forzará al usuario a salir.
@@ -4917,6 +4927,12 @@
 
           Si no se establece esta política, se utilizará "PromptOnAccess" y el usuario podrá cambiarla.</translation>
 <translation id="8911348623012274122">Establecer el límite de memoria para las instancias de Chrome</translation>
+<translation id="8911736066340032670">Informa datos relacionados con la pantalla, como la frecuencia de actualización, y
+      con la tarjeta gráfica, como la versión del controlador.
+
+      Si se establece la política como falsa o no se establece, no se informarán
+      los estados de la pantalla y la tarjeta gráfica. Si se establece como verdadera, se informarán
+      estos estados.</translation>
 <translation id="891435090623616439">codificada como cadena JSON; para obtener detalles, se puede consultar <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Permite que los usuarios administren los Certificados de CA instalados</translation>
 <translation id="8926275581598789324">Ten en cuenta que esta política es obsoleta y se eliminará en la versión 82 de <ph name="PRODUCT_OS_NAME" />. En su lugar, utiliza <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index 7c8ded14..332e947 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -769,6 +769,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> prevalece sobre esta política, lo que significa que las extensiones incluidas en la lista negra no se instalarán aunque procedan de un sitio web incluido en esta lista.</translation>
 <translation id="214901426630414675">Restringir impresión por las dos caras</translation>
 <translation id="2149330464730004005">Habilitar impresión en color</translation>
+<translation id="2151831603578119302">Habilitar las combinaciones de teclas para las funciones de accesibilidad</translation>
 <translation id="2156132677421487971">Configura las políticas de <ph name="PRODUCT_NAME" />, una función que permite que los usuarios envíen contenido de las pestañas, los sitios web o el escritorio desde el navegador a pantallas y sistemas de sonido remotos.</translation>
 <translation id="2156755242840687300">Servidores de impresión externos habilitados</translation>
 <translation id="2160336427036785721">Configura la cantidad de memoria que una única instancia de <ph name="PRODUCT_NAME" /> puede usar antes de que se empiecen a descartar pestañas (es decir, se liberará la memoria que usa una pestaña y esta se tendrá que volver a cargar cuando se vuelva a acceder a ella) para ahorrar memoria.
@@ -882,6 +883,7 @@
 <translation id="2294382669900758280">La reproducción de vídeo en las aplicaciones para Android no se tiene en cuenta, aunque se haya asignado el valor <ph name="TRUE" /> a esta política.</translation>
 <translation id="2299220924812062390">Especificar una lista de complementos habilitados</translation>
 <translation id="2303795211377219696">Habilitar la función Autocompletar para tarjetas de crédito</translation>
+<translation id="2307496301287881990">Informar del estado de la pantalla y los gráficos</translation>
 <translation id="2309390639296060546">Configuración de ubicación geográfica predeterminada</translation>
 <translation id="2327252517317514801">Definir los dominios autorizados para acceder a G Suite</translation>
 <translation id="2328573323851533589">Esta política se puede utilizar para habilitar o inhabilitar de forma forzada la comprobación de filtraciones de credenciales en <ph name="PRODUCT_NAME" />.
@@ -1141,6 +1143,7 @@
       Si la política no se configura o se inhabilita, se utilizarán los ajustes predeterminados de aislamiento de sitios web de la plataforma para la pantalla de inicio de sesión.
       </translation>
 <translation id="2587719089023392205">Establecer <ph name="PRODUCT_NAME" /> como navegador predeterminado</translation>
+<translation id="2588071938417715443">Esta política determina el acceso a las funciones controlables de la interfaz de búsqueda local (<ph name="CHROME_DEVICES_LINK" />) que muestra los dispositivos visibles cercanos al usuario, así como los dispositivos en la nube que tenga registrados. En todos los sistemas operativos, excepto <ph name="PRODUCT_OS_NAME" />, la interfaz de búsqueda local también permite a los usuarios añadir a <ph name="CLOUD_PRINT_NAME" /> las impresoras clásicas conectadas a sus ordenadores.</translation>
 <translation id="2592091433672667839">Duración de la inactividad antes de que se muestre el protector de pantalla en el modo de venta</translation>
 <translation id="2592162121850992309">Si se asigna el valor "True" a esta política o no se le asigna ningún valor, se habilitará la aceleración por hardware a no ser que se incluya una función de GPU determinada en la lista negra.
 
@@ -1392,19 +1395,6 @@
 <translation id="2960691910306063964">Habilitar o inhabilitar la autenticación sin PIN para host de acceso remoto</translation>
 <translation id="2987155890997901449">Habilitar ARC</translation>
 <translation id="2987227569419001736">Controlar el uso de la API Bluetooth web</translation>
-<translation id="3011301228198307065">Permite configurar la URL de la página principal predeterminada de <ph name="PRODUCT_NAME" /> y evita que los usuarios la modifiquen.
-
-          La página principal es la página que se abre al hacer clic en el botón Página de inicio. Las páginas que se abren al iniciarse el navegador están controladas por las políticas RestoreOnStartup.
-
-          Puedes definir que la página principal sea una URL que especifiques aquí o que sea la página Nueva pestaña. Si seleccionas la página Nueva pestaña, esta política no se tendrá en cuenta.
-
-          Si habilitas esta opción, los usuarios no podrán modificar la URL de la página principal de <ph name="PRODUCT_NAME" />, pero podrán seguir seleccionando la página Nueva pestaña como su página principal.
-
-          Si no se define esta política ni tampoco se define HomepageIsNewTabPage, el usuario podrá seleccionar la página principal que quiera.
-
-          La URL debe tener una estructura estándar, como "http://example.com" o "https://example.com".
-
-          Esta política solo está disponible en instancias de Windows que estén vinculadas a un dominio de <ph name="MS_AD_NAME" /> y en instancias de Windows 10 Pro o Enterprise que se hayan registrado para gestionar dispositivos.</translation>
 <translation id="3016255526521614822">Aplicaciones para tomar notas incluidas en la lista blanca que están permitidas en la pantalla de bloqueo de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Controla las políticas de supervisión parental, que se aplican exclusivamente a las cuentas infantiles.</translation>
 <translation id="3021562480854470924">Se permite restaurar el número de eventos clave</translation>
@@ -2945,6 +2935,7 @@
       Si la conexión VPN se crea mediante una aplicación VPN, la interfaz de la aplicación no se verá afectada por esta política. Por lo tanto, es posible que el usuario pueda utilizar la aplicación para modificar la conexión VPN.
 
       Esta política puede usarse con la función "VPN siempre activada", que permite al administrador establecer una conexión VPN al iniciar.</translation>
+<translation id="5401696449591951427">Habilitar <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Establece los diseños de teclado que se permiten en la pantalla de inicio de sesión de <ph name="PRODUCT_OS_NAME" />.
 
       Si se asigna una lista de identificadores de métodos de introducción a esta política, esos métodos estarán disponibles en la pantalla de inicio de sesión. El primer método de introducción estará preseleccionado. El grupo de un usuario aparece centrado en la pantalla de inicio de sesión, pero también se mostrará el último método de introducción por el usuario junto a los métodos de introducción proporcionados por esta política. Si esta política no se configura, los métodos de introducción de la pantalla de inicio de sesión procederán de la configuración regional en la que se muestre esa pantalla. Los valores que no sean identificadores de métodos de introducción válidos se ignorarán.</translation>
@@ -3212,6 +3203,7 @@
           Cuando no se establece esta política, se lleva a cabo una acción predeterminada (es decir, la suspensión).
 
           Si la acción es la suspensión, <ph name="PRODUCT_OS_NAME" /> se puede configurar por separado para bloquear o no la pantalla antes de entrar en modo de suspensión.</translation>
+<translation id="574983287620584622">Habilitar las combinaciones de teclas para las funciones de accesibilidad en la pantalla de inicio de sesión</translation>
 <translation id="5755002458331714762"> Las API v0 de componentes web (Shadow DOM v0, Custom Elements v0 y HTML Imports) están obsoletas desde 2018 y se han inhabilitado de forma predeterminada desde M80. Esta política permite volver a habilitar estas funciones de forma selectiva hasta M84.
 
       Si se le asigna el valor "true" a esta política, las funciones v0 de los componentes web se habilitarán para todos los sitios web.
@@ -4376,6 +4368,15 @@
       Si se le asigna el valor "False", no se recogen datos de Navegación Segura.
 
       Esta política solo es efectiva cuando la extensión <ph name="CHROME_REPORTING_EXTENSION_NAME" /> está habilitada y el equipo está registrado en <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Esta política habilita las combinaciones de teclas para las funciones de accesibilidad en la pantalla de inicio de sesión.
+
+          Si se asigna el valor "true" a esta política, las combinaciones de teclas para las funciones de accesibilidad estarán siempre habilitadas en la pantalla de inicio de sesión.
+
+          Si se le asigna el valor "false", las combinaciones de teclas para las funciones de accesibilidad estarán siempre inhabilitadas en la pantalla de inicio de sesión.
+
+          Si se asigna un valor a esta política, los usuarios no podrán cambiarlo ni anularlo.
+
+          Si no se le asigna ningún valor, las combinaciones de teclas para las funciones de accesibilidad estarán habilitadas de forma predeterminada en la pantalla de inicio de sesión.</translation>
 <translation id="7777535871204167559">Usar los dispositivos de almacenamiento externo como dispositivos de solo lectura</translation>
 <translation id="7788511847830146438">Por perfil</translation>
 <translation id="7792973482799545782">Se usa para impedir que ningún sitio web pueda cargar contenido mixto bloqueable.</translation>
@@ -4785,6 +4786,15 @@
 
       Advertencia: No se recomienda configurar restricciones de versiones porque pueden evitar que los usuarios reciban actualizaciones de software y correcciones de seguridad muy importantes. Restringir las actualizaciones al prefijo de una versión específica podría suponer un riesgo para los usuarios.</translation>
 <translation id="8519264904050090490">URLs de excepción manual de usuario administrado</translation>
+<translation id="8519516251436131647">Esta política habilita las combinaciones de teclas para las funciones de accesibilidad.
+
+          Si se asigna el valor "true" a esta política, las combinaciones de teclas para las funciones de accesibilidad estarán siempre habilitadas.
+
+          Si se le asigna el valor "false", las combinaciones de teclas para las funciones de accesibilidad estarán siempre inhabilitadas.
+
+          Si se asigna un valor a esta política, los usuarios no podrán cambiarlo ni anularlo.
+
+          Si no se le asigna ningún valor, las combinaciones de teclas para las funciones de accesibilidad estarán habilitadas de forma predeterminada.</translation>
 <translation id="8525526490824335042">Contenedor de Linux</translation>
 <translation id="8538235451413605457">Configura el requisito de la versión mínima permitida de <ph name="PRODUCT_NAME" />. Las versiones que se incluyen a continuación se consideran obsoletas y los dispositivos no permitirán que los usuarios inicien sesión antes de actualizar el SO.
      Si la versión actual queda obsoleta durante una sesión, se cerrará la sesión del usuario de manera forzada.
@@ -5021,6 +5031,12 @@
 
           Si no se establece esta política, se utilizará PromptOnAccess y el usuario podrá modificarla.</translation>
 <translation id="8911348623012274122">Define el límite de memoria de las instancias de Chrome</translation>
+<translation id="8911736066340032670">Proporciona información relacionada con la pantalla, como la frecuencia de actualización, e
+      información relacionada con los gráficos, como la versión de controlador.
+
+      Si se asigna el valor "false" a esta política o no se le asigna ninguno, no se proporcionará información
+      sobre el estado de la pantalla y los gráficos. Si se le asigna el valor "true", se proporcionará información
+      sobre el estado de la pantalla y los gráficos.</translation>
 <translation id="891435090623616439">codificado como cadena JSON, consulta <ph name="COMPLEX_POLICIES_URL" /> para obtener más información</translation>
 <translation id="8917070657147922192">Permite que los usuarios gestionen los certificados de CA instalados.</translation>
 <translation id="8926275581598789324">Ten en cuenta que esta política está obsoleta y se eliminará de la versión 82 de <ph name="PRODUCT_OS_NAME" />. Utiliza <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> en su lugar.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 41359af..8ab4249 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -778,6 +778,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> reste prioritaire face à cette règle. Une extension figurant dans la liste noire ne sera pas installée, même si elle provient d'un site mentionné dans cette liste.</translation>
 <translation id="214901426630414675">Limiter l'impression en mode recto verso</translation>
 <translation id="2149330464730004005">Activer l'impression couleur</translation>
+<translation id="2151831603578119302">Activer les raccourcis des fonctionnalités d'accessibilité</translation>
 <translation id="2156132677421487971">Configurer les règles pour <ph name="PRODUCT_NAME" />, une fonctionnalité permettant aux utilisateurs de caster le contenu des onglets, des sites ou de leur bureau depuis leur navigateur sur des écrans ou systèmes audio distants.</translation>
 <translation id="2156755242840687300">Serveurs d'impression externes activés</translation>
 <translation id="2160336427036785721">Permet de configurer la quantité de mémoire qu'une instance de <ph name="PRODUCT_NAME" /> peut utiliser avant que des onglets ne commencent à être ignorés (c'est-à-dire que la mémoire utilisée par l'onglet sera libérée, et l'onglet devra être actualisé lorsque l'utilisateur le sélectionnera) afin d'économiser de la mémoire.
@@ -892,6 +893,7 @@
 <translation id="2294382669900758280">La lecture vidéo dans les applications Android n'est pas prise en compte même si cette règle est définie sur "<ph name="TRUE" />".</translation>
 <translation id="2299220924812062390">Indiquer une liste de plug-ins activés</translation>
 <translation id="2303795211377219696">Activer la saisie automatique pour les cartes de crédit</translation>
+<translation id="2307496301287881990">Transmettre des états liés aux affichages et aux graphiques</translation>
 <translation id="2309390639296060546">Paramètre de géolocalisation par défaut</translation>
 <translation id="2327252517317514801">Définir les domaines autorisés à accéder à G Suite</translation>
 <translation id="2328573323851533589">Cette règle peut être utilisée pour forcer l'activation ou la désactivation de la vérification de fuite d'identifiants dans <ph name="PRODUCT_NAME" />.
@@ -918,7 +920,7 @@
       Si cette règle est définie sur "True", lorsqu'une invite de confirmation de lancement d'un protocole externe s'affiche, l'utilisateur peut choisir de "toujours ouvrir" le protocole sans invite de confirmation par la suite.
 
       Si cette règle est définie sur "False" ou si elle n'est pas configurée, la case "Toujours ouvrir" n'est pas affichée, et l'utilisateur est invité à confirmer à chaque fois le lancement d'un protocole externe.</translation>
-<translation id="2411817661175306360">L'avertissement relatif à la protection par mot de passe est désactivé</translation>
+<translation id="2411817661175306360">L'avertissement de protection par mot de passe est désactivé</translation>
 <translation id="2411919772666155530">Bloquer les notifications sur ces sites</translation>
 <translation id="2418507228189425036">Désactive l'enregistrement de l'historique du navigateur dans <ph name="PRODUCT_NAME" /> et empêche les utilisateurs de modifier ce paramètre.
 
@@ -1151,6 +1153,7 @@
       Si cette règle n'est pas configurée ou si elle est désactivée, les paramètres par défaut d'isolation de sites de la plate-forme sont utilisés pour l'écran de connexion.
       </translation>
 <translation id="2587719089023392205">Définir <ph name="PRODUCT_NAME" /> comme navigateur par défaut</translation>
+<translation id="2588071938417715443">Cette règle contrôle l'accès aux fonctionnalités contrôlables dans l'interface utilisateur de détection en local (<ph name="CHROME_DEVICES_LINK" />), qui affiche les appareils visibles à proximité de l'utilisateur ainsi que les appareils cloud enregistrés auprès de ceux-ci. Sur tous les systèmes d'exploitation à l'exception de <ph name="PRODUCT_OS_NAME" />, l'interface utilisateur de détection en local permet également aux utilisateurs d'ajouter à <ph name="CLOUD_PRINT_NAME" /> des imprimantes standards connectées à leurs ordinateurs.</translation>
 <translation id="2592091433672667839">Durée d'inactivité préalable à l'affichage de l'économiseur d'écran sur l'écran de connexion en mode Point de vente</translation>
 <translation id="2592162121850992309">Si cette règle est définie sur "True" ou n'est pas configurée, l'accélération matérielle est activée, sauf si une certaine fonctionnalité GPU figure sur la liste noire.
 
@@ -1399,19 +1402,6 @@
 <translation id="2960691910306063964">Activer ou désactiver l'authentification sans code d'accès pour les hôtes d'accès à distance</translation>
 <translation id="2987155890997901449">Activer ARC</translation>
 <translation id="2987227569419001736">Contrôler l'utilisation de l'API Web Bluetooth</translation>
-<translation id="3011301228198307065">Permet de configurer l'URL de la page d'accueil par défaut dans <ph name="PRODUCT_NAME" /> et d'empêcher les utilisateurs de la modifier.
-
-          La page d'accueil est la page qui s'ouvre lorsque l'utilisateur clique sur le bouton d'accueil. Les pages qui s'affichent au démarrage sont gérées par les règles RestoreOnStartup.
-
-          La page d'accueil peut être une URL que vous définissez ici ou une page Nouvel onglet. Dans ce dernier cas, cette règle ne s'applique pas.
-
-          Si vous activez ce paramètre, les utilisateurs ne peuvent pas modifier l'URL de leur page d'accueil dans <ph name="PRODUCT_NAME" />. Toutefois, ils peuvent définir la page Nouvel onglet comme page d'accueil.
-
-          Si cette règle n'est pas définie, l'utilisateur peut choisir lui-même sa page d'accueil, à condition que la règle HomepageIsNewTabPage ne soit pas également configurée.
-
-          L'URL doit posséder un schéma standard, comme "http://example.com" ou "https://example.com".
-
-          Cette règle n'est disponible que sur les instances Windows qui sont associées à un domaine <ph name="MS_AD_NAME" />, ou sur les instances Windows 10 Pro ou Windows Enterprise qui sont enregistrées pour bénéficier de la gestion des appareils.</translation>
 <translation id="3016255526521614822">Les applications de prise de note ajoutées à la liste blanche sont autorisées sur l'écran de verrouillage de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Contrôle les règles de supervision parentale s'appliquant uniquement aux comptes d'utilisateurs mineurs.</translation>
 <translation id="3021562480854470924">Nombre de versions intermédiaires autorisées pour le rollback</translation>
@@ -2941,6 +2931,7 @@
       Si la connexion VPN est créée par le biais d'une application VPN, l'interface utilisateur de l'application n'est pas affectée par cette règle. De ce fait, il se peut que l'utilisateur puisse continuer à utiliser l'application pour modifier la connexion VPN.
 
       Cette règle doit être utilisée avec la fonctionnalité "VPN permanent", qui permet à l'administrateur d'établir une connexion VPN au démarrage.</translation>
+<translation id="5401696449591951427">Activer <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Détermine les dispositions de clavier autorisées sur l'écran de connexion <ph name="PRODUCT_OS_NAME" />.
 
       Si cette règle est définie sur une liste d'identifiants de modes de saisie, les modes de saisie indiqués sont disponibles sur l'écran de connexion. Le premier mode de saisie proposé est présélectionné. Lorsqu'un profil utilisateur est actif sur l'écran de connexion, le dernier mode de saisie utilisé par l'utilisateur est disponible en plus des modes de saisie fournis par cette règle. Si cette règle n'est pas définie, les modes de saisie sur l'écran de connexion sont dérivés des paramètres régionaux dans lesquels cet écran est affiché. Les valeurs qui ne constituent pas des identifiants de modes de saisie valides sont ignorées.</translation>
@@ -3206,6 +3197,7 @@
           Si cette règle n'est pas définie, l'action par défaut est effectuée, à savoir l'arrêt.
 
           Dans ce cas, <ph name="PRODUCT_OS_NAME" /> peut être configuré séparément pour verrouiller ou non l'écran avant l'arrêt.</translation>
+<translation id="574983287620584622">Activer les raccourcis des fonctionnalités d'accessibilité sur l'écran de connexion</translation>
 <translation id="5755002458331714762"> Les API Web Components v0 (Shadow DOM v0, Custom Elements v0 et HTML Imports) sont obsolètes depuis 2018 et ont été désactivées par défaut à partir de la version M80. Cette règle offre la possibilité de réactiver ces fonctionnalités pour certains sites en particulier jusqu'à la version M84.
 
       Si elle est définie sur "True", les fonctionnalités de Web Components v0 seront activées pour tous les sites.
@@ -4368,6 +4360,15 @@
       Si cette règle est définie sur "False", les données de navigation sécurisée ne sont pas collectées.
 
       Cette règle n'est effective que lorsque <ph name="CHROME_REPORTING_EXTENSION_NAME" /> est activée et que l'ordinateur est inscrit à <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Activer les raccourcis des fonctionnalités d'accessibilité sur l'écran de connexion.
+
+          Si cette règle est définie sur "True", les raccourcis des fonctionnalités d'accessibilité sont toujours activés sur l'écran de connexion.
+
+          Si elle est définie sur "False", ils sont toujours désactivés sur cet écran.
+
+          Si vous configurez cette règle, les utilisateurs ne peuvent ni la modifier, ni l'ignorer.
+
+          Si elle n'est pas configurée, les raccourcis des fonctionnalités d'accessibilité sont activés par défaut sur l'écran de connexion.</translation>
 <translation id="7777535871204167559">Traiter les appareils de stockage externe en lecture seule</translation>
 <translation id="7788511847830146438">Par profil</translation>
 <translation id="7792973482799545782">Interdire à tous les sites de charger un contenu mixte blocable</translation>
@@ -4715,7 +4716,7 @@
       Si la règle est définie sur "true" ou n'est pas définie, l'utilisateur a accès à la racine des conteneurs Crostini.
       Si la règle est définie sur "false", l'utilisateur n'a pas accès à la racine des conteneurs Crostini (existants ou nouveaux).</translation>
 <translation id="8417305981081876834">Définir le nombre maximal de caractères pour le code de l'écran de verrouillage</translation>
-<translation id="841977920223099909">Déclencheur de l'avertissement relatif à la protection par mot de passe</translation>
+<translation id="841977920223099909">Déclencheur d'avertissement de protection par mot de passe</translation>
 <translation id="8424255554404582727">Définir la rotation de l'écran par défaut (réappliquée à chaque redémarrage)</translation>
 <translation id="8426231401662877819">Faire pivoter l'écran vers la droite de 90 degrés</translation>
 <translation id="8433186206711564395">Paramètres réseau</translation>
@@ -4776,6 +4777,15 @@
 
       Avertissement : Il est déconseillé de configurer des restrictions de version, car cela pourrait empêcher les utilisateurs de recevoir des mises à jour logicielles et des correctifs de sécurité essentiels. Limiter les mises à jour à un préfixe de version spécifique pourrait constituer un risque pour les utilisateurs.</translation>
 <translation id="8519264904050090490">URL d'exception manuelle des utilisateurs gérés</translation>
+<translation id="8519516251436131647">Activer les raccourcis des fonctionnalités d'accessibilité.
+
+          Si cette règle est définie sur "True", les raccourcis des fonctionnalités d'accessibilité sont toujours activés.
+
+          Si elle est définie sur "False", ils sont toujours désactivés.
+
+          Si vous configurez cette règle, les utilisateurs ne peuvent ni la modifier, ni l'ignorer.
+
+          Si elle n'est pas configurée, les raccourcis des fonctionnalités d'accessibilité sont activés par défaut.</translation>
 <translation id="8525526490824335042">Conteneur Linux</translation>
 <translation id="8538235451413605457">Définit la configuration requise de la version minimale autorisée pour <ph name="PRODUCT_NAME" />. Les versions antérieures sont traitées comme obsolètes et ne permettent pas à l'utilisateur de se connecter à l'appareil sans effectuer une mise à jour préalable du système d'exploitation.
       Si la version actuelle devient obsolète lors de la session utilisateur, une déconnexion forcée a lieu.
@@ -4867,7 +4877,7 @@
 <translation id="8661297125441579970">Interdire la migration de données et ARC.</translation>
 <translation id="8672321184841719703">Cibler une version pour les mises à jour automatiques</translation>
 <translation id="867410340948518937">U2F (Deuxième facteur universel)</translation>
-<translation id="8685024486845674965">L'avertissement relatif à la protection par mot de passe est déclenché par la réutilisation d'un mot de passe</translation>
+<translation id="8685024486845674965">L'avertissement de protection par mot de passe est déclenché en cas de réutilisation du mot de passe</translation>
 <translation id="8687958770985542440">Réactiver les API Web Components v0 jusqu'à la version M84.</translation>
 <translation id="8693243869659262736">Utiliser le client DNS intégré</translation>
 <translation id="8698286761337647563">Délai, en nombre de jours, pour informer à l'avance les utilisateurs SAML de l'expiration de leur mot de passe</translation>
@@ -4960,7 +4970,7 @@
       Si cette règle n'est pas définie, ou si la valeur "false" lui est attribuée, l'emplacement n'est pas indiqué.</translation>
 <translation id="8818768076343557335">Prédire les actions réseau sur tous les réseaux, sauf les réseaux mobiles
           (Option abandonnée dans la version 50 et supprimée dans la version 52. Au-delà de la version 52, si la valeur 1 est définie, elle est traitée comme la valeur 0 : Prédire les actions réseau lors d'une connexion au réseau.)</translation>
-<translation id="8825782996899863372">L'avertissement relatif à la protection par mot de passe est déclenché par la réutilisation d'un mot de passe sur une page d'hameçonnage</translation>
+<translation id="8825782996899863372">L'avertissement de protection par mot de passe est déclenché en cas de réutilisation du mot de passe sur une page d'hameçonnage</translation>
 <translation id="8833109046074170275">Authentification via le flux GAIA par défaut</translation>
 <translation id="8838303810937202360"><ph name="PRODUCT_OS_NAME" /> met en cache des applications et des extensions pour permettre leur installation par plusieurs utilisateurs sans avoir à répéter les téléchargements.
       Si cette règle n'est pas configurée ou si la valeur est inférieure à 1 Mo, <ph name="PRODUCT_OS_NAME" /> utilisera la taille de cache par défaut.</translation>
@@ -5016,6 +5026,9 @@
 
           En cas de non-configuration de cette règle, PromptOnAccess prévaut. L'utilisateur peut la modifier.</translation>
 <translation id="8911348623012274122">Définir la limite de mémoire pour les instances de Chrome</translation>
+<translation id="8911736066340032670">Transmettre des informations liées à l'affichage (comme la fréquence d'actualisation) et aux graphiques (la version du pilote, par exemple).
+
+      Si la règle est définie sur "False" ou n'est pas définie, les états liés aux affichages et aux graphiques ne sont pas transmis. Si elle est définie sur "True", ils sont envoyés.</translation>
 <translation id="891435090623616439">codée comme une chaîne JSON, pour plus de détails voir <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Autoriser les utilisateurs à gérer les certificats CA installés.</translation>
 <translation id="8926275581598789324">Cette règle étant obsolète, elle sera supprimée dans la version 82 de <ph name="PRODUCT_OS_NAME" />. (Veuillez utiliser la règle <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.)
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index d645efcd..397c1cf 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -752,6 +752,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> lebih diutamakan dibandingkan kebijakan ini. Artinya, ekstensi dalam daftar tidak diizinkan tidak akan diinstal, meskipun berasal dari situs dalam daftar ini.</translation>
 <translation id="214901426630414675">Batasi mode dupleks pencetakan</translation>
 <translation id="2149330464730004005">Aktifkan pencetakan warna</translation>
+<translation id="2151831603578119302">Mengaktifkan pintasan fitur aksesibilitas</translation>
 <translation id="2156132677421487971">Mengonfigurasi kebijakan untuk <ph name="PRODUCT_NAME" />, fitur yang memungkinkan pengguna mengirim konten tab, situs, atau desktop dari browser ke sistem suara dan layar jarak jauh.</translation>
 <translation id="2156755242840687300">Server cetak eksternal diaktifkan</translation>
 <translation id="2160336427036785721">Mengonfigurasi jumlah memori yang dapat digunakan oleh satu instance <ph name="PRODUCT_NAME" /> sebelum tab mulai dihapus (artinya, memori yang digunakan oleh tab akan dibebaskan dan tab harus dimuat ulang saat dialihkan) untuk menghemat memori.
@@ -858,6 +859,7 @@
 <translation id="2294382669900758280">Pemutaran video di aplikasi Android tidak dipertimbangkan, meski kebijakan ini disetel ke <ph name="TRUE" />.</translation>
 <translation id="2299220924812062390">Tentukan daftar plugin yang diaktifkan</translation>
 <translation id="2303795211377219696">Mengaktifkan IsiOtomatis untuk kartu kredit</translation>
+<translation id="2307496301287881990">Melaporkan status tampilan dan grafis</translation>
 <translation id="2309390639296060546">Setelan geolokasi default</translation>
 <translation id="2327252517317514801">Menentukan domain yang diizinkan untuk mengakses G Suite</translation>
 <translation id="2328573323851533589">Kebijakan ini dapat digunakan untuk secara paksa mengaktifkan atau menonaktifkan pemeriksaan kebocoran kredensial di <ph name="PRODUCT_NAME" />.
@@ -1111,6 +1113,7 @@
       Jika kebijakan dinonaktifkan atau tidak dikonfigurasi, setelan isolasi situs default platform akan digunakan untuk layar login.
       </translation>
 <translation id="2587719089023392205">Setel <ph name="PRODUCT_NAME" /> sebagai Browser Default</translation>
+<translation id="2588071938417715443">Kebijakan ini mengontrol akses ke fitur yang dapat dikontrol di UI penemuan di sekitar (<ph name="CHROME_DEVICES_LINK" />) yang menampilkan perangkat yang dapat ditemukan di dekat pengguna serta perangkat cloud yang terdaftar atas nama mereka. Pada semua sistem operasi kecuali <ph name="PRODUCT_OS_NAME" />, UI penemuan di sekitar juga mengizinkan pengguna menambahkan printer klasik yang terhubung dengan komputer mereka ke <ph name="CLOUD_PRINT_NAME" />.</translation>
 <translation id="2592091433672667839">Durasi keadaan tidak aktif sebelum tirai layar ditampilkan di layar masuk dalam mode eceran</translation>
 <translation id="2592162121850992309">Jika kebijakan ini ditetapkan ke True atau tidak ditetapkan, akselerasi hardware akan diaktifkan kecuali jika fitur GPU tertentu termasuk dalam daftar tidak diizinkan.
 
@@ -1355,19 +1358,6 @@
 <translation id="2960691910306063964">Mengaktifkan atau menonaktifkan autentikasi tanpa PIN untuk host akses jarak jauh</translation>
 <translation id="2987155890997901449">Aktifkan ARC</translation>
 <translation id="2987227569419001736">Mengontrol penggunaan API Bluetooth Web</translation>
-<translation id="3011301228198307065">Mengonfigurasi URL halaman beranda default di <ph name="PRODUCT_NAME" /> dan mencegah pengguna mengubahnya.
-
-          Halaman beranda adalah halaman yang dibuka oleh tombol Beranda. Halaman yang terbuka saat browser diluncurkan dikontrol oleh kebijakan RestoreOnStartup.
-
-          Jenis halaman beranda dapat disetel ke URL yang Anda tentukan di sini atau disetel ke Halaman Tab Baru. Jika Anda memilih Halaman Tab Baru, maka kebijakan ini tidak akan berpengaruh.
-
-          Jika Anda mengaktifkan setelan ini, pengguna tidak dapat mengubah URL halaman beranda di <ph name="PRODUCT_NAME" />, tetapi mereka tetap dapat memilih Halaman Tab Baru sebagai halaman beranda.
-
-          Membiarkan kebijakan ini tidak disetel akan memungkinkan pengguna memilih halaman berandanya sendiri jika HomepageIsNewTabPage juga tidak disetel.
-
-          URL harus berisi skema standar, misalnya "http://example.com" atau "https://example.com".
-
-          Kebijakan ini hanya tersedia pada instance Windows yang dihubungkan ke domain <ph name="MS_AD_NAME" />, atau instance Windows 10 Pro atau Enterprise yang terdaftar untuk pengelolaan perangkat.</translation>
 <translation id="3016255526521614822">Beri akses aplikasi pencatat yang diizinkan di layar kunci <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Mengontrol kebijakan pengawasan orang tua, yang diterapkan hanya ke akun anak.</translation>
 <translation id="3021562480854470924">Jumlah rollback milestone diizinkan</translation>
@@ -2864,6 +2854,7 @@
       Jika koneksi VPN dibuat melalui aplikasi VPN, UI dalam aplikasi tidak akan terpengaruh oleh kebijakan ini. Oleh karena itu, pengguna mungkin masih dapat menggunakan aplikasi untuk memodifikasi koneksi VPN.
 
       Kebijakan ini dimaksudkan untuk digunakan bersama fitur "VPN Selalu Aktif", yang memungkinkan admin memutuskan untuk membuat koneksi VPN saat booting atau tidak.</translation>
+<translation id="5401696449591951427">Mengaktifkan <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Mengonfigurasi tata letak keyboard yang diizinkan di layar login <ph name="PRODUCT_OS_NAME" />.
 
       Jika kebijakan ini disetel ke daftar pengenal metode masukan, metode masukan yang diberikan akan tersedia di layar login. Metode masukan yang diberikan pertama telah dipilih sebelumnya. Sementara pod pengguna difokuskan pada layar login, metode masukan yang terakhir kali digunakan oleh pengguna akan tersedia, selain dari metode masukan yang diberikan oleh kebijakan ini. Jika kebijakan ini tidak disetel, metode masukan pada layar login akan diambil dari lokal yang menampilkan layar login. Pengenal metode masukan akan mengabaikan nilai yang tidak valid.</translation>
@@ -3127,6 +3118,7 @@
           Jika tidak ditetapkan, tindakan default akan diambil, yaitu suspend (tangguhkan).
 
           Jika tindakannya adalah suspend, <ph name="PRODUCT_OS_NAME" /> dapat dikonfigurasi secara terpisah untuk mengunci atau tidak mengunci layar sebelum menangguhkan.</translation>
+<translation id="574983287620584622">Mengaktifkan pintasan fitur aksesibilitas di layar login</translation>
 <translation id="5755002458331714762"> Web Components v0 API (Shadow DOM v0, Custom Elements v0, dan HTML Imports) sudah tidak digunakan lagi pada tahun 2018, dan telah dinonaktifkan secara default mulai dari M80. Kebijakan ini akan memungkinkan fitur ini diaktifkan ulang secara selektif hingga M84.
 
       Jika kebijakan ini ditetapkan ke True, fitur Web Components v0 akan diaktifkan untuk semua situs.
@@ -4244,6 +4236,15 @@
       Jika kebijakan ini ditetapkan ke False, data Safe Browsing tidak akan dikumpulkan.
 
       Kebijakan ini hanya berlaku jika <ph name="CHROME_REPORTING_EXTENSION_NAME" /> diaktifkan, dan perangkat didaftarkan dengan <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Mengaktifkan pintasan fitur aksesibilitas di layar login.
+
+          Jika kebijakan ini ditetapkan ke true, pintasan fitur aksesibilitas akan selalu diaktifkan di layar login.
+
+          Jika kebijakan ini ditetapkan ke false, pintasan fitur aksesibilitas akan selalu dinonaktifkan di layar login.
+
+          Jika kebijakan ini ditetapkan, pengguna tidak dapat mengubah atau menggantinya.
+
+          Jika kebijakan ini tidak ditetapkan, pintasan fitur aksesibilitas akan diaktifkan secara default di layar login.</translation>
 <translation id="7777535871204167559">Memperlakukan perangkat penyimpanan eksternal sebagai hanya baca</translation>
 <translation id="7788511847830146438">Per Profil</translation>
 <translation id="7792973482799545782">Jangan izinkan situs apa pun memuat konten campuran yang dapat diblokir</translation>
@@ -4640,6 +4641,15 @@
 
       Peringatan: Sebaiknya Anda tidak mengonfigurasi batasan versi karena dapat mencegah pengguna dari menerima update software dan perbaikan keamanan kritis. Membatasi update ke prefiks versi spesifik dapat menimbulkan risiko bagi pengguna.</translation>
 <translation id="8519264904050090490">URL pengecualian manual pengguna yang dikelola</translation>
+<translation id="8519516251436131647">Mengaktifkan pintasan fitur aksesibilitas.
+
+          Jika kebijakan ini ditetapkan ke true, pintasan fitur aksesibilitas akan selalu diaktifkan.
+
+          Jika kebijakan ini ditetapkan ke false, pintasan fitur aksesibilitas akan selalu dinonaktifkan.
+
+          Jika kebijakan ini ditetapkan, pengguna tidak dapat mengubah atau menggantinya.
+
+          Jika kebijakan ini tidak ditetapkan, pintasan fitur aksesibilitas akan diaktifkan secara default.</translation>
 <translation id="8525526490824335042">Container Linux</translation>
 <translation id="8538235451413605457">Mengonfigurasi persyaratan versi minimum <ph name="PRODUCT_NAME" /> yang diizinkan. Penggunaan versi yang lebih rendah dari versi yang ditentukan dianggap sebagai sudah usang dan perangkat tidak akan mengizinkan pengguna login sebelum OS diupdate.
       Jika versi saat ini menjadi usang selama sesi pengguna, pengguna akan dipaksa logout.
@@ -4876,6 +4886,12 @@
 
           Jika kebijakan ini tidak disetel, 'PromptOnAccess' akan digunakan dan pengguna dapat mengubahnya.</translation>
 <translation id="8911348623012274122">Menetapkan batas memori untuk instance Chrome</translation>
+<translation id="8911736066340032670">Melaporkan informasi terkait tampilan, seperti rasio pembaruan, dan
+      informasi terkait grafik, seperti versi driver.
+
+      Jika kebijakan ditetapkan ke false atau tidak ditetapkan, status tampilan dan grafis
+      tidak akan dilaporkan. Jika ditetapkan ke true, status tampilan dan grafis
+      akan dilaporkan.</translation>
 <translation id="891435090623616439">dienkode sebagai string JSON, untuk detailnya lihat <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Izinkan pengguna mengelola sertifikat CA yang terinstal.</translation>
 <translation id="8926275581598789324">Perhatikan bahwa kebijakan ini sudah tidak digunakan lagi dan akan dihapus di <ph name="PRODUCT_OS_NAME" /> versi 82. Sebagai gantinya, gunakan <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 1a29923..eb6ff1f 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -732,6 +732,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> ha la precedenza su questa norma. Ciò significa che un'estensione presente nella lista nera non verrà installata, anche se è di un sito presente in questo elenco.</translation>
 <translation id="214901426630414675">Limita la modalità di stampa fronte/retro</translation>
 <translation id="2149330464730004005">Attiva la stampa a colori</translation>
+<translation id="2151831603578119302">Attiva le scorciatoie delle funzioni di accessibilità</translation>
 <translation id="2156132677421487971">Consente di configurare le norme per <ph name="PRODUCT_NAME" />, una funzione che permette agli utenti di inviare i contenuti di schede, siti o del desktop dal browser a schermi remoti e sistemi audio.</translation>
 <translation id="2156755242840687300">Server di stampa esterni attivi</translation>
 <translation id="2160336427036785721">Consente di configurare la quantità di memoria che una singola istanza di <ph name="PRODUCT_NAME" /> può utilizzare prima che le schede vengano eliminate (ossia la memoria utilizzata dalla scheda verrà liberata e la scheda dovrà essere ricaricata quando l'utente la seleziona) per risparmiare memoria.
@@ -843,6 +844,7 @@
 <translation id="2294382669900758280">Il video riprodotto nelle app Android non viene considerato, anche se la norma viene impostata su <ph name="TRUE" />.</translation>
 <translation id="2299220924812062390">Consente di specificare un elenco dei plug-in attivati</translation>
 <translation id="2303795211377219696">Attiva la Compilazione automatica per le carte di credito</translation>
+<translation id="2307496301287881990">Segnala stati del display e della grafica</translation>
 <translation id="2309390639296060546">Impostazione di geolocalizzazione predefinita</translation>
 <translation id="2327252517317514801">Definisci i domini autorizzati ad accedere a G Suite</translation>
 <translation id="2328573323851533589">Questo criterio può essere usato per l'attivazione o la disattivazione forzata del controllo della divulgazione di credenziali in <ph name="PRODUCT_NAME" />.
@@ -1096,6 +1098,7 @@
       Se il criterio non è configurato o è disattivato, per la schermata di accesso verranno usate le impostazioni di isolamento dei siti predefinite della piattaforma.
       </translation>
 <translation id="2587719089023392205">Imposta <ph name="PRODUCT_NAME" /> come browser predefinito</translation>
+<translation id="2588071938417715443">Questo criterio consente di gestire l'accesso alle funzionalità controllabili nell'interfaccia utente di individuazione di dispositivi locali (<ph name="CHROME_DEVICES_LINK" />), in cui vengono mostrati i dispositivi rilevabili accanto all'utente, nonché i dispositivi cloud registrati per loro. Su tutti i sistemi operativi tranne <ph name="PRODUCT_OS_NAME" />, l'interfaccia utente di individuazione di dispositivi locali consente inoltre agli utenti di aggiungere a <ph name="CLOUD_PRINT_NAME" /> stampanti classiche collegate ai loro computer.</translation>
 <translation id="2592091433672667839">Durata inattività prima della visualizzazione del salvaschermo nella schermata di accesso in modalità retail</translation>
 <translation id="2592162121850992309">Se questa norma è impostata su true o non è impostata, verrà attivata l'accelerazione hardware a meno che una determinata funzione della GPU non sia stata inserita nella lista nera.
 
@@ -1338,19 +1341,6 @@
 <translation id="2960691910306063964">Consente di attivare o disattivare l'autenticazione senza PIN per gli host di accesso remoto</translation>
 <translation id="2987155890997901449">Attiva ARC</translation>
 <translation id="2987227569419001736">Controlla l'utilizzo dell'API Web Bluetooth</translation>
-<translation id="3011301228198307065">Consente di configurare l'URL della home page predefinita di <ph name="PRODUCT_NAME" /> e di impedire agli utenti di modificarlo.
-
-          La home page è la pagina che viene aperta facendo clic sul pulsante Home. Le pagine che si aprono all'avvio vengono stabilite dalle norme RestoreOnStartup.
-
-          La home page può essere un URL specificato qui oppure la pagina Nuova scheda. Se selezioni la pagina Nuova scheda, questa norma non viene applicata.
-
-          Se attivi questa impostazione, gli utenti non possono cambiare l'URL della home page di <ph name="PRODUCT_NAME" />, ma possono scegliere come home page la pagina Nuova scheda.
-
-          Se questa norma non viene impostata e non viene impostata neanche la norma HomepageIsNewTabPage, l'utente potrà scegliere la home page che preferisce.
-
-          L'URL deve avere uno schema standard, ad esempio "http://example.com" o "https://example.com".
-
-          Questa norma è disponibile esclusivamente per le istanze di Windows che fanno parte di un dominio <ph name="MS_AD_NAME" /> così come per le istanze di Windows 10 Pro o Enterprise registrate per la gestione dei dispositivi.</translation>
 <translation id="3016255526521614822">Autorizza l'uso di app per scrivere note nella schermata di blocco di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Consente di controllare i criteri relativi alla supervisione dei genitori che vengono applicati soltanto agli account di minori.</translation>
 <translation id="3021562480854470924">Numero di obiettivi consentiti per il rollback</translation>
@@ -2829,6 +2819,7 @@
       Se la connessione VPN viene creata tramite un'app VPN, l'interfaccia all'interno dell'app non è interessata da questa norma. L'utente potrebbe quindi essere ancora in grado di utilizzare l'app per modificare la connessione VPN.
 
       Questa norma deve essere utilizzata assieme alla funzionalità "VPN sempre attiva", che permette all'amministratore di decidere se creare una connessione VPN all'avvio.</translation>
+<translation id="5401696449591951427">Attiva <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Consente di configurare i layout da tastiera consentiti nella schermata di accesso di <ph name="PRODUCT_OS_NAME" />.
 
       Se per questa norma viene impostato un elenco di identificatori di metodi di immissione, i metodi specificati saranno disponibili nella schermata di accesso. Verrà preselezionato il primo metodo di immissione specificato. Anche se il pod dell'utente è basato sulla schermata di accesso, oltre ai metodi di immissione specificati in questa norma sarà disponibile anche l'ultimo metodo usato dall'utente. Se questa norma non viene impostata, i metodi di immissione per la schermata di accesso saranno recuperati in base alla lingua in cui è visualizzata la schermata di accesso. I valori che non corrispondono a identificatori di metodi di immissione validi verranno ignorati.</translation>
@@ -3091,6 +3082,7 @@
           Quando la norma non è impostata, viene eseguita l'azione predefinita, ossia la sospensione.
 
           Se l'azione è la sospensione, è possibile configurare separatamente il blocco o meno dello schermo prima della sospensione di <ph name="PRODUCT_OS_NAME" />.</translation>
+<translation id="574983287620584622">Attiva le scorciatoie delle funzioni di accessibilità nella schermata di accesso</translation>
 <translation id="5755002458331714762"> Le API Web Components v0 (Shadow DOM v0, Custom Elements v0 e HTML Imports) sono state ritirate nel 2018 e sono state disattivate per impostazione predefinita a partire dalla versione M80. Questo criterio consente di riattivare selettivamente queste funzionalità fino alla versione M84.
 
       Se questo criterio viene impostato su True, le funzionalità Web Components v0 verranno attivate per tutti i siti.
@@ -4227,6 +4219,15 @@
       Se questo criterio viene impostato su False, i dati di Navigazione sicura non vengono raccolti.
 
       Questo criterio viene applicato soltanto se viene attivata l'estensione <ph name="CHROME_REPORTING_EXTENSION_NAME" /> e il computer viene registrato con il criterio <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Consente di attivare le scorciatoie delle funzioni di accessibilità nella schermata di accesso.
+
+          Se questo criterio viene impostato su true, le scorciatoie delle funzioni di accessibilità saranno sempre attive nella schermata di accesso.
+
+          Se questo criterio viene impostato su false, le scorciatoie delle funzioni di accessibilità saranno sempre disattivate nella schermata di accesso.
+
+          Se imposti questo criterio, gli utenti non potranno modificarlo o ignorarlo.
+
+          Se questo criterio non viene impostato, le scorciatoie delle funzioni di accessibilità saranno attive per impostazione predefinita nella schermata di accesso.</translation>
 <translation id="7777535871204167559">Considera i dispositivi di archiviazione esterni come di sola lettura</translation>
 <translation id="7788511847830146438">Per profilo</translation>
 <translation id="7792973482799545782">Non consentire il caricamento di contenuti misti bloccabili in nessun sito</translation>
@@ -4627,6 +4628,15 @@
 
       Avviso: non è consigliabile configurare restrizioni alle versioni, poiché potrebbero impedire agli utenti di ricevere aggiornamenti software e correzioni di sicurezza fondamentali. Limitare gli aggiornamenti a uno specifico prefisso per la versione potrebbe mettere a rischio gli utenti.</translation>
 <translation id="8519264904050090490">URL delle eccezioni manuali per gli utenti gestiti</translation>
+<translation id="8519516251436131647">Consente di attivare le scorciatoie delle funzioni di accessibilità.
+
+          Se questo criterio viene impostato su true, le scorciatoie delle funzioni di accessibilità saranno sempre attive.
+
+          Se questo criterio viene impostato su false, le scorciatoie delle funzioni di accessibilità saranno sempre disattivate.
+
+          Se imposti questo criterio, gli utenti non potranno modificarlo o ignorarlo.
+
+          Se questo criterio non viene impostato, le scorciatoie delle funzioni di accessibilità saranno attive per impostazione predefinita.</translation>
 <translation id="8525526490824335042">Container Linux</translation>
 <translation id="8538235451413605457">Consente di configurare il requisito della versione minima consentita di <ph name="PRODUCT_NAME" />. Le versioni inferiori vengono trattate come obsolete e il dispositivo non consente agli utenti di accedere, se prima non viene aggiornato il sistema operativo.
       Se la versione corrente diventa obsoleta durante una sessione utente, l'utente verrà forzatamente scollegato.
@@ -4856,6 +4866,9 @@
 
           Se questa norma non viene impostata, verrà utilizzata la norma "PromptOnAccess" e l'utente sarà in grado di modificarla.</translation>
 <translation id="8911348623012274122">Imposta un limite di memoria per le istanze di Chrome</translation>
+<translation id="8911736066340032670">Consente di segnalare informazioni relative al display, ad esempio la frequenza di aggiornamento, e alla grafica, ad esempio la versione del driver.
+
+      Se il criterio viene impostato su false o non viene impostato, gli stati relativi a display e grafica non vengono segnalati. Se viene impostato su true, gli stati relativi a display e grafica vengono segnalati.</translation>
 <translation id="891435090623616439">codificato sotto forma di stringa JSON; per informazioni dettagliate, visita la pagina <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Consenti agli utenti di gestire i certificati CA installati.</translation>
 <translation id="8926275581598789324">Tieni presente che questo criterio è obsoleto e verrà rimosso nella versione 82 di <ph name="PRODUCT_OS_NAME" />. Usa il criterio <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 12f77ab..25cb91c 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -459,7 +459,7 @@
 <translation id="1708496595873025510">バリエーション シードの取得に制限を設定する</translation>
 <translation id="1713533749396963716">このポリシーでは、アプリごとの使用制限のホワイトリストに登録するアプリと URL を指定します。
         設定したホワイトリストは、<ph name="PRODUCT_OS_NAME" /> にインストールされているアプリに適用され、アプリごとの時間制限が設定されているユーザーが対象になります。
-        設定したホワイトリストは、子供のユーザー アカウントにのみ適用でき、<ph name="PER_APP_TIME_LIMITS_POLICY_NAME" /> ポリシーが設定されている場合に有効になります。
+        設定したホワイトリストは、子ユーザー アカウントにのみ適用でき、<ph name="PER_APP_TIME_LIMITS_POLICY_NAME" /> ポリシーが設定されている場合に有効になります。
         ホワイトリストには、アプリごとの時間制限によってブロックしないアプリと URL を登録します。
         ホワイトリストに登録した URL へのアクセスは Chrome の時間制限にカウントされません。
         |url_list| に URL の正規表現を追加すると、リストの正規表現に一致するすべての URL がホワイトリストに登録されます。
@@ -752,6 +752,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> はこのポリシーに優先します。つまり、このリスト上のサイトから発行されていても、ブラックリストに登録されている拡張機能はインストールされません。</translation>
 <translation id="214901426630414675">両面印刷モードを制限</translation>
 <translation id="2149330464730004005">カラー印刷を有効にする</translation>
+<translation id="2151831603578119302">ユーザー補助機能のショートカットを有効にする</translation>
 <translation id="2156132677421487971"><ph name="PRODUCT_NAME" /> のポリシーを設定します。この機能により、ユーザーはタブ、サイト、またはデスクトップのコンテンツをブラウザからリモートのディスプレイや音声システムに送信できます。</translation>
 <translation id="2156755242840687300">有効な外部プリント サーバー</translation>
 <translation id="2160336427036785721">メモリを節約するため、タブの破棄(タブで使用されているメモリが解放され、次回表示したときに再読み込みする必要があります)を開始するまでに 1 つの <ph name="PRODUCT_NAME" /> インスタンスで使用できるメモリの量を設定します。
@@ -860,6 +861,7 @@
 <translation id="2294382669900758280">Android アプリで再生中の動画は、このポリシーを <ph name="TRUE" /> に設定した場合でも考慮されません。</translation>
 <translation id="2299220924812062390">有効なプラグインのリストを指定する</translation>
 <translation id="2303795211377219696">クレジット カードの自動入力を有効にする</translation>
+<translation id="2307496301287881990">ディスプレイとグラフィックのステータスを報告する</translation>
 <translation id="2309390639296060546">デフォルトの位置情報設定</translation>
 <translation id="2327252517317514801">G Suite へのアクセスを許可するドメインを定義する</translation>
 <translation id="2328573323851533589">このポリシーを使用して、<ph name="PRODUCT_NAME" /> での認証情報の漏洩チェックを強制的に有効または強制的に無効にできます。
@@ -1111,6 +1113,7 @@
       このポリシーが未設定または無効に設定されている場合、ログイン画面ではプラットフォームのデフォルトのサイト分離設定が使用されます。
       </translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> を既定のブラウザに設定する</translation>
+<translation id="2588071938417715443">このポリシーでは、ユーザーの近くの検出可能なデバイスや、それらに登録されているクラウド デバイスを表示するローカル検出 UI(<ph name="CHROME_DEVICES_LINK" />)の制御可能な機能へのアクセスを管理します。<ph name="PRODUCT_OS_NAME" /> 以外のすべてのオペレーティング システムでは、ローカル検出 UI を使用して、パソコンに接続された従来のプリンタを <ph name="CLOUD_PRINT_NAME" />に追加することも可能です。</translation>
 <translation id="2592091433672667839">小売りモードのログイン画面にスクリーンセーバーが表示されるまでの非アクティブな期間</translation>
 <translation id="2592162121850992309">このポリシーが true または未設定の場合、特定の GPU 機能がブラックリストに登録されていない限り、ハードウェア アクセラレーションは有効となります。
 
@@ -1352,19 +1355,6 @@
 <translation id="2960691910306063964">リモート アクセス ホストの PIN 入力なしの認証を有効または無効にする</translation>
 <translation id="2987155890997901449">ARC を有効にする</translation>
 <translation id="2987227569419001736">Web Bluetooth API の使用を管理する</translation>
-<translation id="3011301228198307065"><ph name="PRODUCT_NAME" /> にデフォルトのホームページの URL を設定するとともに、ユーザーがこの設定を変更できないようにします。
-
-          ホームページとはホームボタンで開くページです。起動時に開くページは RestoreOnStartup ポリシーで制御します。
-
-          ホームページのタイプは、ここで指定する URL または新しいタブページに設定できます。新しいタブページを選択した場合、このポリシーは無視されます。
-
-          この設定が有効な場合、ユーザーは <ph name="PRODUCT_NAME" /> でホームページの URL を変更できません。ただし、新しいタブページをホームページとして選択することは可能です。
-
-          このポリシーが未設定の場合、HomepageIsNewTabPage も未設定であれば、ユーザーはホームページを選択できます。
-
-          指定する URL は標準のスキームを使用したものでなければなりません(例: 「http://example.com」、「https://example.com」)。
-
-          このポリシーは、<ph name="MS_AD_NAME" /> ドメインに追加した Windows インスタンス、またはデバイスの管理対象として登録した Windows 10 Pro あるいは Enterprise インスタンスでのみ使用できます。</translation>
 <translation id="3016255526521614822"><ph name="PRODUCT_OS_NAME" /> のロック画面で使用できるメモ作成アプリをホワイトリスト登録する</translation>
 <translation id="3020064401262077616">子どものアカウントのみに適用される、保護者向け監視ツールのポリシーを制御します。</translation>
 <translation id="3021562480854470924">ロールバックできるマイルストーンの数</translation>
@@ -2787,7 +2777,7 @@
       このポリシーを設定する場合は、値として「tls1.2」または「tls1.3」を指定できます。このポリシーが設定されている場合、<ph name="PRODUCT_NAME" /> では、指定されたバージョンより大きい SSL / TLS バージョンは使用されません。また、認識されない値は無視されます。</translation>
 <translation id="5330684698007383292">次のコンテンツ タイプの処理を <ph name="PRODUCT_FRAME_NAME" /> に対して許可する</translation>
 <translation id="5331081760098249172">
-      このポリシーを True に設定すると、<ph name="PRODUCT_NAME" /> で Google サービス(Hangouts Meet など)から WebRTC イベントログを収集して Google にアップロードできるようになります。これらのログには、RTP パケットの時間とサイズ、ネットワークの輻輳に関するフィードバック、音声および動画フレームの時間と品質に関するメタデータなど、<ph name="PRODUCT_NAME" /> での音声や動画の会議に関する問題をデバッグする際に役立つ診断情報が含まれます。会議の音声や動画の内容はログに含まれません。Google はデバッグを容易にする目的で、これらのログと、Google サービス自体により収集される他のログとをセッション ID を使って関連付けることがあります。
+      このポリシーを True に設定すると、<ph name="PRODUCT_NAME" /> で Google サービス(Hangouts Meet など)から WebRTC イベントログを収集して Google にアップロードできるようになります。これらのログには、RTP パケットの時間とサイズ、ネットワークの輻輳に関するフィードバック、音声および映像フレームの時間と品質に関するメタデータなど、<ph name="PRODUCT_NAME" /> での音声やビデオでの会議に関する問題をデバッグする際に役立つ診断情報が含まれます。会議の音声や映像の内容はログに含まれません。Google はデバッグを容易にする目的で、これらのログと、Google サービス自体により収集される他のログとをセッション ID を使って関連付けることがあります。
 
       このポリシーを False に設定すると、ログの収集とアップロードは行われません。
 
@@ -2847,6 +2837,7 @@
       VPN アプリを使用して VPN 接続を作成した場合、そのアプリの UI はこのポリシーの影響を受けないため、そのアプリを使用して VPN 接続を変更することはできます。
 
       このポリシーは、「常時接続 VPN」機能と組み合わせて使用するものです。管理者は「常時接続 VPN」機能を使用して、起動時に VPN 接続を確立するかどうかを設定します。</translation>
+<translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> を有効にする</translation>
 <translation id="5405289061476885481"><ph name="PRODUCT_OS_NAME" /> のログイン画面で選択可能にするキーボード配列を設定します。
 
       このポリシーが入力方法 ID のリストに設定されている場合は、指定されている入力方法がログイン画面で選択可能になり、最初に指定されている入力方法があらかじめ選択された状態になります。ログイン画面でユーザーのアイコンにフォーカスがあるときは、このポリシーで指定されている入力方法に加えて、ユーザーが最後に使った入力方法が選択可能になります。このポリシーが設定されていない場合は、ログイン画面の表示に使用されている言語 / 地域に応じた入力方法が適用されます。入力方法 ID として無効な値は無視されます。</translation>
@@ -3112,6 +3103,7 @@
           このポリシーが未設定の場合は、デフォルトの操作(停止)が行われます。
 
           停止操作の場合、<ph name="PRODUCT_OS_NAME" /> で停止前に画面をロックするかどうかを個別に設定できます。</translation>
+<translation id="574983287620584622">ログイン画面でユーザー補助機能のショートカットを有効にする</translation>
 <translation id="5755002458331714762"> Web Components v0 API(Shadow DOM v0、Custom Elements v0、HTML Imports)は 2018 年にサポートが終了し、M80 以降ではデフォルトで無効となっていますが、このポリシーにより M84 までこれらの機能を再度有効にできるようにしました。
 
       このポリシーを True に設定した場合、Web Components v0 の機能はすべてのサイトで有効になります。このポリシーを False に設定するか未設定のままにした場合、Web Components v0 の機能は M80 以降においてデフォルトで無効になります。
@@ -4238,6 +4230,15 @@
       このポリシーが False に設定されている場合、セーフ ブラウジング データは収集されません。
 
       このポリシーは、<ph name="CHROME_REPORTING_EXTENSION_NAME" /> が有効で、マシンが <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" /> を使用して登録されている場合にのみ適用されます。</translation>
+<translation id="777734450201217641">ログイン画面でユーザー補助機能のショートカットを有効にします。
+
+          このポリシーを true に設定した場合は、ログイン画面でユーザー補助機能のショートカットが常に有効になります。
+
+          このポリシーを false に設定した場合は、ログイン画面でユーザー補助機能のショートカットが常に無効になります。
+
+          このポリシーを設定した場合、ユーザーによる変更やオーバーライドはできません。
+
+          このポリシーを設定しない場合、ログイン画面でユーザー補助機能のショートカットはデフォルトで有効になります。</translation>
 <translation id="7777535871204167559">外部ストレージ デバイスを読み取り専用にする</translation>
 <translation id="7788511847830146438">プロフィール単位</translation>
 <translation id="7792973482799545782">すべてのサイトに対してブロック可能な混合コンテンツの読み込みを許可しない</translation>
@@ -4647,6 +4648,15 @@
 
       警告: バージョンの制限を設定することはおすすめしません。設定した場合、ユーザーがソフトウェアのアップデートや重要なセキュリティ修正を取得できなくなる可能性があります。つまり、更新対象を特定のバージョンのプレフィックスに制限すると、ユーザーが危険にさらされる恐れがあります。</translation>
 <translation id="8519264904050090490">管理対象ユーザーの手動による例外 URL</translation>
+<translation id="8519516251436131647">ユーザー補助機能のショートカットを有効にします。
+
+          このポリシーを true に設定した場合は、ユーザー補助機能のショートカットが常に有効になります。
+
+          このポリシーを false に設定した場合は、ユーザー補助機能のショートカットが常に無効になります。
+
+          このポリシーを設定した場合、ユーザーによる変更やオーバーライドはできません。
+
+          このポリシーを設定しない場合、ユーザー補助機能のショートカットはデフォルトで有効になります。</translation>
 <translation id="8525526490824335042">Linux コンテナ</translation>
 <translation id="8538235451413605457">使用を許可する <ph name="PRODUCT_NAME" /> の最小バージョンを設定します。これより古いバージョンはサポート終了として扱われ、OS がアップデートされるまでユーザーはデバイスにログインできません。
       ユーザー セッション中に現在のバージョンがサポート終了となった場合、ユーザーは強制的にログアウトされます。
@@ -4881,6 +4891,12 @@
 
           このポリシーが未設定の場合、「PromptOnAccess」が使用され、ユーザーがその設定を変更できます。</translation>
 <translation id="8911348623012274122">Chrome インスタンスのメモリ制限量を設定する</translation>
+<translation id="8911736066340032670">リフレッシュ レートなどのディスプレイに関連する情報や、
+      ドライバのバージョンなどのグラフィックに関連する情報を報告します。
+
+      このポリシーを false に設定するか未設定のままにした場合、
+      ディスプレイとグラフィックのステータスは報告されません。このポリシーを true に設定した場合は、
+      ディスプレイとグラフィックのステータスが報告されます。</translation>
 <translation id="891435090623616439">JSON 文字列としてのエンコードについて詳しくは、<ph name="COMPLEX_POLICIES_URL" /> をご覧ください</translation>
 <translation id="8917070657147922192">インストール済み CA 証明書の管理をユーザーに許可する。</translation>
 <translation id="8926275581598789324">このポリシーはサポートが終了しており、<ph name="PRODUCT_OS_NAME" /> バージョン 82 で削除されます。代わりに <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> を使用してください。
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index bc04f70..c68439d5 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -769,6 +769,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" />이(가) 이 정책보다 우선 적용됩니다. 다시 말해, 이 목록의 사이트에서 발생하더라도 차단 목록에 있는 확장 프로그램은 설치되지 않습니다.</translation>
 <translation id="214901426630414675">양면 인쇄 모드 제한</translation>
 <translation id="2149330464730004005">컬러 인쇄 제한</translation>
+<translation id="2151831603578119302">접근성 기능 단축키 사용</translation>
 <translation id="2156132677421487971">사용자가 탭, 사이트 또는 데스크톱의 콘텐츠를 브라우저에서 원격 디스플레이와 사운드 시스템으로 전송하도록 해 주는 기능인 <ph name="PRODUCT_NAME" />의 정책을 설정합니다.</translation>
 <translation id="2156755242840687300">외부 프린트 서버가 사용 설정됨</translation>
 <translation id="2160336427036785721">메모리 절약을 위해 탭 삭제(탭에 사용된 메모리는 회수되며 전환 시 탭이 다시 로드됨)를 시작하기 전에 단일 <ph name="PRODUCT_NAME" /> 인스턴스에서 사용할 수 있는 메모리의 양을 설정합니다.
@@ -882,6 +883,7 @@
 <translation id="2294382669900758280">이 정책이 <ph name="TRUE" />로 설정되더라도 Android 앱에서 재생되는 동영상은 고려 대상에 포함되지 않습니다.</translation>
 <translation id="2299220924812062390">사용 설정한 플러그인 목록 지정</translation>
 <translation id="2303795211377219696">신용카드 정보 자동 완성 사용</translation>
+<translation id="2307496301287881990">디스플레이 및 그래픽 상태 보고</translation>
 <translation id="2309390639296060546">기본 위치정보 설정</translation>
 <translation id="2327252517317514801">G Suite에 액세스할 수 있게 허용된 도메인 정의</translation>
 <translation id="2328573323851533589">이 정책을 사용하여 <ph name="PRODUCT_NAME" />에서 사용자 인증 정보 유출 확인을 강제로 사용 설정하거나 중지할 수 있습니다.
@@ -1141,6 +1143,7 @@
       이 정책이 구성되지 않거나 사용 중지되면 로그인 화면에서 플랫폼 기본 사이트 격리 설정이 사용됩니다.
       </translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" />을(를) 기본 브라우저로 설정</translation>
+<translation id="2588071938417715443">이 정책은 로컬 검색 UI(<ph name="CHROME_DEVICES_LINK" />)에서 제어 가능한 기능에 대한 액세스 권한을 제어합니다. 로컬 검색은 사용자 근처의 검색 가능한 기기 및 이러한 기기에 등록된 클라우드 기기를 표시합니다. 사용자는 <ph name="PRODUCT_OS_NAME" />을(를) 제외한 모든 운영체제에서 로컬 검색 UI를 통해 컴퓨터에 연결된 일반 프린터를 <ph name="CLOUD_PRINT_NAME" />에 추가할 수 있습니다.</translation>
 <translation id="2592091433672667839">판매 모드의 로그인 화면에 화면 보호기가 표시되기 전에 비활성화 상태의 지속 시간</translation>
 <translation id="2592162121850992309">이 정책을 true로 설정하거나 설정하지 않으면 특정 GPU 기능이 차단된 경우를 제외하고 하드웨어 가속이 사용 설정됩니다.
 
@@ -1389,19 +1392,6 @@
 <translation id="2960691910306063964">원격 액세스 호스트에서 PIN을 사용하지 않는 인증을 사용 또는 사용 중지합니다.</translation>
 <translation id="2987155890997901449">ARC 사용</translation>
 <translation id="2987227569419001736">Web Bluetooth API 사용 조정</translation>
-<translation id="3011301228198307065"><ph name="PRODUCT_NAME" />의 기본 홈페이지 URL을 구성하며 사용자가 변경하지 못하게 차단합니다.
-
-          홈페이지는 홈 버튼을 통해 열리는 페이지입니다. 시작 시 열리는 페이지는 RestoreOnStartup 정책으로 제어됩니다.
-
-          홈페이지 유형은 여기에 지정하는 URL로 설정하거나 새 탭 페이지로 설정할 수 있습니다. 새 탭 페이지를 선택하는 경우 이 정책은 효력을 갖지 않습니다.
-
-          이 설정이 사용되면 사용자는 <ph name="PRODUCT_NAME" />에서 홈페이지 URL을 변경할 수 없지만 새 탭 페이지를 홈페이지로 선택할 수는 있습니다.
-
-          이 정책이 설정되지 않았고 HomepageIsNewTabPage도 설정되지 않은 경우 사용자가 홈페이지를 스스로 선택할 수 있습니다.
-
-          URL에는 표준 스키마가 있어야 합니다(예: 'http://example.com' 또는 'https://example.com').
-
-          이 정책은 <ph name="MS_AD_NAME" /> 도메인에 참여하는 Windows 인스턴스 또는 기기 관리에 등록된 Windows 10 Pro/Enterprise 인스턴트에서만 사용할 수 있습니다.</translation>
 <translation id="3016255526521614822"><ph name="PRODUCT_OS_NAME" /> 잠금 화면에서 사용 설정된 메모 앱을 허용 목록에 추가</translation>
 <translation id="3020064401262077616">자녀 계정에만 적용되는 Parental Supervision 정책을 제어합니다.</translation>
 <translation id="3021562480854470924">허용된 주요 롤백의 수</translation>
@@ -2937,6 +2927,7 @@
       VPN 앱을 통해 VPN 연결이 생성된 경우 앱 내부의 UI는 이 정책의 영향을 받지 않습니다. 따라서 사용자는 계속해서 앱을 사용해 VPN 연결을 수정할 수 있습니다.
 
       이 정책은 관리자가 부팅 시 VPN 연결을 구축할 것인지 여부를 결정할 수 있게 해주는 '연결 유지 VPN' 기능과 함께 사용해야 합니다.</translation>
+<translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> 사용 설정</translation>
 <translation id="5405289061476885481"><ph name="PRODUCT_OS_NAME" /> 로그인 화면에서 허용되는 키보드 레이아웃을 구성합니다.
 
       이 정책이 입력 방법 식별자 목록으로 설정되는 경우 주어진 입력 방법을 로그인 화면에서 사용할 수 있습니다. 첫 번째로 주어진 입력 수단이 사전 선택됩니다. 로그인 화면에서는 사용자 포드가 활성화되는데 이때 이 정책에서 주어진 입력 수단과 더불어 사용자가 마지막으로 사용한 입력 수단을 사용할 수 있습니다. 이 정책이 설정되지 않은 경우 로그인 화면의 입력 수단은 로그인 화면이 표시되는 언어에서 가져옵니다. 유효한 입력 수단 식별자가 아닌 값은 무시됩니다.</translation>
@@ -3208,6 +3199,7 @@
           이 정책이 설정되어 있지 않으면 기본 작업이 실행되며 일시중지됩니다.
 
           작업이 일시중지되면 일시중지되기 전에 <ph name="PRODUCT_OS_NAME" />에서 화면을 잠그거나 잠그지 않도록 별도로 설정할 수 있습니다.</translation>
+<translation id="574983287620584622">로그인 화면에서 접근성 기능 단축키 사용 설정</translation>
 <translation id="5755002458331714762"> Web Components v0 API(Shadow DOM v0, Custom Elements v0, HTML Imports)는 2018년에 지원 중단되었으며 M80부터는 기본적으로 사용 중지되어 있습니다. 이 정책을 사용하면 위에서 언급된 기능을 M84까지 선택적으로 다시 사용 설정할 수 있습니다.
 
       정책이 True로 설정되어 있는 경우 Web Components v0 기능이 모든 사이트에 사용됩니다.
@@ -4375,6 +4367,15 @@
       이 정책이 False로 설정되어 있으면 세이프 브라우징 데이터가 수집되지 않습니다.
 
       이 정책은 <ph name="CHROME_REPORTING_EXTENSION_NAME" />이(가) 사용 설정되어 있고 기기가 <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />에 등록된 경우에만 적용됩니다.</translation>
+<translation id="777734450201217641">로그인 화면에서 접근성 기능 단축키를 사용 설정합니다.
+
+          정책이 true로 설정되면 접근성 기능 단축키가 로그인 화면에서 항상 사용 설정됩니다.
+
+          false로 설정되면 접근성 기능 단축키가 로그인 화면에서 항상 사용 중지됩니다.
+
+          정책이 설정되면 사용자가 변경하거나 재정의할 수 없습니다.
+
+          설정되지 않으면 접근성 기능 단축키가 로그인 화면에서 기본적으로 사용 설정됩니다.</translation>
 <translation id="7777535871204167559">외부 저장 기기를 읽기 전용으로 처리합니다.</translation>
 <translation id="7788511847830146438">프로필당</translation>
 <translation id="7792973482799545782">모든 사이트에서 차단 가능한 혼합 콘텐츠 로드 허용 안함</translation>
@@ -4791,6 +4792,15 @@
 
       경고: 버전 제한을 설정하면 사용자가 소프트웨어 업데이트 및 주요 보안 수정사항을 받지 못하게 될 수 있으므로 설정하지 않는 것이 좋습니다. 특정 버전의 접두어로 업데이트를 제한하면 사용자가 위험에 노출될 수도 있습니다.</translation>
 <translation id="8519264904050090490">관리 사용자 직접 예외 URL</translation>
+<translation id="8519516251436131647">접근성 기능 단축키를 사용 설정합니다.
+
+          정책이 true로 설정되면 접근성 기능 단축키가 항상 사용 설정됩니다.
+
+          false로 설정되면 접근성 기능 단축키가 항상 사용 중지됩니다.
+
+          정책이 설정되면 사용자가 변경하거나 재정의할 수 없습니다.
+
+          설정되지 않으면 접근성 기능 단축키가 기본적으로 사용 설정됩니다.</translation>
 <translation id="8525526490824335042">Linux 컨테이너</translation>
 <translation id="8538235451413605457">허용되는 최소 <ph name="PRODUCT_NAME" /> 버전의 요구사항을 설정합니다. 아래에 주어진 버전은 폐기된 것으로 간주되며, 사용자는 OS가 업데이트될 때까지 기기에서 로그인할 수 없습니다.
       사용자 세션 도중에 현재 버전이 폐기되면 사용자는 강제로 로그아웃됩니다.
@@ -5035,6 +5045,12 @@
 
           이 정책을 설정하지 않으면 'PromptOnAccess'가 사용되며 사용자가 변경할 수 있습니다.</translation>
 <translation id="8911348623012274122">Chrome 인스턴스의 메모리 제한 설정</translation>
+<translation id="8911736066340032670">새로고침 빈도와 같은 디스플레이 관련 정보 및
+      드라이버 버전과 같은 그래픽 관련 정보를 보고합니다.
+
+      정책이 false로 설정되거나 설정되지 않으면 디스플레이 및
+      그래픽 상태가 보고되지 않습니다. true로 설정되면 디스플레이 및 그래픽 상태가
+      보고됩니다.</translation>
 <translation id="891435090623616439">JSON 문자열로 인코딩됨, 자세한 내용은 <ph name="COMPLEX_POLICIES_URL" /> 참조</translation>
 <translation id="8917070657147922192">사용자가 설치된 CA 인증을 관리하도록 허용합니다.</translation>
 <translation id="8926275581598789324">이 정책은 지원이 중단되었으며 <ph name="PRODUCT_OS_NAME" /> 버전 82에서 삭제될 예정입니다. 대신 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> 정책을 사용하세요.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 6117a12..c45cf779 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -768,6 +768,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> krijgt voorrang op dit beleid. Dat wil zeggen, een extensie op de zwarte lijst wordt niet geïnstalleerd, zelfs niet als de installatie wordt gestart vanaf een site in deze lijst.</translation>
 <translation id="214901426630414675">Afdrukken in duplexmodus beperken</translation>
 <translation id="2149330464730004005">Afdrukken in kleur inschakelen</translation>
+<translation id="2151831603578119302">Snelkoppelingen voor toegankelijkheidsfuncties inschakelen</translation>
 <translation id="2156132677421487971">Stel beleid voor <ph name="PRODUCT_NAME" /> in, een functie waarmee gebruikers de content van tabbladen, sites of hun bureaublad vanuit de browser naar externe schermen en geluidssystemen kunnen sturen.</translation>
 <translation id="2156755242840687300">Ingeschakelde externe afdrukservers</translation>
 <translation id="2160336427036785721">Hiermee configureer je de hoeveelheid geheugen die één instantie van <ph name="PRODUCT_NAME" /> kan gebruiken voordat tabbladen worden verwijderd om geheugen te besparen (dit houdt in dat het geheugen dat voor het tabblad wordt gebruikt, wordt vrijgemaakt en dat het tabblad opnieuw moet worden geladen als de gebruiker naar dit tabblad schakelt).
@@ -878,6 +879,7 @@
 <translation id="2294382669900758280">Er wordt geen rekening gehouden met het afspelen van video in Android-apps, zelfs niet wanneer dit beleid is ingesteld op <ph name="TRUE" /> (Waar).</translation>
 <translation id="2299220924812062390">Een lijst met ingeschakelde plug-ins specificeren</translation>
 <translation id="2303795211377219696">Automatisch aanvullen inschakelen voor creditcards</translation>
+<translation id="2307496301287881990">Statussen van scherm en graphics rapporteren</translation>
 <translation id="2309390639296060546">Standaardinstelling voor geolocatie</translation>
 <translation id="2327252517317514801">Domeinen definiëren voor toegang tot G Suite</translation>
 <translation id="2328573323851533589">Dit beleid kan worden gebruikt om controle op gegevenslekken gedwongen in of uit te schakelen in <ph name="PRODUCT_NAME" />.
@@ -1137,6 +1139,7 @@
       Als het beleid niet is geconfigureerd of is uitgeschakeld, worden de standaardisolatie-instellingen voor sites van het platform gebruikt voor het inlogscherm.
       </translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> instellen als standaardbrowser</translation>
+<translation id="2588071938417715443">Dit beleid beheert de toegang tot bedienbare functies in de UI voor lokale vindbaarheid (<ph name="CHROME_DEVICES_LINK" />) waarin vindbare apparaten in de buurt van de gebruiker en door de gebruiker geregistreerde cloudapparaten worden weergegeven. Op alle besturingssystemen (met uitzondering van <ph name="PRODUCT_OS_NAME" />) kunnen gebruikers via de UI voor lokale vindbaarheid ook klassieke printers die aan hun computers zijn gekoppeld, toevoegen aan <ph name="CLOUD_PRINT_NAME" />.</translation>
 <translation id="2592091433672667839">Duur van inactiviteit voordat de schermbeveiliging wordt weergegeven in het inlogvenster in de winkelmodus</translation>
 <translation id="2592162121850992309">Als dit beleid is ingesteld op 'true' of niet is ingesteld, wordt hardwareversnelling ingeschakeld, tenzij een specifieke GPU-functie op de blacklist wordt gezet.
 
@@ -1384,19 +1387,6 @@
 <translation id="2960691910306063964">Verificatie zonder pincode in- of uitschakelen voor hosts voor externe toegang</translation>
 <translation id="2987155890997901449">ARC inschakelen</translation>
 <translation id="2987227569419001736">Gebruik van de Web Bluetooth API beheren</translation>
-<translation id="3011301228198307065">Hiermee stel je de standaard-URL voor de homepage in <ph name="PRODUCT_NAME" /> in en voorkom je dat gebruikers deze kunnen wijzigen.
-
-          De homepage is de pagina die wordt geopend met de startknop. Het beleid RestoreOnStartup bepaalt welke pagina's worden geopend wanneer de browser wordt opgestart.
-
-          Het type homepage kan worden ingesteld op een URL die je hier opgeeft of op de pagina 'Nieuw tabblad'. Als je de pagina 'Nieuw tabblad' selecteert, wordt dit beleid niet toegepast.
-
-          Als je deze instelling inschakelt, kunnen gebruikers hun homepage-URL in <ph name="PRODUCT_NAME" /> niet wijzigen, maar kunnen ze wel gewoon de pagina 'Nieuw tabblad' als homepage kiezen.
-
-          Als dit beleid niet wordt ingesteld, kunnen gebruikers zelf hun homepage kiezen als HomepageIsNewTabPage ook niet is ingesteld.
-
-          De URL moet een standaardschema hebben zoals 'http://example.com' of 'https://example.com'.
-
-          Dit beleid is alleen beschikbaar op Windows-instanties die gekoppeld zijn aan een <ph name="MS_AD_NAME" />-domein of op instanties van Windows 10 Pro of Enterprise die ingeschreven zijn voor apparaatbeheer.</translation>
 <translation id="3016255526521614822">Notitie-apps die zijn toegestaan op het <ph name="PRODUCT_OS_NAME" />-vergrendelingsscherm toevoegen aan de witte lijst</translation>
 <translation id="3020064401262077616">Hiermee bepaal je de beleidsregels voor ouderlijk toezicht, die alleen op kinderaccounts worden toegepast.</translation>
 <translation id="3021562480854470924">Aantal mijlpalen dat rollback kan terugzetten</translation>
@@ -2921,6 +2911,7 @@
       Als de VPN-verbinding via een VPN-app wordt gemaakt, heeft dit beleid geen gevolgen voor de gebruikersinterface binnen de app. Daarom kan de gebruiker nog steeds de app gebruiken om de VPN-verbinding te bewerken.
 
       Dit beleid is bedoeld voor gebruik in combinatie met de functie 'Always-on VPN', waarmee de beheerder kan bepalen of er tijdens het opstarten een VPN-verbinding tot stand moet worden gebracht.</translation>
+<translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> inschakelen</translation>
 <translation id="5405289061476885481">Hiermee configureer je welke toetsenbordindelingen zijn toegestaan voor het inlogscherm van <ph name="PRODUCT_OS_NAME" />.
 
       Als dit beleid is ingesteld op een lijst met invoermethode-ID's, zijn de opgegeven invoermethoden beschikbaar in het inlogscherm. De eerste opgegeven invoermethode wordt vooraf geselecteerd. Hoewel een gebruikerspod is gericht op het inlogscherm, is de laatst gebruikte invoermethode van de gebruiker beschikbaar naast de invoermethoden die door dit beleid worden aangegeven. Als dit beleid niet is ingesteld, worden de invoermethoden op het inlogscherm afgeleid van de taal waarin het inlogscherm wordt weergegeven. Waarden die geen geldige invoermethode-ID's zijn, worden genegeerd.</translation>
@@ -3190,6 +3181,7 @@
           Als dit beleid niet is ingesteld, wordt de standaardactie uitgevoerd. De standaardactie is opschorten.
 
           Als de actie opschorten is, kan <ph name="PRODUCT_OS_NAME" /> afzonderlijk worden geconfigureerd om het scherm al dan niet te vergrendelen voordat de opschorting wordt geactiveerd.</translation>
+<translation id="574983287620584622">Snelkoppelingen voor toegankelijkheidsfuncties inschakelen op het inlogscherm</translation>
 <translation id="5755002458331714762"> De Web Components v0 API's (Shadow DOM v0, Custom Elements v0 en HTML Imports) zijn beëindigd in 2018 en zijn vanaf M80 standaard uitgeschakeld. Met dit beleid kunnen deze functies selectief opnieuw worden ingeschakeld tot M84.
 
       Als dit beleid is ingesteld op True, worden de functies van Web Components v0 ingeschakeld voor alle sites.
@@ -4338,6 +4330,15 @@
       Als dit beleid is ingesteld op False, worden er geen gegevens over Safe Browsing verzameld.
 
       Dit beleid is alleen effectief als <ph name="CHROME_REPORTING_EXTENSION_NAME" /> is ingeschakeld en de machine is ingeschreven met <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Schakel snelkoppelingen voor toegankelijkheidsfuncties in op het inlogscherm.
+
+          Als dit beleid is ingesteld op True, zijn snelkoppelingen voor toegankelijkheidsfuncties altijd ingeschakeld op het inlogscherm.
+
+          Als dit beleid is ingesteld op False, zijn snelkoppelingen voor toegankelijkheidsfuncties altijd uitgeschakeld op het inlogscherm.
+
+          Als je dit beleid instelt, kunnen gebruikers dit niet wijzigen of overschrijven.
+
+          Als dit beleid niet is ingesteld, zijn snelkoppelingen voor toegankelijkheidsfuncties standaard ingeschakeld op het inlogscherm.</translation>
 <translation id="7777535871204167559">Externe opslagapparaten behandelen als alleen-lezen</translation>
 <translation id="7788511847830146438">Per profiel</translation>
 <translation id="7792973482799545782">Niet toestaan dat sites blokkeerbare gecombineerde content laden</translation>
@@ -4743,6 +4744,15 @@
 
       Waarschuwing: Het wordt niet aanbevolen versiebeperkingen te configureren, omdat gebruikers hierdoor mogelijk geen software-updates en essentiële beveiligingsoplossingen ontvangen. Als je updates beperkt tot een specifiek versievoorvoegsel, kunnen gebruikers gevaar lopen.</translation>
 <translation id="8519264904050090490">URL's van handmatige uitzonderingen voor beheerde gebruikers</translation>
+<translation id="8519516251436131647">Schakel snelkoppelingen voor toegankelijkheidsfuncties in.
+
+          Als dit beleid is ingesteld op True, zijn snelkoppelingen voor toegankelijkheidsfuncties altijd ingeschakeld.
+
+          Als dit beleid is ingesteld op False, zijn snelkoppelingen voor toegankelijkheidsfuncties altijd uitgeschakeld.
+
+          Als je dit beleid instelt, kunnen gebruikers dit niet wijzigen of overschrijven.
+
+          Als dit beleid niet is ingesteld, zijn snelkoppelingen voor toegankelijkheidsfuncties standaard ingeschakeld.</translation>
 <translation id="8525526490824335042">Linux-container</translation>
 <translation id="8538235451413605457">Hiermee wordt de vereiste van de minimaal toegestane versie van <ph name="PRODUCT_NAME" /> geconfigureerd. Eerdere versies worden behandeld als verouderd en gebruikers kunnen pas op het apparaat inloggen nadat het besturingssysteem is geüpdatet.
 
@@ -4980,6 +4990,9 @@
 
           Als dit beleid niet is ingesteld, wordt 'PromptOnAccess' gebruikt en kan de gebruiker dit wijzigen.</translation>
 <translation id="8911348623012274122">Geheugenlimiet instellen voor Chrome-instanties</translation>
+<translation id="8911736066340032670">Rapporteer informatie over het scherm, zoals de vernieuwingssnelheid, en informatie over graphics, zoals de stuurprogrammaversie.
+
+      Als het beleid is ingesteld op False of niet is ingesteld, worden de statussen van het scherm en de graphics niet gerapporteerd. Als het beleid is ingesteld op True, worden de statussen van het scherm en de graphics gerapporteerd.</translation>
 <translation id="891435090623616439">gecodeerd als een JSON-tekenreeks. Ga voor meer informatie naar <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Gebruikers toestaan geïnstalleerde CA-certificaten te beheren.</translation>
 <translation id="8926275581598789324">Dit beleid is beëindigd en wordt verwijderd in <ph name="PRODUCT_OS_NAME" /> versie 82. Gebruik in plaats daarvan <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 49ec7ec..720bea5 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -456,8 +456,8 @@
         As autorizações configuradas só podem ser aplicadas para contas de crianças e entram em vigor quando a política <ph name="PER_APP_TIME_LIMITS_POLICY_NAME" /> é definida.
         As autorizações configuradas são aplicadas em apps e URLs para que eles não sejam bloqueados por limites de tempo por app.
         Os acessos a URLs autorizados não serão contabilizados no limite de tempo do Chrome.
-        Adicionar expressões regulares de URL a |url_list| para autorizar URLs que correspondam a qualquer expressão regular na lista.
-        Adicionar um app com o |app_id| e |app_type| dele na |app_list| para autorizar o aplicativo.
+        Adicione expressões regulares de URL a |url_list| para autorizar URLs que correspondam a qualquer expressão regular na lista.
+        Adicione um app com o |app_id| e |app_type| dele à |app_list| para autorizar o aplicativo.
        </translation>
 <translation id="1715151459541210849">Ativar recurso de acessibilidade de ditado</translation>
 <translation id="1717817358640580294">Se ela não for definida, e o recurso “Varredura do Chrome” detectar um software indesejado, os metadados sobre a verificação poderão ser enviados ao Google, de acordo com a política definida por SafeBrowsingExtendedReportingEnabled. Depois, será perguntado ao usuário se ele quer limpar o software indesejado na “Varredura do Chrome”. O usuário poderá optar por compartilhar resultados da limpeza com o Google para ajudar na detecção de softwares indesejados no futuro. Esses resultados contêm metadados de arquivos, extensões instaladas automaticamente e chaves de registro, conforme descrito no Relatório de Privacidade do Google Chrome.
@@ -752,6 +752,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> tem prioridade sobre esta política. Ou seja, uma extensão da lista de proibições não será instalada, mesmo se a instalação for feita a partir de um site presente nesta lista.</translation>
 <translation id="214901426630414675">Restringir o modo duplex de impressão</translation>
 <translation id="2149330464730004005">Ativar a impressão colorida</translation>
+<translation id="2151831603578119302">Ativar atalhos de recursos de acessibilidade</translation>
 <translation id="2156132677421487971">"Configurar políticas para o <ph name="PRODUCT_NAME" />", um recurso que permite que os usuários enviem o conteúdo de guias, sites ou a área de trabalho do navegador para telas e sistemas de som remotos.</translation>
 <translation id="2156755242840687300">Servidores de impressão externos ativados</translation>
 <translation id="2160336427036785721">Configura a quantidade de memória que uma única instância do <ph name="PRODUCT_NAME" /> pode usar antes que as guias comecem a ser descartadas para economizar memória. Isto é, a memória usada por uma guia será liberada, e a guia terá que ser atualizada ao ser aberta novamente.
@@ -860,6 +861,7 @@
 <translation id="2294382669900758280">A reprodução de vídeos em apps Android não é levada em consideração, mesmo se esta política estiver definida como <ph name="TRUE" />.</translation>
 <translation id="2299220924812062390">Especifica uma lista de plug-ins ativados</translation>
 <translation id="2303795211377219696">Ativar o preenchimento automático para cartões de crédito</translation>
+<translation id="2307496301287881990">Informar status de tela e gráficos</translation>
 <translation id="2309390639296060546">Configuração padrão de geolocalização</translation>
 <translation id="2327252517317514801">Definir os domínios autorizados a acessar o G Suite</translation>
 <translation id="2328573323851533589">Esta política pode ser usada para ativar ou desativar forçadamente a verificação de vazamento de credenciais no <ph name="PRODUCT_NAME" />.
@@ -981,7 +983,7 @@
       Quando esta política não for configurada ou for definida como verdadeira, as informações sobre versão serão coletadas.
       Quando esta política for definida como falsa, as informações sobre versão não serão coletadas.
 
-      Essa política só é eficaz quando a <ph name="CHROME_REPORTING_EXTENSION_NAME" /> está ativada, e quando a máquina está inscrita na política <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+      Essa política só é eficaz quando a <ph name="CHROME_REPORTING_EXTENSION_NAME" /> está ativada e quando a máquina está inscrita na política <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
 <translation id="2480971699591919564">Ativar o recurso "Clique para ligar", que permite que os usuários enviem números de telefone de computadores com Chrome para um dispositivo Android quando o usuário está conectado. Para mais informações, acesse o artigo de Central de Ajuda: https://support.google.com/chrome/answer/9430554?hl=pt-BR.
 
       Se esta política estiver ativada, a capacidade de enviar números de telefone para dispositivos Android estará ativada para o usuário do Chrome.
@@ -1113,6 +1115,7 @@
       Se a política não for configurada ou estiver desativada, as configurações padrão de "isolamento de sites" da plataforma serão usadas para a tela de login.
       </translation>
 <translation id="2587719089023392205">Definir o <ph name="PRODUCT_NAME" /> como meu navegador padrão</translation>
+<translation id="2588071938417715443">Esta política controla o acesso a recursos controláveis na IU de descobertas locais (<ph name="CHROME_DEVICES_LINK" />), que mostra dispositivos detectáveis próximos do usuário, assim como dispositivos na nuvem registrados neles. Em todos os sistemas operacionais, exceto no<ph name="PRODUCT_OS_NAME" />, a IU de descobertas locais também permite que os usuários adicionem à <ph name="CLOUD_PRINT_NAME" /> impressoras clássicas conectadas aos computadores deles.</translation>
 <translation id="2592091433672667839">Duração da inatividade antes do protetor de tela ser mostrado na tela de login no modo de varejo</translation>
 <translation id="2592162121850992309">Se esta política for definida como verdadeira ou não for definida, a aceleração de hardware será ativada, a menos que um determinado recurso de GPU seja incluído na lista de proibições.
 
@@ -1353,19 +1356,6 @@
 <translation id="2960691910306063964">Ativar ou desativar autenticação sem PIN para hosts de acesso remoto</translation>
 <translation id="2987155890997901449">Ativar ARC</translation>
 <translation id="2987227569419001736">Controla o uso da API Web Bluetooth</translation>
-<translation id="3011301228198307065">Configura o URL padrão da página inicial no <ph name="PRODUCT_NAME" /> e impede os usuários de alterá-lo.
-
-          A página inicial é aquela aberta pelo botão "Página inicial". As páginas que são abertas na inicialização são controladas pelas políticas RestoreOnStartup.
-
-          O tipo da página inicial pode ser configurado como um URL que você especifica aqui ou como a página nova guia. Se você selecionar a página nova guia, esta política não terá efeito.
-
-          Se você ativar essa configuração, os usuários não poderão alterar o URL da página inicial deles no <ph name="PRODUCT_NAME" />, mas eles ainda poderão escolher a página nova guia como página inicial.
-
-          Se esta política não for definida, o usuário poderá escolher a própria página inicial caso HomepageIsNewTabPage também não esteja definida.
-
-          O URL precisa ter um esquema padrão, como "http://example.com" ou "https://example.com".
-
-          Esta política está disponível apenas em instâncias do Windows associadas a um domínio do <ph name="MS_AD_NAME" /> ou instâncias do Windows 10 Pro ou Enterprise inscritas no gerenciamento de dispositivos.</translation>
 <translation id="3016255526521614822">Colocar na lista de permissões os apps de anotação permitidos na tela de bloqueio do <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="3020064401262077616">Controla as políticas de supervisão dos pais, que são aplicadas apenas às contas de crianças.</translation>
 <translation id="3021562480854470924">Número de marcos em que a reversão é permitida</translation>
@@ -2790,7 +2780,7 @@
 
       Configurar essa política como falsa faz com que não haja coleta ou envio dos registros.
 
-      Se a política for deixada definição em versões até a M76, o <ph name="PRODUCT_NAME" /> terá como padrão não coletar esses registros nem fazer upload deles. A partir da versão M77, o <ph name="PRODUCT_NAME" /> terá como padrão coletar os registros e fazer upload deles da maioria dos perfis afetados por políticas de empresas no nível de usuário baseadas em nuvem. A partir da versão M77 até a M80, o <ph name="PRODUCT_NAME" /> também pode coletar esses registros e fazer upload deles por padrão a partir de perfis afetados pelo gerenciamento local do <ph name="PRODUCT_NAME" />.</translation>
+      Se a política não for definida em versões até a M76, o <ph name="PRODUCT_NAME" /> terá como padrão não coletar esses registros nem fazer upload deles. A partir da versão M77, o <ph name="PRODUCT_NAME" /> terá como padrão coletar os registros e fazer upload deles da maioria dos perfis afetados por políticas de empresas no nível de usuário baseadas em nuvem. A partir da versão M77 até a M80, o <ph name="PRODUCT_NAME" /> também pode coletar esses registros e fazer upload deles por padrão a partir de perfis afetados pelo gerenciamento local do <ph name="PRODUCT_NAME" />.</translation>
 <translation id="5331746669335642668">A política de nuvem do <ph name="PRODUCT_NAME" /> substitui a política da plataforma.</translation>
 <translation id="5362531528507578966">Modifica o modo de impressão de gráficos de segundo plano padrão.</translation>
 <translation id="5365476955714838841">Parâmetros de linha de comando para o navegador alternativo.</translation>
@@ -2842,6 +2832,7 @@
       Se a conexão VPN for criada por meio de um app de VPN, a IU dentro do app não será afetada pela política. Portanto, o usuário ainda poderá usar o app para modificar a conexão VPN.
 
       Esta política precisa ser usada em conjunto com o recurso "VPN sempre ativa", que permite ao administrador optar por estabelecer uma conexão VPN na inicialização.</translation>
+<translation id="5401696449591951427">Ativar <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Configura quais layouts de teclado são permitidos na tela de login do <ph name="PRODUCT_OS_NAME" />.
 
       Se esta política for definida como uma lista de identificadores de método de entrada, os métodos de entrada fornecidos ficarão disponíveis na tela de login. O primeiro método de entrada fornecido será pré-selecionado. Enquanto um grupo de usuários estiver focado na tela de login, o último método de entrada usado pelo usuário ficará disponível juntamente com os métodos de entrada fornecidos por esta política. Se esta política não for definida, os métodos de entrada na tela de login serão derivados da localidade em que a tela de login é exibida. Os valores que não forem identificadores de método de entrada válidos serão ignorados.</translation>
@@ -3099,6 +3090,7 @@
           Quando esta política não for definida, a ação padrão de suspender o dispositivo será tomada.
 
           Se a ação for de suspender, o <ph name="PRODUCT_OS_NAME" /> poderá ser configurado separadamente para bloquear ou não a tela antes da suspensão.</translation>
+<translation id="574983287620584622">Ativar atalhos de recursos de acessibilidade na tela de login</translation>
 <translation id="5755002458331714762"> As APIs Web Components v0 (Shadow DOM v0, Custom Elements v0 e HTML Imports) se tornaram obsoletas em 2018 e estão desativadas por padrão desde o M80. Esta política permite que esses recursos sejam seletivamente reativados até o M84.
 
       Se esta política for definida como verdadeira, os recursos da Web Components v0 serão ativados para todos os sites.
@@ -4232,12 +4224,21 @@
 <translation id="7763614521440615342">Mostrar sugestões de conteúdo na página "Nova guia"</translation>
 <translation id="7765879851993224640">Permitir que o login do Smart Lock seja usado.</translation>
 <translation id="7774768074957326919">Usar configurações de proxy do sistema</translation>
-<translation id="7775902646576367944">Esta política controla a permissão de fornecimento de informações sobre o "Navegação segura", incluindo o número do aviso e do clique de aviso.
+<translation id="7775902646576367944">Esta política controla a permissão de fornecimento de informações sobre o "Navegação segura", incluindo o número de avisos e de cliques no aviso.
 
       Quando esta política não for configurada ou for definida como verdadeira, os dados do "Navegação segura" serão coletados.
       Quando esta política for definida como falsa, os dados do "Navegação segura" não serão coletados.
 
       Esta política só é eficaz quando a <ph name="CHROME_REPORTING_EXTENSION_NAME" /> está ativada e quando a máquina está inscrita na política <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Ative atalhos de recursos de acessibilidade na tela de login.
+
+          Se esta política for definida como verdadeira, os atalhos de recursos de acessibilidade sempre estarão ativados na tela de login.
+
+          Se esta política for definida como falsa, os atalhos de recursos de acessibilidade sempre estarão desativados na tela de login.
+
+          Se você definir esta política, o usuário não poderá mudá-la ou substituí-la.
+
+          Se esta política não for definida, os atalhos de recursos de acessibilidade serão ativados por padrão na tela de login.</translation>
 <translation id="7777535871204167559">Tratar dispositivos de armazenamento externo como somente leitura</translation>
 <translation id="7788511847830146438">Por perfil</translation>
 <translation id="7792973482799545782">Não permitir que nenhum site carregue conteúdo combinado bloqueável</translation>
@@ -4644,6 +4645,15 @@
 
       Aviso: não é recomendável configurar restrições de versão, porque elas podem impedir que os usuários recebam atualizações de software e correções de segurança críticas. Restringir as atualizações para um prefixo de versão específico pode colocar os usuários em risco.</translation>
 <translation id="8519264904050090490">URLs de exceção manual do usuário gerenciado</translation>
+<translation id="8519516251436131647">Ative os atalhos de recursos de acessibilidade.
+
+          Se esta política for definida como verdadeira, os atalhos de recursos de acessibilidade sempre estarão ativados.
+
+          Se esta política for definida como falsa, os atalhos de recursos de acessibilidade sempre estarão desativados.
+
+          Se você definir esta política, o usuário não poderá mudá-la ou substituí-la.
+
+          Se esta política não for definida, os atalhos de recursos de acessibilidade serão ativados por padrão.</translation>
 <translation id="8525526490824335042">Contêiner Linux</translation>
 <translation id="8538235451413605457">Configura o requisito da versão mínima permitida de <ph name="PRODUCT_NAME" />. As versões abaixo são tratadas como obsoletas, e o dispositivo não permitiria o login do usuário antes que o SO fosse atualizado.
       Se a versão atual se tornar obsoleta durante a sessão, o usuário será forçadamente desconectado.
@@ -4880,6 +4890,9 @@
 
       Se esta política não for definida, será usado "PromptOnAccess", e o usuário poderá  fazer alterações.</translation>
 <translation id="8911348623012274122">Definir um limite de memória para instâncias do Chrome</translation>
+<translation id="8911736066340032670">Informe os dados relacionados à tela, como a taxa de atualização, e os relacionados a gráficos, como versão do driver.
+
+      Se a política for definida como falsa ou não for definida, os status de tela e gráficos não serão informados. Se ela for definida como verdadeira, os status de tela e gráficos serão informados.</translation>
 <translation id="891435090623616439">codificado como um string JSON, para ver mais detalhes consulte <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Permite que o usuário gerencie os certificados de CA instalados.</translation>
 <translation id="8926275581598789324">Observe que esta política está obsoleta e será removida na versão 82 do <ph name="PRODUCT_OS_NAME" />. Sendo assim, passe a usar <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index 102464b..61a1045 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -756,6 +756,7 @@
           Правило <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> имеет приоритет над ExtensionInstallSources. Это означает, что расширение из черного списка нельзя установить даже с того сайта, адрес которого есть в шаблонах.</translation>
 <translation id="214901426630414675">Ограничить режим двусторонней печати</translation>
 <translation id="2149330464730004005">Включить цветную печать</translation>
+<translation id="2151831603578119302">Использовать быстрые клавиши специальных возможностей</translation>
 <translation id="2156132677421487971">Настройка правил для <ph name="PRODUCT_NAME" /> – технологии, позволяющей пользователям транслировать на телевизоры и аудиосистемы изображение с рабочего стола или контент сайтов и вкладок браузера.</translation>
 <translation id="2156755242840687300">Разрешенные внешние серверы печати</translation>
 <translation id="2160336427036785721">Устанавливает объем памяти, которую может использовать один экземпляр <ph name="PRODUCT_NAME" />, прежде чем браузер начнет отключать вкладки для экономии памяти (это означает, что память, использованная каждой из таких вкладок, будет освобождена, а при переходе на эти вкладки их потребуется перезагрузить).
@@ -867,6 +868,7 @@
 <translation id="2294382669900758280">Видео, которое воспроизводится в приложениях Android, не учитывается, даже если для правила задано значение <ph name="TRUE" />.</translation>
 <translation id="2299220924812062390">Определить список включенных плагинов</translation>
 <translation id="2303795211377219696">Включить автозаполнение данных кредитных карт</translation>
+<translation id="2307496301287881990">Сообщать статусы экрана и видеокарты</translation>
 <translation id="2309390639296060546">Настройка географического положения по умолчанию</translation>
 <translation id="2327252517317514801">Определение доменов с правом доступа к G Suite</translation>
 <translation id="2328573323851533589">Это правило позволяет принудительно включить или отключить в <ph name="PRODUCT_NAME" /> проверку утечки учетных данных.
@@ -1120,6 +1122,7 @@
       Если правило не настроено или отключено, на экране входа будут применяться настройки изоляции сайтов, установленные по умолчанию.
       </translation>
 <translation id="2587719089023392205">Сделать <ph name="PRODUCT_NAME" /> браузером по умолчанию</translation>
+<translation id="2588071938417715443">Это правило контролирует доступ к управляемым функциям интерфейса локального поиска (<ph name="CHROME_DEVICES_LINK" />), где показываются видимые устройства, находящиеся рядом с пользователем, а также связанные с ними облачные устройства. Во всех операционных системах, кроме <ph name="PRODUCT_OS_NAME" />, интерфейс локального поиска также позволяет пользователям добавлять подключенные к их компьютерам классические принтеры в <ph name="CLOUD_PRINT_NAME" />.</translation>
 <translation id="2592091433672667839">Время ожидания заставки на экране входа в коммерческой версии</translation>
 <translation id="2592162121850992309">Если правило не настроено или для него задано значение True, аппаратное ускорение будет включено при условии, что соответствующая функция графического процессора не находится в черном списке.
 
@@ -1362,19 +1365,6 @@
 <translation id="2960691910306063964">Включает/отключает аутентификацию без PIN-кода для хостов удаленного доступа</translation>
 <translation id="2987155890997901449">Включить ARC</translation>
 <translation id="2987227569419001736">Контроль использования Web Bluetooth API</translation>
-<translation id="3011301228198307065">Настраивает URL главной страницы по умолчанию в <ph name="PRODUCT_NAME" /> и запрещает пользователям изменять его.
-
-          Главная страница открывается при нажатии соответствующей кнопки. Страницы, открывающиеся при запуске браузера, определяются правилом RestoreOnStartup.
-
-          В качестве главной страницы можно указать определенный URL или использовать страницу быстрого доступа. В последнем случае это правило действовать не будет.
-
-          Если вы включите эту настройку, пользователи не смогут изменить URL главной страницы в <ph name="PRODUCT_NAME" />, но у них будет возможность установить вместо нее страницу быстрого доступа.
-
-          Если правило не настроено, пользователи могут самостоятельно выбирать главную страницу (при условии, что не действует правило HomepageIsNewTabPage).
-
-          URL должен быть указан в стандартном виде, например http://example.com или https://example.com.
-
-          Правило можно установить только на устройствах Windows, входящих в домен <ph name="MS_AD_NAME" />, а также на устройствах Windows 10 Pro или Enterprise, зарегистрированных в консоли администратора.</translation>
 <translation id="3016255526521614822">Приложения для заметок, которые могут работать на заблокированном экране <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Позволяет задать правила родительского контроля, применяемые для детских аккаунтов.</translation>
 <translation id="3021562480854470924">Число контрольных точек, до которых разрешен возврат</translation>
@@ -2860,6 +2850,7 @@
       Если пользователь создает VPN-подключения с помощью специального приложения, правило не распространяется на интерфейс этого приложения, и пользователь по-прежнему может изменять VPN-подключения через него.
 
       Это правило должно использоваться вместе с функцией "Постоянная VPN", которая позволяет администратору устанавливать VPN-подключение при загрузке.</translation>
+<translation id="5401696449591951427">Включить <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Задает раскладки клавиатуры, доступные на экране входа <ph name="PRODUCT_OS_NAME" />.
 
       Если выбран список идентификаторов способов ввода, на экране входа будут указаны эти способы. Выбор будет установлен на первом элементе списка. Если на экране отображается список пользователей, дополнительно будут доступны неиспользуемые в последнее время способы ввода. Если правило не настроено, способы ввода будут определяться региональными настройками для экрана входа. Некорректные идентификаторы способов ввода будут скрыты.</translation>
@@ -3126,6 +3117,7 @@
           Если значение не задано, выполняется действие по умолчанию (переход в спящий режим).
 
           В последнем случае отдельный параметр определяет, будет ли экран устройства с <ph name="PRODUCT_OS_NAME" /> заблокирован до активации спящего режима.</translation>
+<translation id="574983287620584622">Использовать быстрые клавиши специальных возможностей на экране входа</translation>
 <translation id="5755002458331714762"> Поддержка API веб-компонентов версии 0 (Shadow DOM версии 0, Custom Elements версии 0 и HTML Imports) прекратилась в 2018 году, а начиная с версии M80 эти API по умолчанию отключены. Это правило позволяет выборочно включать их в Chrome снова вплоть до версии M84.
 
       Если для правила задано значение True, функции веб-компонентов версии 0 будут включены для всех сайтов.
@@ -4268,6 +4260,15 @@
       Когда установлено значение False, данные не собираются.
 
       Это правило действует, только когда включено расширение <ph name="CHROME_REPORTING_EXTENSION_NAME" /> и компьютер зарегистрирован при помощи правила <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Использование быстрых клавиш специальных возможностей на экране входа.
+
+          Если для правила задано значение True, быстрые клавиши специальных возможностей всегда будут работать на экране входа.
+
+          Если установлено значение False, быстрые клавиши специальных возможностей никогда не будут работать на экране входа.
+
+          Если правило настроено, пользователи не могут изменить или переопределить его.
+
+          Если не настроить это правило, по умолчанию быстрые клавиши специальных возможностей будут работать на экране входа.</translation>
 <translation id="7777535871204167559">Использовать внешние запоминающие устройства в режиме только для чтения</translation>
 <translation id="7788511847830146438">Для каждого профиля</translation>
 <translation id="7792973482799545782">Запрет на скачивание блокируемого смешанного контента на всех сайтах</translation>
@@ -4675,6 +4676,15 @@
 
       Внимание! Ограничивая версию, вы подвергаете пользователей риску, поскольку они перестают получать обновления ПО и системы безопасности.</translation>
 <translation id="8519264904050090490">Исключения для URL, устанавливаемые вручную управляемыми пользователями</translation>
+<translation id="8519516251436131647">Использование быстрых клавиш специальных возможностей.
+
+          Если для правила задано значение True, быстрые клавиши специальных возможностей всегда будут работать.
+
+          Если установлено значение False, быстрые клавиши специальных возможностей никогда не будут работать.
+
+          Если правило настроено, пользователи не могут изменить или переопределить его.
+
+          Если не настроить это правило, быстрые клавиши специальных возможностей будут работать по умолчанию.</translation>
 <translation id="8525526490824335042">Контейнер Linux</translation>
 <translation id="8538235451413605457">Позволяет указать минимально допустимую версию <ph name="PRODUCT_NAME" />. Более ранние версии считаются устаревшими. Пользователь не сможет войти в систему, пока не обновит ОС на устройстве.
       Если текущая версия устареет во время сеанса работы, то пользователь автоматически выйдет из аккаунта.
@@ -4913,6 +4923,12 @@
 
           Если это правило не настроено, используется параметр PromptOnAccess, но пользователь может изменить его.</translation>
 <translation id="8911348623012274122">Задать ограничение для памяти, используемой экземплярами Chrome</translation>
+<translation id="8911736066340032670">Передача информации об экране (например, частоты обновления)
+      и видеокарте (например, версии драйвера).
+
+      Если правило не настроено или задано значение False, статусы экрана и видеокарты
+      не передаются. Если установлено значение True, статусы экрана и видеокарты
+      передаются.</translation>
 <translation id="891435090623616439">кодируется в виде строки JSON, подробнее см. на странице <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Разрешить пользователям управлять установленными сертификатами ЦС</translation>
 <translation id="8926275581598789324">Правило больше не поддерживается и будет удалено из <ph name="PRODUCT_OS_NAME" /> 82. Вместо него используйте следующее: <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index 23b1592c..77f5ba29 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -458,8 +458,8 @@
         รายการที่อนุญาตพิเศษที่กำหนดจะใช้กับบัญชีผู้ใช้ที่เป็นเด็กและมีผลเฉพาะเมื่อมีการตั้งค่านโยบาย <ph name="PER_APP_TIME_LIMITS_POLICY_NAME" />
         รายการที่อนุญาตพิเศษที่กำหนดจะใช้กับแอปพลิเคชันและ URL เพื่อไม่ให้ถูกบล็อกโดยการจำกัดเวลาต่อแอป
         การเข้าถึง URL ที่อนุญาตพิเศษจะไม่นับรวมในการจำกัดเวลาของ Chrome
-        เพิ่มนิพจน์ทั่วไปของ URL ไปยังรายการ |url_list| เพื่ออนุญาตพิเศษ URL ที่ตรงกับนิพจน์ทั่วไปใดๆ ในรายการ
-        เพิ่มแอปพลิเคชันพร้อม |app_id| และ |app_type| ของแอปไปยังรายการ |app_list| เพื่ออนุญาตพิเศษแอปพลิเคชันนั้น
+        เพิ่มนิพจน์ทั่วไปของ URL ไปยังรายการ |url_list| เพื่อเพิ่ม URL ที่ตรงกับนิพจน์ทั่วไปใดๆ ในรายการลงในรายการที่อนุญาตพิเศษ
+        เพิ่มแอปพลิเคชันพร้อม |app_id| และ |app_type| ของแอปไปยังรายการ |app_list| เพื่อเพิ่มแอปพลิเคชันนั้นลงในรายการที่อนุญาตพิเศษ
        </translation>
 <translation id="1715151459541210849">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับการเขียนตามคำบอก</translation>
 <translation id="1717817358640580294">หากไม่ได้ตั้งค่า เมื่อการทำความสะอาด Chrome ตรวจพบซอฟต์แวร์ไม่พึงประสงค์ ระบบอาจรายงานข้อมูลเมตาเกี่ยวกับการสแกนไปยัง Google เพื่อให้สอดคล้องกับนโยบายซึ่งกำหนดโดย SafeBrowsingExtendedReportingEnabled จากนั้นการทำความสะอาด Chrome จะถามผู้ใช้ว่าต้องการนำซอฟต์แวร์ไม่พึงประสงค์ออกไหม ผู้ใช้มีสิทธิ์เลือกแชร์ผลการทำความสะอาดกับ Google เพื่อช่วยในการตรวจจับซอฟต์แวร์ไม่พึงประสงค์ในอนาคต ผลลัพธ์จะมีข้อมูลเมตาของไฟล์ ส่วนขยายที่ติดตัั้งอัตโนมัติ และคีย์รีจิสทรีตามที่อธิบายไว้ในสมุดปกขาวเรื่องความเป็นส่วนตัวของ Chrome
@@ -754,6 +754,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> จะมีความสำคัญเหนือนโยบายนี้ ซึ่งหมายความว่าระบบจะไม่ติดตั้งส่วนขยายที่อยู่ในบัญชีดำ แม้ว่าจะปรากฏอยู่ในเว็บไซต์ในรายการนี้ก็ตาม</translation>
 <translation id="214901426630414675">จำกัดโหมดพิมพ์ 2 ด้าน</translation>
 <translation id="2149330464730004005">เปิดใช้การพิมพ์สี</translation>
+<translation id="2151831603578119302">เปิดใช้แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษ</translation>
 <translation id="2156132677421487971">กำหนดค่านโยบายต่างๆ สำหรับ <ph name="PRODUCT_NAME" /> ซึ่งเป็นฟีเจอร์ที่ให้ผู้ใช้ส่งเนื้อหาในแท็บ ไซต์ หรือเดสก์ท็อปจากเบราว์เซอร์ไปยังจอแสดงผลและระบบเสียงระยะไกลได้</translation>
 <translation id="2156755242840687300">เซิร์ฟเวอร์การพิมพ์ภายนอกที่เปิดใช้</translation>
 <translation id="2160336427036785721">กำหนดขนาดหน่วยความจำที่อินสแตนซ์หนึ่งๆ ของ <ph name="PRODUCT_NAME" /> จะใช้ได้ก่อนเริ่มทิ้งแท็บ (กล่าวคือ หน่วยความจำที่แท็บใช้จะถูกล้างและจะต้องโหลดแท็บซ้ำเมื่อมีการสลับไปยังแท็บนั้น) เพื่อประหยัดหน่วยความจำ
@@ -862,6 +863,7 @@
 <translation id="2294382669900758280">ไม่มีการพิจารณาการเล่นวิดีโอในแอป Android แม้ว่าจะตั้งค่านโยบายนี้เป็น <ph name="TRUE" /> ก็ตาม</translation>
 <translation id="2299220924812062390">ระบุรายการปลั๊กอินที่เปิดใช้งาน</translation>
 <translation id="2303795211377219696">เปิดใช้ "ป้อนข้อความอัตโนมัติ" สำหรับบัตรเครดิต</translation>
+<translation id="2307496301287881990">รายงานสถานะการแสดงผลและกราฟิก</translation>
 <translation id="2309390639296060546">การตั้งค่าตำแหน่งทางภูมิศาสตร์เริ่มต้น</translation>
 <translation id="2327252517317514801">กำหนดโดเมนที่อนุญาตให้เข้าถึง G Suite</translation>
 <translation id="2328573323851533589">นโยบายนี้ใช้เพื่อบังคับให้เปิดใช้หรือปิดใช้การตรวจหาการรั่วไหลของข้อมูลเข้าสู่ระบบใน <ph name="PRODUCT_NAME" /> ได้
@@ -1114,6 +1116,7 @@
       หากไม่ได้กำหนดค่านโยบายหรือปิดใช้ไว้ ระบบจะใช้การตั้งค่าการแยกเว็บไซต์เริ่มต้นของแพลตฟอร์มสำหรับหน้าจอการลงชื่อเข้าใช้
       </translation>
 <translation id="2587719089023392205">ตั้ง <ph name="PRODUCT_NAME" /> เป็นเบราว์เซอร์เริ่มต้น</translation>
+<translation id="2588071938417715443">นโยบายนี้ควบคุมการเข้าถึงฟีเจอร์ที่ควบคุมได้ใน UI การค้นพบในพื้นที่ (<ph name="CHROME_DEVICES_LINK" />) ซึ่งแสดงอุปกรณ์ที่ค้นพบได้ใกล้ตัวผู้ใช้ ตลอดจนอุปกรณ์ระบบคลาวด์ที่ลงทะเบียนไว้กับอุปกรณ์ดังกล่าวด้วย ในระบบปฏิบัติการทั้งหมดยกเว้น <ph name="PRODUCT_OS_NAME" /> UI การค้นพบในพื้นที่ยังอนุญาตให้ผู้ใช้เพิ่มเครื่องพิมพ์แบบคลาสสิกที่เชื่อมต่ออยู่กับคอมพิวเตอร์ไปยัง <ph name="CLOUD_PRINT_NAME" /> ด้วย</translation>
 <translation id="2592091433672667839">ระยะเวลาการไม่ใช้งานก่อนที่โปรแกรมรักษาหน้าจอจะแสดงขึ้นบนหน้าจอลงชื่อเข้าใช้ในโหมดปลีก</translation>
 <translation id="2592162121850992309">หากตั้งค่านโยบายนี้เป็น "จริง" หรือไม่ได้ตั้งค่า ระบบจะเปิดใช้การเร่งฮาร์ดแวร์ เว้นแต่ในกรณีที่ฟีเจอร์ GPU อยู่ในบัญชีดำ
 
@@ -1355,19 +1358,6 @@
 <translation id="2960691910306063964">เปิดหรือปิดใช้การตรวจสอบสิทธิ์โดยไม่ใช้ PIN สำหรับโฮสต์การเข้าถึงระยะไกล</translation>
 <translation id="2987155890997901449">เปิดใช้ ARC</translation>
 <translation id="2987227569419001736">ควบคุมการใช้ Web Bluetooth API</translation>
-<translation id="3011301228198307065">กำหนดค่า URL ของหน้าแรกเริ่มต้นใน <ph name="PRODUCT_NAME" /> และป้องกันไม่ให้ผู้ใช้เปลี่ยนหน้าดังกล่าว
-
-          หน้าแรกคือหน้าที่เปิดโดยปุ่ม "หน้าแรก" หน้าต่างๆ ที่เปิดขึ้นเมื่อเริ่มต้นจะควบคุมด้วยนโยบาย RestoreOnStartup
-
-          คุณตั้งค่าประเภทหน้าแรกเป็น URL ตามที่ระบุไว้ที่นี่หรือตั้งค่าเป็น "หน้าแท็บใหม่" ก็ได้ หากคุณเลือก "หน้าแท็บใหม่" นโยบายนี้จะไม่มีผล
-
-          หากคุณเปิดใช้การตั้งค่านี้ ผู้ใช้จะเปลี่ยน URL หน้าแรกของตนใน <ph name="PRODUCT_NAME" /> ไม่ได้ แต่จะยังเลือกหน้าแท็บใหม่เป็นหน้าแรกได้
-
-          หากไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้จะเลือกหน้าแรกได้เองหากไม่ได้ตั้งค่า HomepageIsNewTabPage ไว้ด้วย
-
-          URL ต้องมีรูปแบบมาตรฐาน เช่น "http://example.com" หรือ "https://example.com"
-
-          นโยบายนี้ใช้ได้เฉพาะในอินสแตนซ์ Windows ซึ่งเข้าร่วมโดเมน <ph name="MS_AD_NAME" /> หรืออินสแตนซ์ Windows 10 Pro หรือ Enterprise ที่เข้าร่วมการจัดการอุปกรณ์</translation>
 <translation id="3016255526521614822">อนุญาตพิเศษให้แอปสำหรับจดโน้ตแสดงในหน้าจอล็อกของ <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">ควบคุมนโยบายการควบคุมดูแลโดยผู้ปกครองซึ่งใช้กับบัญชีของเด็กเท่านั้น</translation>
 <translation id="3021562480854470924">อนุญาตให้มีจุดการย้อนกลับ</translation>
@@ -2792,7 +2782,7 @@
       มิฉะนั้น อาจตั้งค่านโยบายเป็นค่าใดค่าหนึ่งระหว่าง "tls1.2" หรือ "tls1.3" เมื่อตั้งค่าแล้ว <ph name="PRODUCT_NAME" /> จะไม่ใช้เวอร์ชัน SSL/TLS ที่สูงกว่าเวอร์ชันที่ระบุไว้ และระบบจะไม่สนใจค่าที่ไม่รู้จัก</translation>
 <translation id="5330684698007383292">อนุญาตให้ <ph name="PRODUCT_FRAME_NAME" /> จัดการประเภทเนื้อหาดังต่อไปนี้</translation>
 <translation id="5331081760098249172">
-      หากตั้งค่านโยบายนี้เป็น "จริง" <ph name="PRODUCT_NAME" /> จะได้รับอนุญาตให้รวบรวมบันทึกเหตุการณ์ WebRTC จากบริการของ Google เช่น Hangouts Meet และอัปโหลดบันทึกไปยัง Google บันทึกเหล่านี้มีข้อมูลการวินิจฉัยสำหรับแก้ไขข้อบกพร่องเกี่ยวกับการประชุมด้วยการโทรด้วยเสียงหรือการประชุมทางวิดีโอใน <ph name="PRODUCT_NAME" /> เช่น เวลาและขนาดของแพ็กเก็ต RTP, ผลป้อนกลับเกี่ยวกับความหนาแน่นในเครือข่าย ตลอดจนข้อมูลเมตาเกี่ยวกับระยะเวลาและคุณภาพของเสียงและเฟรมของวิดีโอ บันทึกเหล่านี้ไม่มีเนื้อหาเสียงหรือวิดีโอจากการประชุม เพื่อให้แก้ไขข้อบกพร่องได้ง่ายขึ้น Google อาจเชื่อมโยงบันทึกเหล่านี้ (โดยใช้รหัสเซสชัน) กับบันทึกอื่นๆ ที่บริการของ Google รวบรวมไว้เอง
+      หากตั้งค่านโยบายนี้เป็น "จริง" <ph name="PRODUCT_NAME" /> จะได้รับอนุญาตให้รวบรวมบันทึกเหตุการณ์ WebRTC จากบริการของ Google เช่น Hangouts Meet และอัปโหลดบันทึกไปยัง Google บันทึกเหล่านี้มีข้อมูลการวินิจฉัยสำหรับแก้ไขข้อบกพร่องเกี่ยวกับการประชุมด้วยเสียงหรือการประชุมทางวิดีโอใน <ph name="PRODUCT_NAME" /> เช่น เวลาและขนาดของแพ็กเก็ต RTP, ผลป้อนกลับเกี่ยวกับความหนาแน่นในเครือข่าย ตลอดจนข้อมูลเมตาเกี่ยวกับระยะเวลาและคุณภาพของเสียงและเฟรมของวิดีโอ บันทึกเหล่านี้ไม่มีเนื้อหาเสียงหรือวิดีโอจากการประชุม เพื่อให้แก้ไขข้อบกพร่องได้ง่ายขึ้น Google อาจเชื่อมโยงบันทึกเหล่านี้ (โดยใช้รหัสเซสชัน) กับบันทึกอื่นๆ ที่บริการของ Google รวบรวมไว้เอง
 
       การตั้งค่านโยบายนี้เป็น "เท็จ" จะส่งผลให้ไม่มีการรวบรวมหรืออัปโหลดบันทึกดังกล่าว
 
@@ -2852,6 +2842,7 @@
       หากการเชื่อมต่อ VPN สร้างผ่านแอป VPN นโยบายนี้จะไม่ส่งผลต่อ UI ภายในแอป ผู้ใช้จึงอาจยังใช้แอปเพื่อแก้ไขการเชื่อมต่อ VPN ได้
 
       นโยบายนี้ควรใช้ร่วมกับฟีเจอร์ "การเชื่อมต่อ VPN ตลอดเวลา" ซึ่งให้ผู้ดูแลระบบเลือกที่จะสร้างการเชื่อมต่อ VPN เมื่อเปิดเครื่องได้</translation>
+<translation id="5401696449591951427">เปิดใช้ <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">กำหนดค่ารูปแบบแป้นพิมพ์ที่อนุญาตให้ใช้ในหน้าจอการลงชื่อเข้าใช้ของ <ph name="PRODUCT_OS_NAME" />
 
       หากตั้งค่านโยบายนี้เป็นรายการตัวระบุวิธีการป้อนข้อมูล วิธีการป้อนข้อมูลที่ระบุจะพร้อมใช้งานในหน้าจอการลงชื่อเข้าใช้ ระบบจะเลือกวิธีการป้อนข้อมูลแรกที่ระบุไว้ล่วงหน้า เมื่อมีการทำงานบนพ็อดผู้ใช้ในหน้าจอการลงชื่อเข้าใช้ วิธีการป้อนข้อมูลที่ผู้ใช้ใช้ล่าสุดจะพร้อมใช้งานนอกเหนือจากวิธีการป้อนข้อมูลที่ได้จากนโยบายนี้ หากไม่ได้ตั้งค่านโยบายนี้ วิธีการป้อนข้อมูลในหน้าจอการลงชื่อเข้าใช้จะได้รับมาจากภาษาที่หน้าจอการลงชื่อเข้าใช้แสดง ระบบจะไม่สนใจค่าที่ไม่ใช่ตัวระบุวิธีการป้อนข้อมูลที่ถูกต้อง</translation>
@@ -3108,6 +3099,7 @@
           เมื่อไม่ได้ตั้งค่านโยบายนี้ ระบบจะดำเนินการตามค่าเริ่มต้นซึ่งก็คือระงับการทำงาน
 
           หากมีการระงับการทำงาน คุณจะกำหนดค่า <ph name="PRODUCT_OS_NAME" /> แยกต่างหากเพื่อให้ล็อกหรือไม่ล็อกหน้าจอก่อนที่จะมีการระงับได้</translation>
+<translation id="574983287620584622">เปิดใช้แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="5755002458331714762"> Web Components v0 API (Shadow DOM v0, Custom Elements v0 และ HTML Imports) เลิกใช้งานไปในปี 2018 และถูกปิดใช้งานโดยค่าเริ่มต้นเริ่มตั้งแต่ในเวอร์ชัน M80 นโยบายนี้อนุญาตให้เลือกเปิดใช้ฟีเจอร์เหล่านี้ได้อีกครั้งจนถึงเวอร์ชัน M84
 
       หากตั้งค่านโยบายนี้เป็น "จริง" จะเปิดใช้ฟีเจอร์ Web Components v0 สำหรับทุกเว็บไซต์
@@ -3723,7 +3715,7 @@
       หากตั้งค่านโยบายนี้เป็น "จริง" หรือไม่ได้ตั้งค่า ระบบจะเปิดใช้รูปแบบการหรี่แสงอัจฉริยะและอนุญาตให้ขยายเวลาจนกว่าแสงหน้าจอจะหรี่ลง หากตั้งค่านโยบายนี้เป็น "เท็จ" รูปแบบการหรี่แสงอัจฉริยะจะไม่มีผลต่อการหรี่แสงหน้าจอ</translation>
 <translation id="6972540544240464302">เลือกการกำหนดค่าเครื่องจัดตารางเวลางาน</translation>
 <translation id="6979158407327259162">Google ไดรฟ์</translation>
-<translation id="6991078864332103177">นโยบายนี้ควบคุมว่าจะรายงานข้อมูลที่สามารถใช้ระบุผู้ใช้หรือไม่ เช่น ชื่อที่ใช้สำหรับเข้าสู่ระบบปฏิบัติการ ชื่อที่ใช้สำหรับเข้าสู่ระบบโปรไฟล์ <ph name="PRODUCT_NAME" /> ชื่อโปรไฟล์ <ph name="PRODUCT_NAME" /> เส้นทางโปรไฟล์ <ph name="PRODUCT_NAME" /> และเส้นทางที่สั่งการได้ของ <ph name="PRODUCT_NAME" />
+<translation id="6991078864332103177">นโยบายนี้ควบคุมว่าจะรายงานข้อมูลที่สามารถใช้ระบุผู้ใช้หรือไม่ เช่น ชื่อที่ใช้สำหรับเข้าสู่ระบบปฏิบัติการ ชื่อที่ใช้สำหรับเข้าสู่ระบบโปรไฟล์ <ph name="PRODUCT_NAME" /> ชื่อโปรไฟล์ <ph name="PRODUCT_NAME" /> เส้นทางโปรไฟล์ <ph name="PRODUCT_NAME" /> และเส้นทางที่เรียกใช้ได้ของ <ph name="PRODUCT_NAME" />
 
       หากไม่ได้ตั้งค่านโยบายนี้หรือตั้งค่าเป็น "จริง" ระบบจะรวบรวมข้อมูลที่ใช้ระบุผู้ใช้ได้
       หากตั้งค่านโยบายนี้เป็น "เท็จ" ระบบจะไม่รวบรวมข้อมูลที่ใช้ระบุผู้ใช้ได้
@@ -4254,6 +4246,15 @@
       เมื่อตั้งค่านโยบายนี้เป็น "เท็จ" ระบบจะไม่รวบรวมข้อมูล Google Safe Browsing
 
       นโยบายนี้จะมีผลเฉพาะเมื่อ <ph name="CHROME_REPORTING_EXTENSION_NAME" /> เปิดอยู่ และลงทะเบียนเครื่องกับ <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" /> แล้ว</translation>
+<translation id="777734450201217641">เปิดใช้แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษในหน้าจอการเข้าสู่ระบบ
+
+          หากตั้งค่านโยบายนี้เป็น "จริง" แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษในหน้าจอการเข้าสู่ระบบจะเปิดใช้อยู่เสมอ
+
+          หากตั้งค่านโยบายนี้เป็น "เท็จ" แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษในหน้าจอการเข้าสู่ระบบจะปิดใช้อยู่เสมอ
+
+          หากตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนหรือลบล้างไม่ได้
+
+          หากไม่ได้ตั้งค่านโยบายนี้ แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษในหน้าจอการเข้าสู่ระบบจะเปิดใช้อยู่โดยค่าเริ่มต้น</translation>
 <translation id="7777535871204167559">ทำให้อุปกรณ์เก็บข้อมูลภายนอกเป็นแบบอ่านอย่างเดียว</translation>
 <translation id="7788511847830146438">ต่อโปรไฟล์</translation>
 <translation id="7792973482799545782">ไม่อนุญาตให้เว็บไซต์ใดๆ โหลดเนื้อหาผสมที่บล็อกได้</translation>
@@ -4662,6 +4663,15 @@
 
       คำเตือน: เราไม่แนะนำให้กำหนดค่าข้อจำกัดของเวอร์ชันเพราะอาจทำให้ผู้ใช้ไม่ได้รับการอัปเดตซอฟต์แวร์และการปรับปรุงความปลอดภัยที่สำคัญ การจำกัดการอัปเดตเป็นส่วนนำเวอร์ชันที่เจาะจงอาจทำให้ผู้ใช้มีความเสี่ยง</translation>
 <translation id="8519264904050090490">URL ข้อยกเว้นแบบกำหนดเองของผู้ใช้ที่ได้รับการจัดการ</translation>
+<translation id="8519516251436131647">เปิดใช้แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษ
+
+          หากตั้งค่านโยบายนี้เป็น "จริง" แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษจะเปิดใช้อยู่เสมอ
+
+          หากตั้งค่านโยบายนี้เป็น "เท็จ" แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษจะปิดใช้อยู่เสมอ
+
+          หากตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนหรือลบล้างไม่ได้
+
+          หากไม่ได้ตั้งค่านโยบายนี้ แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษจะเปิดใช้อยู่โดยค่าเริ่มต้น</translation>
 <translation id="8525526490824335042">คอนเทนเนอร์ Linux</translation>
 <translation id="8538235451413605457">กำหนดค่าข้อกำหนดของเวอร์ชันขั้นต่ำที่อนุญาตของ <ph name="PRODUCT_NAME" /> ระบบจะถือว่าเวอร์ชันที่แสดงอยู่ด้านล่างนี้ล้าสมัยและอุปกรณ์จะไม่อนุญาตให้ผู้ใช้ลงชื่อเข้าใช้จนกว่าจะอัปเดตระบบปฏิบัติการ
       หากเวอร์ชันปัจจุบันไม่ใช่เวอร์ชันที่อนุญาตในขณะที่ผู้ใช้อยู่ในเซสชัน ระบบจะนำผู้ใช้ออกจากระบบ
@@ -4898,6 +4908,9 @@
 
           หากไม่ตั้งค่านโยบายนี้ "PromptOnAccess" จะถูกใช้และผู้ใช้จะสามารถเปลี่ยนแปลงได้</translation>
 <translation id="8911348623012274122">ตั้งขีดจำกัดหน่วยความจำสำหรับอินสแตนซ์ของ Chrome</translation>
+<translation id="8911736066340032670">รายงานข้อมูลเกี่ยวกับการแสดงผล เช่น อัตราการรีเฟรช และข้อมูลเกี่ยวกับกราฟิก เช่น เวอร์ชันของไดรเวอร์
+
+      หากตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่า ระบบจะไม่รายงานสถานะการแสดงผลและกราฟิก หากตั้งค่าเป็น "จริง" ระบบจะรายงานสถานะการแสดงผลและกราฟิก</translation>
 <translation id="891435090623616439">เข้ารหัสเป็นสตริง JSON ดูรายละเอียดได้ที่ <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">อนุญาตให้ผู้ใช้จัดการใบรับรอง CA ที่ติดตั้งไว้</translation>
 <translation id="8926275581598789324">โปรดทราบว่าจะมีการเลิกใช้งานและนำนโยบายนี้ออกใน <ph name="PRODUCT_OS_NAME" /> เวอร์ชัน 82 โปรดใช้ <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> แทน
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index ea10dc9..0f399c09 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -767,6 +767,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" />, bu politikaya göre daha önceliklidir. Diğer bir deyişle, kara listedeki bir uzantı bu listedeki bir sitede bulunsa bile yüklenmeyecektir.</translation>
 <translation id="214901426630414675">Dupleks yazdırma modunu kısıtla</translation>
 <translation id="2149330464730004005">Renkli yazdırmayı etkinleştir</translation>
+<translation id="2151831603578119302">Erişilebilirlik özellikleri kısayollarını etkinleştir</translation>
 <translation id="2156132677421487971">Kullanıcıların tarayıcılarındaki sekme, site veya masaüstü içeriklerini uzak ekranlara ve ses sistemlerine göndermelerine olanak tanıyan <ph name="PRODUCT_NAME" /> özelliğine ilişkin politikaları yapılandırın.</translation>
 <translation id="2156755242840687300">Harici yazdırma sunucuları etkin</translation>
 <translation id="2160336427036785721">Bellekten tasarruf etmek için sekmelerin silinmeye başlamasından önce (sekme tarafından kullanılan bellek serbest kalır ve sekmeye geçiş yapıldığında sekmenin yeniden yüklenmesi gerekir) tek bir <ph name="PRODUCT_NAME" /> örneğinin kullanabileceği bellek miktarını yapılandırır.
@@ -879,6 +880,7 @@
 <translation id="2294382669900758280">Bu politika <ph name="TRUE" /> seçeneğine ayarlansa bile Android uygulamalarında video oynatma dikkate alınmaz.</translation>
 <translation id="2299220924812062390">Etkinleştirilmiş eklentilerin listesini belirt</translation>
 <translation id="2303795211377219696">Kredi kartları için Otomatik Doldurma özelliğini etkinleştirme</translation>
+<translation id="2307496301287881990">Ekran ve grafik durumlarını raporla</translation>
 <translation id="2309390639296060546">Varsayılan coğrafi konum ayarı</translation>
 <translation id="2327252517317514801">G Suite'e erişmesine izin verilen alan adlarını tanımla</translation>
 <translation id="2328573323851533589">Bu politika, <ph name="PRODUCT_NAME" /> ürününde kimlik bilgisi sızıntılarının kontrolünü etkinleştirmeyi veya devre dışı bırakmayı zorunlu tutmak için kullanılabilir.
@@ -1138,6 +1140,7 @@
       Bu politika yapılandırılmaz veya devre dışı bırakılırsa, oturum açma ekranı için platformun varsayılan site izolasyonu ayarları kullanılır.
       </translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> ürününü varsayılan tarayıcım olarak ayarla</translation>
+<translation id="2588071938417715443">Bu politika, kullanıcının etrafındaki bulunabilir cihazların yanı sıra kendisine kayıtlı bulut cihazları gösteren yerel keşif kullanıcı arayüzündeki (<ph name="CHROME_DEVICES_LINK" />) kontrol edilebilir özelliklere erişimi denetler. <ph name="PRODUCT_OS_NAME" /> hariç tüm işletim sistemlerinde yerel keşif kullanıcı arayüzü, kullanıcıların, bilgisayarlarına bağlı klasik yazıcıları <ph name="CLOUD_PRINT_NAME" /> hizmetine eklemelerine izin verir.</translation>
 <translation id="2592091433672667839">Perakende modunda oturum açma ekranında ekran koruyucunun devreye girmesi için geçecek boşta kalma süresi</translation>
 <translation id="2592162121850992309">Bu politika true (doğru) değerine ayarlanırsa veya ayarlanmadan bırakılırsa, belirli bir GPU özelliği kara listeye alınmadığı sürece donanım hızlandırma özelliği etkinleştirilir.
 
@@ -1386,19 +1389,6 @@
 <translation id="2960691910306063964">Uzaktan erişim ana makineleri için PIN'siz kimlik doğrulamayı etkinleştir veya devre dışı bırak</translation>
 <translation id="2987155890997901449">ARC'yi etkinleştir</translation>
 <translation id="2987227569419001736">Web Bluetooth API'sının kullanımını kontrol et</translation>
-<translation id="3011301228198307065"><ph name="PRODUCT_NAME" /> ürününde varsayılan ana sayfa URL'sini yapılandırır ve kullanıcıların bu ayarı değiştirmesini önler.
-
-          Ana sayfa, Ana Sayfa düğmesine basıldığında açılan sayfadır. Başlangıçta açılan sayfalar RestoreOnStartup politikalarıyla kontrol edilir.
-
-          Ana sayfa türü burada belirteceğiniz bir URL'ye ayarlanabileceği gibi, Yeni Sekme Sayfası'na da ayarlanabilir. Yeni Sekme Sayfası'nı seçerseniz bu politika geçerli olmaz.
-
-          Bu ayarı etkinleştirirseniz, kullanıcılar <ph name="PRODUCT_NAME" /> ürününde ana sayfa URL'lerini değiştiremez, ancak ana sayfa olarak yine de Yeni Sekme Sayfası'nı seçebilirler.
-
-          Bu politikanın ayarlanmadan bırakılması, HomepageIsNewTabPage politikası da ayarlanmamışsa, kullanıcının kendi ana sayfasını seçmesine olanak tanır.
-
-          URL'nin standart şeması olması gerekir. Ör. "http://example.com" veya "https://example.com".
-
-          Bu politika yalnızca bir <ph name="MS_AD_NAME" /> alan adına katılmış Windows örneklerinde veya cihaz yönetimine kaydolmuş Windows 10 Pro ya da Enterprise örneklerinde kullanılabilir.</translation>
 <translation id="3016255526521614822">Beyaz listedeki not alma uygulamalarına <ph name="PRODUCT_OS_NAME" /> kilit ekranında izin verilir</translation>
 <translation id="3020064401262077616">Yalnızca çocuk hesaplarına uygulanan ebeveyn gözetimi politikalarını kontrol eder.</translation>
 <translation id="3021562480854470924">Geri alma işleminin izin verildiği dönüm noktası sayısı</translation>
@@ -2926,6 +2916,7 @@
       VPN bağlantısı VPN uygulaması ile oluşturulduysa, uygulamanın içindeki kullanıcı arayüzü bu politikadan etkilenmez. Dolayısıyla kullanıcı, VPN bağlantısını değiştirmek için uygulamayı kullanmaya devam edebilir.
 
       Bu politika, yöneticinin başlangıçta VPN bağlantısı kurmaya karar vermesini sağlayan "Her zaman açık VPN" özelliğiyle birlikte kullanılmak üzere tasarlanmıştır.</translation>
+<translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> bağlantısını etkinleştir</translation>
 <translation id="5405289061476885481"><ph name="PRODUCT_OS_NAME" /> oturum açma ekranında hangi klavye düzenlerine izin verileceğini yapılandırır.
 
       Bu politika bir giriş yöntemi tanımlayıcıları listesine ayarlanırsa belirtilen giriş yöntemleri oturum açma ekranında kullanılabilir. Belirtilen ilk giriş yöntemi önceden seçilir. Oturum açma ekranında bir kullanıcı simgesine odaklanılmışken, kullanıcının kullandığı son giriş yöntemi de bu politikada belirtilen giriş yöntemlerine ek olarak gösterilir. Bu politika ayarlanmazsa oturum açma ekranındaki giriş yöntemleri, oturum açma ekranının görüntülendiği yerel ayardan türetilir. Geçerli giriş yöntemi tanımlayıcıları olmayan değerler yok sayılır.</translation>
@@ -3195,6 +3186,7 @@
           Bu politika ayarlanmadan bırakılırsa, varsayılan işlem olarak askıya alma uygulanır.
 
           Uygulanacak işlem askıya alma ise, <ph name="PRODUCT_OS_NAME" />, askıya almadan önce ekranı kilitleyecek veya kilitlemeyecek şekilde ayrı olarak yapılandırılabilir.</translation>
+<translation id="574983287620584622">Giriş ekranında erişilebilirlik özellikleri kısayollarını etkinleştir</translation>
 <translation id="5755002458331714762"> Web Bileşenleri v0 API'leri (Gölge DOM v0, Özel Öğeler v0 ve HTML İçe Aktarmaları) 2018'de kullanımdan kaldırılmıştır ve M80 düzeyinden itibaren varsayılan olarak devre dışıdır. Bu politika, bu özelliklerin M84'e kadar seçilerek yeniden etkinleştirilmesine olanak tanır.
 
       Bu politika True (Doğru) değerine ayarlanırsa Web Bileşenleri v0 özellikleri tüm siteler için etkinleştirilir.
@@ -4346,6 +4338,15 @@
       Bu politika False (Yanlış) değerine ayarlanırsa Güvenli Tarama verileri toplanmaz.
 
       Bu politika yalnızca <ph name="CHROME_REPORTING_EXTENSION_NAME" /> etkinleştirildiğinde ve makine <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" /> politikasına kayıtlı olduğunda geçerli olur.</translation>
+<translation id="777734450201217641">Giriş ekranında erişilebilirlik özellikleri kısayollarını etkinleştirin.
+
+          Bu politika doğru (true) değerine ayarlanırsa giriş ekranında erişilebilirlik özellikleri kısayolları her zaman etkinleştirilir.
+
+          Bu politika yanlış (false) değerine ayarlanırsa giriş ekranında erişilebilirlik özellikleri kısayolları her zaman devre dışı bırakılır.
+
+          Bu politikayı ayarlarsanız kullanıcılar değiştiremez veya geçersiz kılamazlar.
+
+          Bu politika ayarlanmadan bırakılırsa giriş ekranında erişilebilirlik özellikleri kısayolları varsayılan olarak etkinleştirilir.</translation>
 <translation id="7777535871204167559">Harici depolama cihazlarını salt okunur olarak ele al</translation>
 <translation id="7788511847830146438">Her Profil İçin Ayrı</translation>
 <translation id="7792973482799545782">Hiçbir sitenin engellenebilir karma içerik yüklemesine izin verme</translation>
@@ -4747,6 +4748,15 @@
 
       Uyarı: Kullanıcıların yazılım güncellemelerini ve kritik güvenlik düzeltmelerini almasını engelleyebileceği için sürüm kısıtlamalarının yapılandırılması önerilmez. Güncellemeleri belirli bir sürüm ön ekiyle sınırlamak, kullanıcıları risk altında bırakabilir.</translation>
 <translation id="8519264904050090490">Yönetilen kullanıcı manuel istisna URL'leri</translation>
+<translation id="8519516251436131647">Erişilebilirlik özellikleri kısayollarını etkinleştirin.
+
+          Bu politika doğru (true) değerine ayarlanırsa erişilebilirlik özellikleri kısayolları her zaman etkinleştirilir.
+
+          Bu politika yanlış (false) değerine ayarlanırsa erişilebilirlik özellikleri kısayolları her zaman devre dışı bırakılır.
+
+          Bu politikayı ayarlarsanız kullanıcılar değiştiremez veya geçersiz kılamazlar.
+
+          Bu politika ayarlanmadan bırakılırsa erişilebilirlik özellikleri kısayolları varsayılan olarak etkinleştirilir.</translation>
 <translation id="8525526490824335042">Linux kapsayıcı</translation>
 <translation id="8538235451413605457">İzin verilen minimum <ph name="PRODUCT_NAME" /> sürümü gereksinimini yapılandırır. Aşağıda belirtilen sürümler eski olarak kabul edilir ve cihaz, OS güncellenmeden kullanıcının oturum açmasına izin vermez.
       Geçerli sürüm, kullanıcı oturumu sırasında eski durumuna dönüşürse kullanıcı oturumunu kapatmaya zorlanır.
@@ -4991,6 +5001,9 @@
 
           Bu politika ayarlanmadan bırakılırsa, 'PromptOnAccess' kullanılır ve kullanıcı, bu ayarı değiştirebilir.</translation>
 <translation id="8911348623012274122">Chrome örnekleri için bellek sınırı ayarla</translation>
+<translation id="8911736066340032670">Yenileme hızı gibi ekranla ilgili bilgileri ve sürücünün sürümü gibi grafikle ilgili bilgileri raporlayın.
+
+      Politika yanlış (false) değerine ayarlanır veya ayarlanmadan bırakılırsa ekran ve grafik durumu raporlanmaz. Doğru (true) değerine ayarlanırsa ekran ve grafik durumları raporlanır.</translation>
 <translation id="891435090623616439">JSON dizesi olarak kodlanmıştır, ayrıntılar için <ph name="COMPLEX_POLICIES_URL" /> sayfasına bakın</translation>
 <translation id="8917070657147922192">Kullanıcıların yüklü CA sertifikalarını yönetmelerine izin ver.</translation>
 <translation id="8926275581598789324">Bu politikanın artık kullanılmadığını ve <ph name="PRODUCT_OS_NAME" /> sürüm 82'de kaldırılacağını unutmayın. Lütfen bunun yerine <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> politikasını kullanın.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 095e8e9d..bb4c1a7 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -774,6 +774,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> має перевагу над цим правилом. Тобто розширення з чорного списку не встановлюються, навіть якщо вони походять із сайту в цьому списку.</translation>
 <translation id="214901426630414675">Обмежити двосторонній друк</translation>
 <translation id="2149330464730004005">Увімкнути кольоровий друк</translation>
+<translation id="2151831603578119302">Увімкнути комбінації клавіш для спеціальних можливостей</translation>
 <translation id="2156132677421487971">Налаштування правил для <ph name="PRODUCT_NAME" /> – функції, яка дає змогу надсилати вміст вкладок, сайтів або робочого столу з веб-переглядача на віддалені екрани та звукові системи.</translation>
 <translation id="2156755242840687300">Увімкнено зовнішні сервери друку</translation>
 <translation id="2160336427036785721">Налаштовує обсяг пам'яті, який одна копія <ph name="PRODUCT_NAME" /> може використовувати, перш ніж вкладки відхиляються (тобто пам'ять, яку займає вкладка, звільняється, а коли користувач переходить на цю вкладку, вона оновлюється), щоб економити пам'ять.
@@ -885,6 +886,7 @@
 <translation id="2294382669900758280">Це правило не впливає на відтворення відео в додатках Android, навіть якщо для нього встановлено значення "<ph name="TRUE" />".</translation>
 <translation id="2299220924812062390">Указати список увімкнених плагінів</translation>
 <translation id="2303795211377219696">Вмикає функцію автозаповнення для кредитних карток</translation>
+<translation id="2307496301287881990">Повідомляти про статуси дисплея й відеокарти</translation>
 <translation id="2309390639296060546">Налаштування географічного місцезнаходження за умовчанням</translation>
 <translation id="2327252517317514801">Визначати домени з доступом до G Suite</translation>
 <translation id="2328573323851533589">За допомогою цього правила можна примусово ввімкнути або вимкнути перевірку облікових даних на предмет витоку в <ph name="PRODUCT_NAME" />.
@@ -1138,6 +1140,7 @@
       Якщо це правило не налаштовано або вимкнено, для екрана входу діють параметри платформи за умовчанням.
       </translation>
 <translation id="2587719089023392205">Зробити <ph name="PRODUCT_NAME" /> веб-переглядачем за умовчанням</translation>
+<translation id="2588071938417715443">Це правило регулює доступ до керованих функцій в інтерфейсі пошуку локальних пристроїв (<ph name="CHROME_DEVICES_LINK" />), у якому показано видимі пристрої поблизу користувачів, а також зареєстровані на них хмарні пристрої. На всіх операційних системах, окрім <ph name="PRODUCT_OS_NAME" />, в інтерфейсі пошуку локальних пристроїв також можна додавати типові принтери, підключені до комп'ютерів через сервіс <ph name="CLOUD_PRINT_NAME" />.</translation>
 <translation id="2592091433672667839">Тривалість бездіяльності до відтворення заставки на екрані входу в режимі роздрібного продажу</translation>
 <translation id="2592162121850992309">Якщо це правило не налаштовано або для нього вибрано значення true, вмикається апаратне прискорення (за умови, що певну функцію ГП не додано в чорний список).
 
@@ -1379,19 +1382,6 @@
 <translation id="2960691910306063964">Увімкнути або вимкнути автентифікацію без PIN-коду для хостів віддаленого доступу</translation>
 <translation id="2987155890997901449">Увімкнути ARC</translation>
 <translation id="2987227569419001736">Контролювати використання API Web Bluetooth</translation>
-<translation id="3011301228198307065">Налаштовує URL-адресу домашньої сторінки за умовчанням у <ph name="PRODUCT_NAME" /> і забороняє користувачам змінювати її.
-
-          Домашня сторінка – це та, яка відкривається кнопкою "Домашня сторінка". Сторінками, які відкриваються під час запуску, керують правила RestoreOnStartup.
-
-          Домашньою сторінкою можна встановити зазначену тут URL-адресу або сторінку нової вкладки. Якщо вибрати сторінку нової вкладки, це правило ігнорується.
-
-          Якщо ввімкнути це налаштування, користувачі не зможуть змінювати URL-адресу домашньої сторінки в <ph name="PRODUCT_NAME" />, однак вони все одно зможуть зробити сторінку нової вкладки своєю домашньою сторінкою.
-
-          Якщо це правило та правило HomepageIsNewTabPage не налаштовано, користувачі зможуть самі вибирати домашню сторінку.
-
-          Схема URL-адреси має бути стандартною, наприклад, "http://example.com" або "https://example.com".
-
-          Це правило доступне лише у версіях Windows, зареєстрованих у домені <ph name="MS_AD_NAME" />, або Windows 10 Pro чи Enterprise, зареєстрованих для керування пристроєм.</translation>
 <translation id="3016255526521614822">Додатки для нотаток, дозволені на заблокованому екрані <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3020064401262077616">Керує правилами батьківського контролю, які застосовуються лише до облікових записів дітей.</translation>
 <translation id="3021562480854470924">Кількість версій, які можна відновити</translation>
@@ -2889,6 +2879,7 @@
       Якщо з’єднання встановлено через додаток VPN, це правило не впливає на інтерфейс у ньому. Тому користувач усе ще зможе змінювати з’єднання з VPN через додаток.
 
       Це правило потрібно використовувати разом із функцією "Постійна мережа VPN", завдяки якій адміністратор може встановлювати з’єднання з VPN під час завантаження.</translation>
+<translation id="5401696449591951427">Увімкнути <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Налаштовує, які розкладки клавіатури дозволені на екрані входу в <ph name="PRODUCT_OS_NAME" />.
 
       Якщо для правила вказано список ідентифікаторів методів введення, ці методи будуть доступні на екрані входу. Перший указаний метод буде вибрано за умовчанням. Коли рядок введення на екрані входу активний, разом із дозволеними цим правилом методами введення буде доступний останній метод введення, вибраний користувачем. Якщо правило не налаштовано, методи введення буде вибрано на основі мовного коду, який використовується на екрані входу. Недійсні ідентифікатори методів введення ігноруються.</translation>
@@ -3153,6 +3144,7 @@
           Якщо це правило не налаштовано, виконується дія за умовчанням, тобто призупинення роботи.
 
           Якщо дією є призупинення роботи, можна окремо налаштувати, чи буде <ph name="PRODUCT_OS_NAME" /> блокувати екран перед цим.</translation>
+<translation id="574983287620584622">Увімкнути комбінації клавіш для спеціальних можливостей на екрані входу</translation>
 <translation id="5755002458331714762"> Web Components v0 API (Shadow DOM v0, Custom Elements v0 та HTML Imports) не підтримуються з 2018 року. Їх вимкнено за умовчанням у M80 і новіших версіях. Це правило дає змогу вибірково повторно вмикати ці функції у версіях до M84.
 
       Якщо для цього правила вибрано значення true, функції веб-компонентів версії v0 буде ввімкнено для всіх сайтів.
@@ -4295,6 +4287,15 @@
       Якщо для цього правила вибрано значення false, дані Безпечного перегляду не збираються.
 
       Це правило працює, лише коли ввімкнено <ph name="CHROME_REPORTING_EXTENSION_NAME" />, а комп'ютер зареєстровано відповідно до правила <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
+<translation id="777734450201217641">Увімкнути комбінації клавіш для спеціальних можливостей на екрані входу.
+
+          Якщо для цього правила вибрано значення true, комбінації клавіш для спеціальних можливостей буде завжди ввімкнено на екрані входу.
+
+          Якщо для цього правила вибрано значення false, комбінації клавіш для спеціальних можливостей буде завжди вимкнено на екрані входу.
+
+          Якщо це правило налаштовано, користувачі не можуть змінювати або замінювати його.
+
+          Якщо це правило не налаштовано, комбінації клавіш для спеціальних можливостей буде ввімкнено за умовчанням на екрані входу.</translation>
 <translation id="7777535871204167559">Зовнішні пристрої пам’яті – лише для перегляду</translation>
 <translation id="7788511847830146438">Для окремих профілів</translation>
 <translation id="7792973482799545782">Заборонити всім сайтам завантажувати змішаний контент, який можна блокувати</translation>
@@ -4705,6 +4706,15 @@
       "1412.24.34": оновити лише до цієї конкретної версії
       Застереження: не радимо налаштовувати обмеження версій, оскільки це може завадити користувачам отримувати оновлення програмного забезпечення та виправлення системи безпеки. Обмеживши оновлення до певного префіксу версії, ви можете наразити користувачів на небезпеку.</translation>
 <translation id="8519264904050090490">Установлені вручну винятки URL-адрес керованого користувача</translation>
+<translation id="8519516251436131647">Увімкнути комбінації клавіш для спеціальних можливостей.
+
+          Якщо для цього правила вибрано значення true, комбінації клавіш для спеціальних можливостей буде завжди ввімкнено.
+
+          Якщо для цього правила вибрано значення false, комбінації клавіш для спеціальних можливостей буде завжди вимкнено.
+
+          Якщо це правило налаштовано, користувачі не можуть змінювати або замінювати його.
+
+          Якщо це правило не налаштовано, комбінації клавіш для спеціальних можливостей буде ввімкнено за умовчанням.</translation>
 <translation id="8525526490824335042">Контейнер Linux</translation>
 <translation id="8538235451413605457">Указує вимоги до мінімальних дозволених версій <ph name="PRODUCT_NAME" />. Старіші версії вважаються застарілими, і користувачі не зможуть ввійти в обліковий запис на пристрої, доки ОС не буде оновлено.
       Якщо поточна версія стає застарілою під час сеансу користувача, користувач примусово вийде.
@@ -4941,6 +4951,9 @@
 
           Якщо це правило не встановлено, застосовується правило "PromptOnAccess", і користувач зможе його змінювати.</translation>
 <translation id="8911348623012274122">Налаштувати обмеження обсягу пам'яті для копій Chrome</translation>
+<translation id="8911736066340032670">Повідомляти дані щодо дисплея, як-от частоту оновлення, і відеокарти, наприклад версію драйвера.
+
+      Якщо для цього правила вибрано значення false або його не налаштовано, статуси дисплея й відеокарти не повідомлятимуться. Якщо для цього правила вибрано значення true, ці дані повідомлятимуться.</translation>
 <translation id="891435090623616439">зашифровано як рядок JSON. Докладнішу інформацію можна знайти на сторінці <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">Дозволити користувачам керувати встановленими сертифікатами центру сертифікації.</translation>
 <translation id="8926275581598789324">Зауважте, що це правило більше не підтримується та буде вилучене в <ph name="PRODUCT_OS_NAME" /> версії 82. Натомість використовуйте правило <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 82d57f2..e6e9430c 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -1392,19 +1392,6 @@
 <translation id="2960691910306063964">Bật hoặc tắt xác thực không có mã PIN cho các máy chủ truy cập từ xa</translation>
 <translation id="2987155890997901449">Bật ARC</translation>
 <translation id="2987227569419001736">Kiểm soát việc sử dụng API Web Bluetooth</translation>
-<translation id="3011301228198307065">Định cấu hình URL trang chủ mặc định trong <ph name="PRODUCT_NAME" /> và ngăn không cho người dùng thay đổi URL đó.
-
-          Trang chủ là trang mở ra khi người dùng nhấn nút Trang chủ. Các trang mở ra khi khởi động chịu sự kiểm soát của chính sách RestoreOnStartup.
-
-          Bạn có thể đặt loại trang chủ thành một URL mà bạn chỉ định tại đây hoặc đặt thành Trang tab mới. Nếu bạn chọn Trang tab mới, thì chính sách này không có hiệu lực.
-
-          Nếu bạn bật tùy chọn cài đặt này, thì người dùng không thể thay đổi URL trang chủ trong <ph name="PRODUCT_NAME" /> nhưng vẫn có thể chọn Trang tab mới làm trang chủ.
-
-          Nếu bạn không đặt chính sách này và cũng không đặt chính sách HomepageIsNewTabPage, thì người dùng sẽ được phép tự chọn trang chủ.
-
-          URL phải chứa tên giao thức chuẩn, chẳng hạn như: "http://example.com" hoặc "https://example.com".
-
-          Chính sách này chỉ có trên các phiên bản Windows liên kết với miền <ph name="MS_AD_NAME" /> hoặc phiên bản Windows 10 Pro hay Enterprise đã đăng ký tính năng quản lý thiết bị.</translation>
 <translation id="3016255526521614822">Đưa các ứng dụng ghi chú được phép trên màn hình khóa của <ph name="PRODUCT_OS_NAME" /> vào danh sách cho phép</translation>
 <translation id="3020064401262077616">Kiểm soát các chính sách về sự giám sát của cha mẹ (chỉ áp dụng cho tài khoản người dùng là trẻ em).</translation>
 <translation id="3021562480854470924">Số mốc cho phép khôi phục</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 72c0a55..0aae047 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -716,6 +716,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> 的优先级高于此政策。也就是说,若某个扩展程序被列入了黑名单,虽然其所在的网站在此列表中,也不能安装该扩展程序。</translation>
 <translation id="214901426630414675">限制双面打印模式</translation>
 <translation id="2149330464730004005">启用彩色打印</translation>
+<translation id="2151831603578119302">启用无障碍功能快捷方式</translation>
 <translation id="2156132677421487971">为 <ph name="PRODUCT_NAME" /> 配置相关政策。借助这项功能,用户可从浏览器将标签页、网站或桌面中的内容发送到远程显示器和音响系统。</translation>
 <translation id="2156755242840687300">已启用的外部打印服务器</translation>
 <translation id="2160336427036785721">配置在单个 <ph name="PRODUCT_NAME" /> 实例使用的内存量达到多少后浏览器会为节省内存空间而开始舍弃标签页(即:标签页使用的内存将被释放,而且在用户切换到此标签页时它必须重新加载)。
@@ -824,6 +825,7 @@
 <translation id="2294382669900758280">即使此政策设为 <ph name="TRUE" />,系统也不会考虑在 Android 应用中播放视频。</translation>
 <translation id="2299220924812062390">指定已启用插件的列表</translation>
 <translation id="2303795211377219696">允许使用“自动填充”功能填写信用卡信息</translation>
+<translation id="2307496301287881990">报告显示状态和图形状态</translation>
 <translation id="2309390639296060546">默认地理位置设置</translation>
 <translation id="2327252517317514801">指定可访问 G Suite 的网域</translation>
 <translation id="2328573323851533589">此政策可用于在 <ph name="PRODUCT_NAME" /> 中强制启用/强制停用凭据泄露检查功能。
@@ -1076,6 +1078,7 @@
       如果未配置或停用了此政策,则系统将为登录屏幕使用平台默认的网站隔离设置。
       </translation>
 <translation id="2587719089023392205">将 <ph name="PRODUCT_NAME" /> 设为默认浏览器</translation>
+<translation id="2588071938417715443">此政策用于控制对本地设备发现界面 (<ph name="CHROME_DEVICES_LINK" />) 中的可控制功能的访问权限,该界面会显示可在用户附近发现的设备以及已注册到这些设备的云端设备。在除 <ph name="PRODUCT_OS_NAME" />之外的所有其他操作系统中,本地设备发现界面还允许用户将与其计算机相连的传统打印机添加到 <ph name="CLOUD_PRINT_NAME" />。</translation>
 <translation id="2592091433672667839">在零售模式登录屏幕上显示屏幕保护程序之前的闲置时间</translation>
 <translation id="2592162121850992309">如果不设置此政策或将其设为 true,系统将启用硬件加速模式,除非特定 GPU 功能已被列入黑名单。
 
@@ -1318,19 +1321,6 @@
 <translation id="2960691910306063964">针对远程访问主机启用或停用无 PIN 码身份验证</translation>
 <translation id="2987155890997901449">启用 ARC</translation>
 <translation id="2987227569419001736">控制对 Web Bluetooth API 的使用</translation>
-<translation id="3011301228198307065">配置 <ph name="PRODUCT_NAME" /> 中的默认主页网址,并禁止用户更改此配置。
-
-          主页是由“主页”按钮打开的网页。启动时打开的网页是由 RestoreOnStartup 政策控制的。
-
-          您既可将主页类型设为在此处指定的网址,也可将其设为“新标签页”。如果您选择“新标签页”,此政策将不会产生任何效力。
-
-          如果您启用了此设置,用户将无法更改 <ph name="PRODUCT_NAME" /> 中的主页网址,但仍可选择“新标签页”作为主页。
-
-          如果您未设置此政策,并且也未设置 HomepageIsNewTabPage,用户将能自行选择主页。
-
-          此网址必须是采用标准架构的网址,例如“http://example.com”或“https://example.com”。
-
-          此政策仅适用于已加入 <ph name="MS_AD_NAME" /> 网域的 Windows 实例,或者已注册设备管理服务的 Windows 10 Pro 或 Enterprise 实例。</translation>
 <translation id="3016255526521614822">允许在 <ph name="PRODUCT_OS_NAME" />锁定屏幕启用加入白名单的备注应用</translation>
 <translation id="3020064401262077616">控制仅应用于未成年人帐号的家长监督政策。</translation>
 <translation id="3021562480854470924">指定允许回滚到的里程碑的数量</translation>
@@ -2806,6 +2796,7 @@
       如果 VPN 连接是通过 VPN 应用创建的,则相应应用内的界面不会受到此政策的影响。因此,用户或许仍能使用相应应用修改 VPN 连接。
 
       此政策旨在与“始终开启的 VPN”功能结合使用,以便管理员决定是否要在启动时建立 VPN 连接。</translation>
+<translation id="5401696449591951427">启用 <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">配置允许在 <ph name="PRODUCT_OS_NAME" />登录屏幕上使用哪些键盘布局。
 
       如果此政策设为一个输入法标识符列表,登录屏幕上将会提供所有已指定的输入法以供选用。系统将会预先选择所指定的第一种输入法。当登录屏幕上显示已激活的用户操作大图标时,屏幕上除了会提供通过此政策指定的各种输入法外,还会提供相应用户最近一次用过的输入法。如果此政策未设置,系统则会根据显示登录屏幕时使用的语言区域提供登录屏幕上的输入法。系统将会忽略无效的输入法标识符。</translation>
@@ -3059,6 +3050,7 @@
           如果未设置此政策,系统会执行默认操作,即暂停。
 
           如果需要执行的操作是暂停,您还可单独配置 <ph name="PRODUCT_OS_NAME" />在暂停前是否锁定屏幕。</translation>
+<translation id="574983287620584622">在登录屏幕上启用无障碍功能快捷方式</translation>
 <translation id="5755002458331714762"> Web Components v0 API(Shadow DOM v0、Custom Elements v0 和 HTML Imports)已于 2018 年被弃用,并且从 M80 起就已默认处于停用状态。此政策允许有选择地重新启用这些功能直至 M84。
 
       如果此政策设为 True,系统会为所有网站启用 Web Components v0 功能。
@@ -4182,6 +4174,15 @@
       如果此政策设为 False,系统不会收集安全浏览数据。
 
       仅当已启用 <ph name="CHROME_REPORTING_EXTENSION_NAME" /> 且已使用 <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" /> 注册相应设备后,此政策才有效。</translation>
+<translation id="777734450201217641">在登录屏幕上启用无障碍功能快捷方式。
+
+          如果此政策设为 true,无障碍功能快捷方式在登录屏幕上将始终处于启用状态。
+
+          如果此政策设为 false,无障碍功能快捷方式在登录屏幕上将始终处于停用状态。
+
+          如果您设置了此政策,用户便无法更改或覆盖它。
+
+          如果未设置此政策,默认情况下,无障碍功能快捷方式在登录屏幕上会处于启用状态。</translation>
 <translation id="7777535871204167559">以只读模式处理外部存储设备</translation>
 <translation id="7788511847830146438">根据个人资料</translation>
 <translation id="7792973482799545782">不允许任何网站加载可屏蔽的混合内容</translation>
@@ -4582,6 +4583,15 @@
 
       警告:建议您不要配置版本限制,因为这可能会阻止用户接收软件更新和关键的安全修补程序。限制更新到特定版本前缀可能会将用户置于风险之中。</translation>
 <translation id="8519264904050090490">托管用户手动管理的例外网址</translation>
+<translation id="8519516251436131647">启用无障碍功能快捷方式。
+
+          如果此政策设为 true,无障碍功能快捷方式将始终处于启用状态。
+
+          如果此政策设为 false,无障碍功能快捷方式将始终处于停用状态。
+
+          如果您设置了此政策,用户便无法更改或覆盖它。
+
+          如果未设置此政策,默认情况下,无障碍功能快捷方式会处于启用状态。</translation>
 <translation id="8525526490824335042">Linux 容器</translation>
 <translation id="8538235451413605457">配置对允许使用的最低 <ph name="PRODUCT_NAME" /> 版本的要求。低于指定值的版本将被视为过时;在这种情况下,如果用户不更新操作系统,相应设备就不会允许其登录。
       如果当前版本在用户会话期间变为过时版本,系统将会强制用户退出。
@@ -4808,6 +4818,9 @@
 
           如果未设置该策略,那么系统会使用“PromptOnAccess”,且用户可以更改此设置。</translation>
 <translation id="8911348623012274122">设置 Chrome 实例可以占用的内存上限</translation>
+<translation id="8911736066340032670">报告与显示相关的信息(例如刷新频率)以及与图形相关的信息(例如驱动程序版本)。
+
+      如果此政策设为 false 或未设置,系统将不会报告显示状态和图形状态。如果此政策设为 true,系统将会报告显示状态和图形状态。</translation>
 <translation id="891435090623616439">已编码为 JSON 字符串。有关详情,请访问 <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">允许用户管理已安装的 CA 证书。</translation>
 <translation id="8926275581598789324">请注意,此政策已被弃用,并将在 <ph name="PRODUCT_OS_NAME" />版本 82 中移除。请改用 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index ba3efe81..d2fa9b4b 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -749,6 +749,7 @@
           <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> 的效力優於這項政策。換句話說,系統不會安裝黑名單上的任何擴充功能,即使將該功能的來源網站加到這份清單中也一樣。</translation>
 <translation id="214901426630414675">限制使用雙面列印模式</translation>
 <translation id="2149330464730004005">啟用彩色列印</translation>
+<translation id="2151831603578119302">啟用無障礙功能快速鍵</translation>
 <translation id="2156132677421487971">設定「<ph name="PRODUCT_NAME" />」的各項政策。這項功能可讓使用者透過瀏覽器將分頁、網站或桌面內容傳送至遠端的螢幕和音響設備。</translation>
 <translation id="2156755242840687300">已啟用的外部列印伺服器</translation>
 <translation id="2160336427036785721">設定單一 <ph name="PRODUCT_NAME" /> 例項可用的記憶體大小。超過此值後,系統會開始捨棄分頁以節省記憶體。這表示系統會釋放分頁所用的記憶體,而當使用者切換至該分頁時,系統必須重新載入該分頁。
@@ -859,6 +860,7 @@
 <translation id="2294382669900758280">即使將這項政策設為 <ph name="TRUE" />,在 Android 應用程式中播放的影片仍不會受到影響。</translation>
 <translation id="2299220924812062390">指定停用的外掛程式清單</translation>
 <translation id="2303795211377219696">啟用信用卡的自動填入功能</translation>
+<translation id="2307496301287881990">回報顯示狀態和圖形狀態</translation>
 <translation id="2309390639296060546">預設地理位置設定</translation>
 <translation id="2327252517317514801">定義可存取 G Suite 的網域</translation>
 <translation id="2328573323851533589">這項政策可用於強制啟用或強制停用 <ph name="PRODUCT_NAME" /> 中的憑證外洩檢查功能。
@@ -1113,6 +1115,7 @@
       如果不設定或停用這項政策,系統會將平台預設的網站隔離設定套用至登入畫面。
       </translation>
 <translation id="2587719089023392205">將 <ph name="PRODUCT_NAME" /> 設為預設瀏覽器</translation>
+<translation id="2588071938417715443">這項政策可控管本機搜尋 UI (<ph name="CHROME_DEVICES_LINK" />) 中可操控功能的存取權。本機搜尋 UI 會顯示使用者附近的可搜尋裝置,以及註冊於這些可搜尋裝置的雲端裝置。在所有作業系統上 (<ph name="PRODUCT_OS_NAME" />除外),本機搜尋 UI 也能讓使用者將連接至電腦的傳統印表機新增至 <ph name="CLOUD_PRINT_NAME" />。</translation>
 <translation id="2592091433672667839">螢幕保護程式顯示前的閒置時間會顯示在零售模式下的登入畫面上</translation>
 <translation id="2592162121850992309">如果將這項政策設為 True 或不設定,系統會啟用硬體加速功能 (惟特定 GPU 功能遭禁用時除外)。
 
@@ -1351,19 +1354,6 @@
 <translation id="2960691910306063964">針對遠端存取主機啟用或停用無 PIN 碼驗證機制</translation>
 <translation id="2987155890997901449">啟用 ARC</translation>
 <translation id="2987227569419001736">控制 Web Bluetooth API 使用權限</translation>
-<translation id="3011301228198307065">設定 <ph name="PRODUCT_NAME" /> 的預設首頁網址,並禁止使用者變更這項設定。
-
-          首頁是指點選 [首頁] 按鈕後開啟的網頁。啟動時開啟的網頁由 RestoreOnStartup 政策控管。
-
-          你可以將首頁類型設定為在此處指定的網址或「新分頁」。如果你選取「新分頁」,則本政策不會生效。
-
-          如果啟用這項設定,使用者將無法變更 <ph name="PRODUCT_NAME" /> 的首頁網址,但仍可選擇將首頁設定為「新分頁」。
-
-          如果這項政策和 HomepageIsNewTabPage 皆不做設定,則使用者可以自行選擇首頁。
-
-          網址必須採用標準架構,例如「http://example.com」或「https://example.com」。
-
-          這項政策僅適用於已加入 <ph name="MS_AD_NAME" /> 網域的 Windows 執行個體,或是已註冊裝置管理服務的 Windows 10 專業版或企業版執行個體。</translation>
 <translation id="3016255526521614822">將「<ph name="PRODUCT_OS_NAME" />」螢幕鎖定畫面允許的筆記應用程式加入許可清單</translation>
 <translation id="3020064401262077616">控管家長監督政策,這些政策只適用於兒童帳戶。</translation>
 <translation id="3021562480854470924">允許復原的重要事件數</translation>
@@ -2836,6 +2826,7 @@
       如果 VPN 連線是透過 VPN 應用程式所建立,則應用程式內的 UI 將不受這項政策影響,因此使用者仍可透過應用程式修改 VPN 連線。
 
       這項政策應與「永久連線的 VPN」功能一併使用,以便管理員決定是否在啟動時建立 VPN 連線。</translation>
+<translation id="5401696449591951427">啟用 <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">設定 <ph name="PRODUCT_OS_NAME" /> 登入畫面可使用的鍵盤配置。
 
       如果將這項政策設為輸入法識別碼清單,登入畫面即可顯示指定的輸入法。系統會預先選取第一個指定的輸入法。在特定使用者視窗的登入畫面中,除了這項政策指定的輸入法之外,還會提供使用者最後一次使用的輸入法。如果未設定這項政策,系統會根據登入畫面顯示的語言代碼提供登入畫面的輸入法。如果值不是有效的輸入法識別碼,則會遭到忽略。</translation>
@@ -3093,6 +3084,7 @@
           如果不設定這項政策,則系統會採取預設動作,也就是暫停作業。
 
           如果將動作設為暫停作業,你可以另行設定 <ph name="PRODUCT_OS_NAME" />在暫停作業前鎖定或不鎖定螢幕。</translation>
+<translation id="574983287620584622">在登入畫面上啟用無障礙功能快速鍵</translation>
 <translation id="5755002458331714762"> Web Components v0 API (Shadow DOM v0、Custom Elements v0 和 HTML Imports) 已在 2018 年淘汰,並從 M80 版開始預設為停用。這項政策可讓你選擇性地重新啟用這些功能,直到 M84 版為止。
 
       如果將這項政策設為 True,系統會在所有網站上啟用 Web Components v0 功能。
@@ -4210,6 +4202,15 @@
       如果將這項政策設為 False,系統將不會收集安全瀏覽資料。
 
       只有在已啟用 <ph name="CHROME_REPORTING_EXTENSION_NAME" />且已透過 <ph name="CLOUD_MANAGEMENT_ENROLLMENT_TOKEN_POLICY_NAME" /> 註冊電腦的情況下,這項政策才會生效。</translation>
+<translation id="777734450201217641">在登入畫面上啟用無障礙功能快速鍵。
+
+          如果將這項政策設為 True,系統將一律在登入畫面上啟用無障礙功能快速鍵。
+
+          如果將這項政策設為 False,系統將一律在登入畫面上停用無障礙功能快速鍵。
+
+          設好這項政策後,使用者即無法變更或覆寫設定。
+
+           如果不設定這項政策,系統會在登入畫面上預設啟用無障礙功能快速鍵。</translation>
 <translation id="7777535871204167559">以唯讀模式處理外部儲存裝置</translation>
 <translation id="7788511847830146438">根據設定檔</translation>
 <translation id="7792973482799545782">不允許任何網站載入可封鎖的混合內容</translation>
@@ -4611,6 +4612,15 @@
 
       警告:我們不建議設定版本限制,因為這可能導致使用者無法接收軟體更新,且無法修正重大的安全性問題。限制僅能更新至指定前置碼版本,可能讓使用者面臨風險。</translation>
 <translation id="8519264904050090490">管理化環境下使用者手動建立的例外網址</translation>
+<translation id="8519516251436131647">啟用無障礙功能快速鍵。
+
+          如果將這項政策設為 True,系統將一律啟用無障礙功能快速鍵。
+
+          如果將這項政策設為 False,系統將一律停用無障礙功能快速鍵。
+
+          設好這項政策後,使用者即無法變更或覆寫設定。
+
+          如果不設定這項政策,系統在預設狀態下會啟用無障礙功能快速鍵。</translation>
 <translation id="8525526490824335042">Linux 容器</translation>
 <translation id="8538235451413605457">設定最低 <ph name="PRODUCT_NAME" /> 版本限制。低於指定值的版本即為過舊版本,必須更新作業系統,使用者才能登入裝置。
       如果目前的版本在使用者工作階段期間成為過舊版本,使用者會遭到強制登出。
@@ -4847,6 +4857,12 @@
 
           如果你未設定這項政策,系統就會使用「PromptOnAccess」,使用者可自行變更。</translation>
 <translation id="8911348623012274122">設定 Chrome 例項可以使用的記憶體大小限制</translation>
+<translation id="8911736066340032670">回報與顯示相關的資訊 (例如重新整理頻率),以及
+      與圖形相關的資訊 (例如驅動程式版本)。
+
+      如果將這項政策設為 False 或不予設定,系統將不會
+      回報顯示狀態和圖形狀態。如果設為 True,系統將會
+      回報顯示狀態和圖形狀態。</translation>
 <translation id="891435090623616439">以 JSON 字串格式編碼,詳情請參閱 <ph name="COMPLEX_POLICIES_URL" /></translation>
 <translation id="8917070657147922192">允許使用者管理已安裝的 CA 憑證。</translation>
 <translation id="8926275581598789324">請注意,這項政策已遭淘汰,並將在 <ph name="PRODUCT_OS_NAME" />第 82 版中移除。請改用 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />。
diff --git a/components/reading_list/core/reading_list_model_unittest.cc b/components/reading_list/core/reading_list_model_unittest.cc
index 01c516e..d8243da6 100644
--- a/components/reading_list/core/reading_list_model_unittest.cc
+++ b/components/reading_list/core/reading_list_model_unittest.cc
@@ -16,9 +16,14 @@
 
 namespace {
 
-const GURL callback_url("http://example.com");
 const std::string callback_title("test title");
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL CallbackUrl() {
+  return GURL("http://example.com");
+}
+
 base::Time AdvanceAndGetTime(base::SimpleTestClock* clock) {
   clock->Advance(base::TimeDelta::FromMilliseconds(10));
   return clock->Now();
@@ -275,7 +280,7 @@
   }
 
   void Callback(const ReadingListEntry& entry) {
-    EXPECT_EQ(callback_url, entry.URL());
+    EXPECT_EQ(CallbackUrl(), entry.URL());
     EXPECT_EQ(callback_title, entry.Title());
     callback_called_ = true;
   }
diff --git a/components/sessions/content/content_serialized_navigation_builder_unittest.cc b/components/sessions/content/content_serialized_navigation_builder_unittest.cc
index 398eea3a..a8d2d28 100644
--- a/components/sessions/content/content_serialized_navigation_builder_unittest.cc
+++ b/components/sessions/content/content_serialized_navigation_builder_unittest.cc
@@ -68,26 +68,26 @@
   std::unique_ptr<content::NavigationEntry> navigation_entry(
       content::NavigationEntry::Create());
   navigation_entry->SetReferrer(content::Referrer(
-      test_data::kReferrerURL,
+      test_data::ReferrerUrl(),
       static_cast<network::mojom::ReferrerPolicy>(test_data::kReferrerPolicy)));
-  navigation_entry->SetURL(test_data::kURL);
-  navigation_entry->SetVirtualURL(test_data::kVirtualURL);
+  navigation_entry->SetURL(test_data::Url());
+  navigation_entry->SetVirtualURL(test_data::VirtualUrl());
   navigation_entry->SetTitle(test_data::kTitle);
   navigation_entry->SetTransitionType(test_data::kTransitionType);
   navigation_entry->SetHasPostData(test_data::kHasPostData);
   navigation_entry->SetPostID(test_data::kPostID);
-  navigation_entry->SetOriginalRequestURL(test_data::kOriginalRequestURL);
+  navigation_entry->SetOriginalRequestURL(test_data::OriginalRequestUrl());
   navigation_entry->SetIsOverridingUserAgent(test_data::kIsOverridingUserAgent);
   navigation_entry->SetTimestamp(test_data::kTimestamp);
   SetPasswordStateInNavigation(test_data::kPasswordState,
                                navigation_entry.get());
   navigation_entry->GetFavicon().valid = true;
-  navigation_entry->GetFavicon().url = test_data::kFaviconURL;
+  navigation_entry->GetFavicon().url = test_data::FaviconUrl();
   navigation_entry->SetHttpStatusCode(test_data::kHttpStatusCode);
   std::vector<GURL> redirect_chain;
-  redirect_chain.push_back(test_data::kRedirectURL0);
-  redirect_chain.push_back(test_data::kRedirectURL1);
-  redirect_chain.push_back(test_data::kVirtualURL);
+  redirect_chain.push_back(test_data::RedirectUrl0());
+  redirect_chain.push_back(test_data::RedirectUrl1());
+  redirect_chain.push_back(test_data::VirtualUrl());
   navigation_entry->SetRedirectChain(redirect_chain);
   NavigationTaskId::Get(navigation_entry.get())->set_id(test_data::kTaskId);
   NavigationTaskId::Get(navigation_entry.get())
@@ -148,9 +148,9 @@
   EXPECT_EQ(test_data::kIndex, navigation.index());
 
   EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id());
-  EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
+  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
   EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
-  EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(test_data::kTitle, navigation.title());
   EXPECT_EQ(navigation_entry->GetPageState().ToEncodedData(),
             navigation.encoded_page_state());
@@ -158,16 +158,16 @@
       navigation.transition_type(), test_data::kTransitionType));
   EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
   EXPECT_EQ(test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url());
+  EXPECT_EQ(test_data::OriginalRequestUrl(), navigation.original_request_url());
   EXPECT_EQ(test_data::kIsOverridingUserAgent,
             navigation.is_overriding_user_agent());
   EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
   EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
   ASSERT_EQ(3U, navigation.redirect_chain().size());
-  EXPECT_EQ(test_data::kRedirectURL0, navigation.redirect_chain()[0]);
-  EXPECT_EQ(test_data::kRedirectURL1, navigation.redirect_chain()[1]);
-  EXPECT_EQ(test_data::kVirtualURL, navigation.redirect_chain()[2]);
+  EXPECT_EQ(test_data::RedirectUrl0(), navigation.redirect_chain()[0]);
+  EXPECT_EQ(test_data::RedirectUrl1(), navigation.redirect_chain()[1]);
+  EXPECT_EQ(test_data::VirtualUrl(), navigation.redirect_chain()[2]);
   EXPECT_EQ(test_data::kPasswordState, navigation.password_state());
 
   ASSERT_EQ(2U, navigation.extended_info_map().size());
@@ -224,11 +224,11 @@
       ContentSerializedNavigationBuilder::ToNavigationEntry(&navigation,
                                                             &browser_context));
 
-  EXPECT_EQ(test_data::kReferrerURL, new_navigation_entry->GetReferrer().url);
+  EXPECT_EQ(test_data::ReferrerUrl(), new_navigation_entry->GetReferrer().url);
   EXPECT_EQ(test_data::kReferrerPolicy,
             static_cast<int>(new_navigation_entry->GetReferrer().policy));
-  EXPECT_EQ(test_data::kURL, new_navigation_entry->GetURL());
-  EXPECT_EQ(test_data::kVirtualURL, new_navigation_entry->GetVirtualURL());
+  EXPECT_EQ(test_data::Url(), new_navigation_entry->GetURL());
+  EXPECT_EQ(test_data::VirtualUrl(), new_navigation_entry->GetVirtualURL());
   EXPECT_EQ(test_data::kTitle, new_navigation_entry->GetTitle());
   EXPECT_EQ(old_navigation_entry->GetPageState().ToEncodedData(),
             new_navigation_entry->GetPageState().ToEncodedData());
@@ -236,18 +236,18 @@
       new_navigation_entry->GetTransitionType(), ui::PAGE_TRANSITION_RELOAD));
   EXPECT_EQ(test_data::kHasPostData, new_navigation_entry->GetHasPostData());
   EXPECT_EQ(test_data::kPostID, new_navigation_entry->GetPostID());
-  EXPECT_EQ(test_data::kOriginalRequestURL,
+  EXPECT_EQ(test_data::OriginalRequestUrl(),
             new_navigation_entry->GetOriginalRequestURL());
   EXPECT_EQ(test_data::kIsOverridingUserAgent,
             new_navigation_entry->GetIsOverridingUserAgent());
   EXPECT_EQ(test_data::kHttpStatusCode,
             new_navigation_entry->GetHttpStatusCode());
   ASSERT_EQ(3U, new_navigation_entry->GetRedirectChain().size());
-  EXPECT_EQ(test_data::kRedirectURL0,
+  EXPECT_EQ(test_data::RedirectUrl0(),
             new_navigation_entry->GetRedirectChain()[0]);
-  EXPECT_EQ(test_data::kRedirectURL1,
+  EXPECT_EQ(test_data::RedirectUrl1(),
             new_navigation_entry->GetRedirectChain()[1]);
-  EXPECT_EQ(test_data::kVirtualURL,
+  EXPECT_EQ(test_data::VirtualUrl(),
             new_navigation_entry->GetRedirectChain()[2]);
   sessions::NavigationTaskId* new_navigation_task_id =
       sessions::NavigationTaskId::Get(new_navigation_entry.get());
diff --git a/components/sessions/core/serialized_navigation_entry_test_helper.cc b/components/sessions/core/serialized_navigation_entry_test_helper.cc
index 8bb74fde..96ee56d 100644
--- a/components/sessions/core/serialized_navigation_entry_test_helper.cc
+++ b/components/sessions/core/serialized_navigation_entry_test_helper.cc
@@ -16,10 +16,7 @@
 
 const int kIndex = 3;
 const int kUniqueID = 50;
-const GURL kReferrerURL = GURL("http://www.referrer.com");
 const int kReferrerPolicy = 0;
-const GURL kURL = GURL("http://www.url.com");
-const GURL kVirtualURL = GURL("http://www.virtual-url.com");
 const base::string16 kTitle = base::ASCIIToUTF16("title");
 const std::string kEncodedPageState = "page state";
 const ui::PageTransition kTransitionType =
@@ -29,15 +26,10 @@
         ui::PAGE_TRANSITION_CLIENT_REDIRECT);
 const bool kHasPostData = true;
 const int64_t kPostID = 100;
-const GURL kOriginalRequestURL = GURL("http://www.original-request.com");
 const bool kIsOverridingUserAgent = true;
 const base::Time kTimestamp =
     base::Time::UnixEpoch() + base::TimeDelta::FromMilliseconds(100);
-const GURL kFaviconURL = GURL("http://virtual-url.com/favicon.ico");
 const int kHttpStatusCode = 404;
-const GURL kRedirectURL0 = GURL("http://go/redirect0");
-const GURL kRedirectURL1 = GURL("http://go/redirect1");
-const GURL kOtherURL = GURL("http://other.com");
 const SerializedNavigationEntry::PasswordState kPasswordState =
     SerializedNavigationEntry::HAS_PASSWORD_FIELD;
 const std::string kExtendedInfoKey1 = "key 1";
@@ -49,6 +41,33 @@
 const int64_t kRootTaskId = 0;
 const std::vector<int64_t> kChildrenTaskIds{3, 4, 5};
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL ReferrerUrl() {
+  return GURL("http://www.referrer.com");
+}
+GURL Url() {
+  return GURL("http://www.url.com");
+}
+GURL VirtualUrl() {
+  return GURL("http://www.virtual-url.com");
+}
+GURL OriginalRequestUrl() {
+  return GURL("http://www.original-request.com");
+}
+GURL FaviconUrl() {
+  return GURL("http://virtual-url.com/favicon.ico");
+}
+GURL RedirectUrl0() {
+  return GURL("http://go/redirect0");
+}
+GURL RedirectUrl1() {
+  return GURL("http://go/redirect1");
+}
+GURL OtherUrl() {
+  return GURL("http://other.com");
+}
+
 }  // namespace test_data
 
 // static
@@ -74,18 +93,18 @@
   SerializedNavigationEntry navigation;
   navigation.index_ = test_data::kIndex;
   navigation.unique_id_ = test_data::kUniqueID;
-  navigation.referrer_url_ = test_data::kReferrerURL;
+  navigation.referrer_url_ = test_data::ReferrerUrl();
   navigation.referrer_policy_ = test_data::kReferrerPolicy;
-  navigation.virtual_url_ = test_data::kVirtualURL;
+  navigation.virtual_url_ = test_data::VirtualUrl();
   navigation.title_ = test_data::kTitle;
   navigation.encoded_page_state_ = test_data::kEncodedPageState;
   navigation.transition_type_ = test_data::kTransitionType;
   navigation.has_post_data_ = test_data::kHasPostData;
   navigation.post_id_ = test_data::kPostID;
-  navigation.original_request_url_ = test_data::kOriginalRequestURL;
+  navigation.original_request_url_ = test_data::OriginalRequestUrl();
   navigation.is_overriding_user_agent_ = test_data::kIsOverridingUserAgent;
   navigation.timestamp_ = test_data::kTimestamp;
-  navigation.favicon_url_ = test_data::kFaviconURL;
+  navigation.favicon_url_ = test_data::FaviconUrl();
   navigation.http_status_code_ = test_data::kHttpStatusCode;
   navigation.password_state_ = test_data::kPasswordState;
 
@@ -94,9 +113,9 @@
   navigation.extended_info_map_[test_data::kExtendedInfoKey2] =
       test_data::kExtendedInfoValue2;
 
-  navigation.redirect_chain_.push_back(test_data::kRedirectURL0);
-  navigation.redirect_chain_.push_back(test_data::kRedirectURL1);
-  navigation.redirect_chain_.push_back(test_data::kVirtualURL);
+  navigation.redirect_chain_.push_back(test_data::RedirectUrl0());
+  navigation.redirect_chain_.push_back(test_data::RedirectUrl1());
+  navigation.redirect_chain_.push_back(test_data::VirtualUrl());
   navigation.task_id_ = test_data::kTaskId;
   navigation.parent_task_id_ = test_data::kParentTaskId;
   navigation.root_task_id_ = test_data::kRootTaskId;
diff --git a/components/sessions/core/serialized_navigation_entry_test_helper.h b/components/sessions/core/serialized_navigation_entry_test_helper.h
index 9e8af07..85ba2b5 100644
--- a/components/sessions/core/serialized_navigation_entry_test_helper.h
+++ b/components/sessions/core/serialized_navigation_entry_test_helper.h
@@ -27,23 +27,15 @@
 
 extern const int kIndex;
 extern const int kUniqueID;
-extern const GURL kReferrerURL;
 extern const int kReferrerPolicy;
-extern const GURL kURL;
-extern const GURL kVirtualURL;
 extern const base::string16 kTitle;
 extern const std::string kEncodedPageState;
 extern const ui::PageTransition kTransitionType;
 extern const bool kHasPostData;
 extern const int64_t kPostID;
-extern const GURL kOriginalRequestURL;
 extern const bool kIsOverridingUserAgent;
 extern const base::Time kTimestamp;
-extern const GURL kFaviconURL;
 extern const int kHttpStatusCode;
-extern const GURL kRedirectURL0;
-extern const GURL kRedirectURL1;
-extern const GURL kOtherURL;
 extern const SerializedNavigationEntry::PasswordState kPasswordState;
 extern const std::string kExtendedInfoKey1;
 extern const std::string kExtendedInfoKey2;
@@ -54,6 +46,17 @@
 extern const int64_t kTaskId;
 extern const std::vector<int64_t> kChildrenTaskIds;
 
+// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
+// function.
+GURL ReferrerUrl();
+GURL Url();
+GURL VirtualUrl();
+GURL OriginalRequestUrl();
+GURL FaviconUrl();
+GURL RedirectUrl0();
+GURL RedirectUrl1();
+GURL OtherUrl();
+
 }  // namespace test_data
 
 // Set of test functions to manipulate a SerializedNavigationEntry.
diff --git a/components/sessions/core/serialized_navigation_entry_unittest.cc b/components/sessions/core/serialized_navigation_entry_unittest.cc
index b4803fc..1ec6d1c 100644
--- a/components/sessions/core/serialized_navigation_entry_unittest.cc
+++ b/components/sessions/core/serialized_navigation_entry_unittest.cc
@@ -65,14 +65,14 @@
 
   // Fields that are written to the pickle.
   EXPECT_EQ(test_data::kIndex, new_navigation.index());
-  EXPECT_EQ(test_data::kReferrerURL, new_navigation.referrer_url());
+  EXPECT_EQ(test_data::ReferrerUrl(), new_navigation.referrer_url());
   EXPECT_EQ(test_data::kReferrerPolicy, new_navigation.referrer_policy());
-  EXPECT_EQ(test_data::kVirtualURL, new_navigation.virtual_url());
+  EXPECT_EQ(test_data::VirtualUrl(), new_navigation.virtual_url());
   EXPECT_EQ(test_data::kTitle, new_navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       new_navigation.transition_type(), test_data::kTransitionType));
   EXPECT_EQ(test_data::kHasPostData, new_navigation.has_post_data());
-  EXPECT_EQ(test_data::kOriginalRequestURL,
+  EXPECT_EQ(test_data::OriginalRequestUrl(),
             new_navigation.original_request_url());
   EXPECT_EQ(test_data::kIsOverridingUserAgent,
             new_navigation.is_overriding_user_agent());
diff --git a/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm b/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm
index 4dafcb9..5a6a1155 100644
--- a/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm
+++ b/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm
@@ -27,14 +27,14 @@
   std::unique_ptr<web::NavigationItem> navigation_item(
       web::NavigationItem::Create());
   navigation_item->SetReferrer(web::Referrer(
-      test_data::kReferrerURL,
+      test_data::ReferrerUrl(),
       static_cast<web::ReferrerPolicy>(test_data::kReferrerPolicy)));
-  navigation_item->SetURL(test_data::kVirtualURL);
+  navigation_item->SetURL(test_data::VirtualUrl());
   navigation_item->SetTitle(test_data::kTitle);
   navigation_item->SetTransitionType(test_data::kTransitionType);
   navigation_item->SetTimestamp(test_data::kTimestamp);
   navigation_item->GetFavicon().valid = true;
-  navigation_item->GetFavicon().url = test_data::kFaviconURL;
+  navigation_item->GetFavicon().url = test_data::FaviconUrl();
   return navigation_item;
 }
 
@@ -53,14 +53,14 @@
   EXPECT_EQ(test_data::kIndex, navigation.index());
 
   EXPECT_EQ(navigation_item->GetUniqueID(), navigation.unique_id());
-  EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
+  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
   EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
-  EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(test_data::kTitle, navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), test_data::kTransitionType));
   EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
 
   // The following fields should be left at their default values.
   SerializedNavigationEntry default_navigation;
diff --git a/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc b/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
index 4ece988..530c3f33 100644
--- a/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
+++ b/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
@@ -39,20 +39,20 @@
   driver->Sanitize(&navigation);
   EXPECT_EQ(test_data::kIndex, navigation.index());
   EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
+  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
   EXPECT_EQ(web::ReferrerPolicyAlways, navigation.referrer_policy());
-  EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(test_data::kTitle, navigation.title());
   EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), test_data::kTransitionType));
   EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
   EXPECT_EQ(test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url());
+  EXPECT_EQ(test_data::OriginalRequestUrl(), navigation.original_request_url());
   EXPECT_EQ(test_data::kIsOverridingUserAgent,
             navigation.is_overriding_user_agent());
   EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
   EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
 }
 
@@ -71,18 +71,18 @@
   // Fields that should remain untouched.
   EXPECT_EQ(test_data::kIndex, navigation.index());
   EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(test_data::kTitle, navigation.title());
   EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), test_data::kTransitionType));
   EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
   EXPECT_EQ(test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url());
+  EXPECT_EQ(test_data::OriginalRequestUrl(), navigation.original_request_url());
   EXPECT_EQ(test_data::kIsOverridingUserAgent,
             navigation.is_overriding_user_agent());
   EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
   EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
 
   // Fields that were sanitized.
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index d83a3c2..2c21200e 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -136,7 +136,7 @@
 <translation id="1521655867290435174">‏جداول بيانات Google</translation>
 <translation id="1527263332363067270">في انتظار الاتصال بالإنترنت…</translation>
 <translation id="1529521330346880926">‏10x15 (مغلف)</translation>
-<translation id="1529789484829130889">دُرج 8</translation>
+<translation id="1529789484829130889">الدُرج 8</translation>
 <translation id="1530707389502320859">‏يبدو الموقع الإلكتروني الذي حاولت الانتقال إليه مزيفًا. يحاكي المهاجمون أحيانًا المواقع الإلكترونية من خلال إجراء تغييرات بسيطة يصعب رؤيتها على عنوان URL.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">تعرض هذه الصفحة</translation>
@@ -178,7 +178,7 @@
 <translation id="1703835215927279855">خطاب</translation>
 <translation id="1706954506755087368">{1,plural, =1{هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ من المفترض أن تبدأ شهادة أمانه من الغد. ربما يكون السبب في ذلك خطأ في التهيئة أو مهاجمًا يعترض اتصالك.}zero{هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ من المفترض أن تبدأ شهادة أمانه خلال # يوم في المستقبل. ربما يكون السبب في ذلك خطأ في التهيئة أو مهاجمًا يعترض اتصالك.}two{هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ من المفترض أن تبدأ شهادة أمانه خلال يومين (#) في المستقبل. ربما يكون السبب في ذلك خطأ في التهيئة أو مهاجمًا يعترض اتصالك.}few{هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ من المفترض أن تبدأ شهادة أمانه خلال # أيام في المستقبل. ربما يكون السبب في ذلك خطأ في التهيئة أو مهاجمًا يعترض اتصالك.}many{هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ من المفترض أن تبدأ شهادة أمانه خلال # يومًا في المستقبل. ربما يكون السبب في ذلك خطأ في التهيئة أو مهاجمًا يعترض اتصالك.}other{هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ من المفترض أن تبدأ شهادة أمانه خلال # يوم في المستقبل. ربما يكون السبب في ذلك خطأ في التهيئة أو مهاجمًا يعترض اتصالك.}}</translation>
 <translation id="1710259589646384581">نظام التشغيل</translation>
-<translation id="1713628304598226412">دُرج 2</translation>
+<translation id="1713628304598226412">الدُرج 2</translation>
 <translation id="1715874602234207">F</translation>
 <translation id="1717494416764505390">صندوق البريد الإلكتروني 3</translation>
 <translation id="1718029547804390981">حجم المستند كبير جدًا بحيث تتعذّر إضافة تعليق توضيحي إليه</translation>
@@ -245,7 +245,7 @@
 <translation id="2025186561304664664">تم تعيين الخادم الوكيل على التهيئة التلقائية.</translation>
 <translation id="2030481566774242610">هل تقصد <ph name="LINK" />؟</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />التحقق من الخادم الوكيل والجدار الناري<ph name="END_LINK" /></translation>
-<translation id="2042213636306070719">دُرج 7</translation>
+<translation id="2042213636306070719">الدُرج 7</translation>
 <translation id="2053111141626950936">لن تتم ترجمة الصفحات باللغة <ph name="LANGUAGE" />.</translation>
 <translation id="2053553514270667976">الرمز البريدي</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{اقتراح واحد}zero{# اقتراح}two{اقتراحان (#)}few{# اقتراحات}many{# اقتراحًا}other{# اقتراح}}</translation>
@@ -283,7 +283,7 @@
 <translation id="2187317261103489799">اكتشاف (تلقائي)</translation>
 <translation id="2188375229972301266">عمل عدة ثقوب في الأسفل</translation>
 <translation id="2202020181578195191">أدخِل سنة تاريخ انتهاء صلاحية صحيحة</translation>
-<translation id="22081806969704220">دُرج 3</translation>
+<translation id="22081806969704220">الدُرج 3</translation>
 <translation id="2212735316055980242">تعذر العثور على السياسة</translation>
 <translation id="2213606439339815911">جارٍ جلب الإدخالات...</translation>
 <translation id="2215727959747642672">تعديل الملف</translation>
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">اختيار طريقة التسليم للمستخدم</translation>
 <translation id="2465688316154986572">وضع دبوس واحد</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />تشغيل بيانات تشخيص الشبكة<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">‏طلب 1 من -N</translation>
+<translation id="2469153820345007638">‏طلب 1 من N</translation>
 <translation id="2473195200299095979">ترجم هذه الصفحة</translation>
 <translation id="2479410451996844060">‏عنوان URL للبحث غير صالح.</translation>
 <translation id="2482878487686419369">الإشعارات</translation>
@@ -425,8 +425,8 @@
 <translation id="2799020568854403057">يحتوي موقع الويب المقصود على تطبيقات ضارة</translation>
 <translation id="2799223571221894425">إعادة تشغيل</translation>
 <translation id="2803306138276472711">‏اكتشف التصفح الآمن من Google مؤخرًا <ph name="BEGIN_LINK" />برامج ضارة<ph name="END_LINK" /> على <ph name="SITE" />. أحيانًا تصاب مواقع الويب الآمنة في الوضع العادي ببرامج ضارة.</translation>
-<translation id="2807052079800581569">Image Y position</translation>
-<translation id="2809804249696361569">لكل ورقة</translation>
+<translation id="2807052079800581569">الإحداثي الصادي للصورة</translation>
+<translation id="2809804249696361569">للورقتَين</translation>
 <translation id="2824775600643448204">شريط العناوين والبحث</translation>
 <translation id="2826760142808435982">تم تشفير الاتصال ومصادقته باستخدام <ph name="CIPHER" />، ويستخدم <ph name="KX" /> كآلية التبادل الرئيسية.</translation>
 <translation id="2835170189407361413">محو النموذج</translation>
@@ -564,7 +564,7 @@
 <translation id="3468054117417088249">‏<ph name="TAB_SWITCH_SUFFIX" /> مفتوحة الآن، يمكنك الضغط على مفتاح Tab ثم مفتاح Enter للتبديل إلى علامة التبويب المفتوحة.</translation>
 <translation id="3479552764303398839">ليس الآن</translation>
 <translation id="3484560055331845446">‏قد لا تتمكّن من الوصول إلى حسابك على Google. لذا ينصح Chrome بتغيير كلمة مرورك الآن. وسيُطلَب منك تسجيل الدخول.</translation>
-<translation id="3487845404393360112">دُرج 4</translation>
+<translation id="3487845404393360112">الدُرج 4</translation>
 <translation id="3495081129428749620">البحث في الصفحة
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">يتم تجاهل هذه السياسة بسبب سياسة أخرى من نفس مجموعة السياسة لها أولوية أعلى.</translation>
@@ -573,7 +573,7 @@
 <translation id="3528171143076753409">شهادة الخادم غير موثوق فيها.</translation>
 <translation id="3528485271872257980">بني داكن</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{عنصر واحد على الأقل على الأجهزة المتزامنة}=1{عنصر واحد (1) (وأكثر على الأجهزة المتزامنة)}two{عنصران (#) (وأكثر على الأجهزة المتزامنة)}few{# عناصر (وأكثر على الأجهزة المتزامنة)}many{# عنصرًا (وأكثر على الأجهزة المتزامنة)}other{# عنصر (وأكثر على الأجهزة المتزامنة)}}</translation>
-<translation id="3531780078352352885">أوراق المَهمة</translation>
+<translation id="3531780078352352885">أوراق المهمة</translation>
 <translation id="3533328374079021623">صندوق البريد الإلكتروني 5</translation>
 <translation id="3539171420378717834">الاحتفاظ بنسخة من هذه البطاقة على هذا الجهاز</translation>
 <translation id="3553513561058684206">محتوى يهمّك</translation>
@@ -598,7 +598,7 @@
 <translation id="3630155396527302611">إذا تم بالفعل إدراج صفحة الويب كبرنامج مسموح له بالدخول إلى الشبكة، فجرّب
         إزالتها من القائمة وإضافتها مرةً أخرى.</translation>
 <translation id="3631244953324577188">المقاييس الحيوية</translation>
-<translation id="3634530185120165534">دُرج 5</translation>
+<translation id="3634530185120165534">الدُرج 5</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">تم التحقق بنجاح</translation>
 <translation id="3655670868607891010">إذا تكرّر هذا الأمر، ننصحك بالاطّلاع على هذه <ph name="HELP_LINK" />.</translation>
@@ -710,7 +710,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{عنصر واحد آخر}zero{# عنصر آخر}two{عنصران آخران (#)}few{# عناصر أخرى}many{# عنصرًا آخر}other{# عنصر آخر}}</translation>
 <translation id="4130226655945681476">التحقق من كابلات الشبكة، والمودم، وجهاز التوجيه</translation>
 <translation id="413544239732274901">مزيد من المعلومات</translation>
-<translation id="4142935452406587478">دُرج 10</translation>
+<translation id="4142935452406587478">الدُرج 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">استخدام الإعدادات العمومية التلقائية (كشف)</translation>
 <translation id="4159784952369912983">أرجواني</translation>
@@ -812,7 +812,7 @@
 <translation id="4522570452068850558">التفاصيل</translation>
 <translation id="4524138615196389145">‏التأكد من بطاقاتك بشكلٍ أسرع باستخدام WebAuthn من الآن فصاعدًا</translation>
 <translation id="4524805452350978254">إدارة البطاقات</translation>
-<translation id="4542971377163063093">دُرج 6</translation>
+<translation id="4542971377163063093">الدُرج 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">الفلاش</translation>
 <translation id="4558551763791394412">جرّب إيقاف الإضافات.</translation>
@@ -860,7 +860,7 @@
 <translation id="4780900888022378816">يدير <ph name="ENROLLMENT_DOMAIN" /> جهازك ويدير <ph name="ACCOUNT_DOMAIN" /> حسابك.</translation>
 <translation id="4785689107224900852">التبديل إلى علامة التبويب هذه</translation>
 <translation id="4791134497475588553">‏تطبيقات Linux المثبتة ومواعيد آخر استخدام لها.</translation>
-<translation id="4796594887379589189">رقم تعريف حساب المَهمة</translation>
+<translation id="4796594887379589189">رقم تعريف حساب المهمة</translation>
 <translation id="4798078619018708837">‏يمكنك إدخال تاريخ انتهاء الصلاحية ورمز التحقُّق من البطاقة (CVC) لبطاقة <ph name="CREDIT_CARD" /> لتحديث تفاصيلها. وبعد التأكيد، ستتم مشاركة تفاصيل البطاقة من حسابك على Google مع هذا الموقع الإلكتروني.</translation>
 <translation id="4800132727771399293">‏تحقق من تاريخ انتهاء الصلاحية ورمز التحقق من البطاقة (CVC) وأعد المحاولة مرة أخرى.</translation>
 <translation id="480334179571489655">خطأ في سياسة المصدر</translation>
@@ -1060,7 +1060,7 @@
 <translation id="5632627355679805402">‏تم تشفير بياناتك باستخدام <ph name="BEGIN_LINK" />كلمة مرور Google<ph name="END_LINK" /> اعتبارًا من. <ph name="TIME" />. يُرجى إدخالها لبدء المزامنة.</translation>
 <translation id="5633066919399395251">يمكن حاليًا للمهاجمين على <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> محاولة تثبيت برامج خطيرة على الكمبيوتر تسرق أو تحذف معلوماتك (على سبيل المثال، الصور، وكلمات المرور، والرسائل، وبطاقات الائتمان). <ph name="BEGIN_LEARN_MORE_LINK" />مزيد من المعلومات<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">تم حظر المحتوى المُضلّل.</translation>
-<translation id="5644090287519800334">‏طباعة جانب واحد image X shift</translation>
+<translation id="5644090287519800334">‏طباعة الجانب الأول image X shift</translation>
 <translation id="5645854190134202180">مناوبة العمل الثانية</translation>
 <translation id="5659593005791499971">البريد الإلكتروني</translation>
 <translation id="5663614846592581799">‏9x11 (مغلف)</translation>
@@ -1135,7 +1135,7 @@
 <translation id="5990559369517809815">تم حظر الطلبات المقدمة إلى الخادم بواسطة إحدى الإضافات.</translation>
 <translation id="5992691462791905444">‏تصميم الطي على شكل حرف Z</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> من نتائج البحث عن "<ph name="SEARCH_TEXT" />"</translation>
-<translation id="6008122969617370890">‏طلب 1 من N-</translation>
+<translation id="6008122969617370890">‏طلب 1 من N</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">التحقق من كلمات المرور</translation>
 <translation id="6015796118275082299">عام</translation>
@@ -1359,7 +1359,7 @@
 <translation id="7075452647191940183">الطلب كبير جدًا</translation>
 <translation id="7079718277001814089">يحتوي هذا الموقع على برامج ضارة</translation>
 <translation id="7081308185095828845">لا تتوفّر هذه الميزة على جهازك.</translation>
-<translation id="7083258188081898530">دُرج 9</translation>
+<translation id="7083258188081898530">الدُرج 9</translation>
 <translation id="7087282848513945231">مقاطعة</translation>
 <translation id="7090678807593890770">‏البحث في Google عن <ph name="LINK" /></translation>
 <translation id="7108338896283013870">إخفاء</translation>
@@ -1371,7 +1371,7 @@
 <translation id="7135130955892390533">عرض الحالة</translation>
 <translation id="7138472120740807366">طريقة التسليم</translation>
 <translation id="7139724024395191329">إمارة</translation>
-<translation id="714064300541049402">‏طباعة الجانبين image X shift</translation>
+<translation id="714064300541049402">‏طباعة الجانب الثاني image X shift</translation>
 <translation id="7152423860607593928">‏Number-14 (مغلف)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> وطريقة دفع <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> أخرى}two{<ph name="PAYMENT_METHOD_PREVIEW" /> وطريقتا دفع <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> أخريان}few{<ph name="PAYMENT_METHOD_PREVIEW" /> و<ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> طرق دفع أخرى}many{<ph name="PAYMENT_METHOD_PREVIEW" /> و<ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> طريقة دفع أخرى}other{<ph name="PAYMENT_METHOD_PREVIEW" /> و<ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> طريقة دفع أخرى}}</translation>
 <translation id="7153618581592392745">بنفسجي فاتح</translation>
@@ -1478,7 +1478,7 @@
 <translation id="7569983096843329377">أسود</translation>
 <translation id="7575207903026901870">‏إزالة زر "الاقتراحات"، اضغط على مفتاح Enter لإزالة هذا الاقتراح</translation>
 <translation id="7578104083680115302">‏الدفع سريعًا على المواقع والتطبيقات على جميع الأجهزة باستخدام البطاقات التي حفظتها في Google.</translation>
-<translation id="7581199239021537589">‏طباعة الجانبين image Y shift</translation>
+<translation id="7581199239021537589">‏طباعة الجانب الثاني image Y shift</translation>
 <translation id="7592362899630581445">تنتهك شهادة الخادم القيود المفروضة على الاسم.</translation>
 <translation id="7598391785903975535">أقل من <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187">يتعذر على <ph name="HOST_NAME" /> معالجة هذا الطلب حاليًا.</translation>
@@ -1487,7 +1487,7 @@
 <translation id="7613889955535752492">تاريخ انتهاء الصلاحية: <ph name="EXPIRATION_MONTH" /> / <ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">‏لديك فعلاً بيانات تم تشفيرها باستخدام نسخة أخرى من كلمة مرور حسابك في Google. يُرجى إدخالها أدناه.</translation>
 <translation id="7619838219691048931">ورقة النهاية</translation>
-<translation id="762844065391966283">واحد في كل مرة</translation>
+<translation id="762844065391966283">واحد تلو الآخر</translation>
 <translation id="7633909222644580952">تقارير الأعطال وبيانات الأداء</translation>
 <translation id="7637571805876720304">‏هل تريد إزالة بطاقة الائتمان من Chromium؟</translation>
 <translation id="7638605456503525968">المنافذ التسلسلية</translation>
@@ -1528,7 +1528,7 @@
 <translation id="7764225426217299476">إضافة عنوان</translation>
 <translation id="7766518757692125295">Skirt</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
-<translation id="7773005668374414287">نفس الترتيب على الواجهة</translation>
+<translation id="7773005668374414287">نفس الترتيب والوجه للأعلى</translation>
 <translation id="777702478322588152">المديرية</translation>
 <translation id="7791196057686275387">حزمة</translation>
 <translation id="7791543448312431591">إضافة</translation>
@@ -1550,7 +1550,7 @@
 <translation id="7878562273885520351">من المحتمل أنه تم اختراق كلمة مرورك</translation>
 <translation id="7882421473871500483">بني</translation>
 <translation id="7887683347370398519">‏تحقق من رمز التحقق من البطاقة (CVC) ثم أعد المحاولة.</translation>
-<translation id="7888575728750733395">‏طباعة عرض intent</translation>
+<translation id="7888575728750733395">تحديد لون الصورة</translation>
 <translation id="7904208859782148177">‏C3 (مغلف)</translation>
 <translation id="7932579305932748336">الطبقة الخارجية</translation>
 <translation id="79338296614623784">أدخِل رقم هاتف صحيحًا</translation>
@@ -1743,7 +1743,7 @@
 <translation id="8866928039507595380">الطي</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">العناصر المغلقة مؤخرًا</translation>
-<translation id="8870494189203302833">نفس الترتيب بالمقلوب</translation>
+<translation id="8870494189203302833">نفس الترتيب والوجه للأسفل</translation>
 <translation id="8874824191258364635">أدخِل رقم بطاقة صحيحًا</translation>
 <translation id="8891727572606052622">وضع الخادم الوكيل غير صالح.</translation>
 <translation id="8894794286471754040">الحافة الطويلة أولًا</translation>
@@ -1795,7 +1795,7 @@
 <translation id="9080712759204168376">ملخص الطلبات</translation>
 <translation id="9089260154716455634">سياسة "التوقف عن العمل":</translation>
 <translation id="9095388113577226029">مزيد من اللغات...</translation>
-<translation id="9101630580131696064">دُرج 1</translation>
+<translation id="9101630580131696064">الدُرج 1</translation>
 <translation id="9103872766612412690">‏يستخدم <ph name="SITE" /> التشفير عادة لحماية معلوماتك. عندما حاول Chromium الاتصال بموقع <ph name="SITE" /> هذه المرة، أرجَع موقع الويب بيانات اعتماد غير عادية وغير صحيحة. وقد يحدث هذا عندما يحاول أحد المهاجمين التظاهر بأنه موقع <ph name="SITE" />، أو إذا قاطعت شاشة تسجيل دخول Wi-Fi الاتصال. ولكن لا تزال معلوماتك آمنة نظرًا لأن Chromium أوقَفَ الاتصال قبل تبادل أي بيانات.</translation>
 <translation id="9106062320799175032">إضافة عنوان إرسال الفواتير</translation>
 <translation id="9114524666733003316">جارٍ التحقق من البطاقة...</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb
index e35e668..8305a84 100644
--- a/components/strings/components_strings_as.xtb
+++ b/components/strings/components_strings_as.xtb
@@ -691,7 +691,7 @@
 <translation id="4075941231477579656">স্পৰ্শ আইডি</translation>
 <translation id="4079302484614802869">প্ৰক্সি কনফিগাৰেশ্বন এটা .pac স্ক্রিপ্ট URL ব্যৱহাৰ কৰিবলৈহে ছেট কৰা হয়, স্থিৰ প্ৰক্সি ছাৰ্ভাৰ ব্যৱহাৰ কৰিবলৈ নহয়।</translation>
 <translation id="4082393374666368382">ছেটিংসমূহ - পৰিচালনা</translation>
-<translation id="4088981014127559358">কাষ ১ প্ৰতিচ্ছবি Y শ্বিফ্ট</translation>
+<translation id="4088981014127559358">কাষৰ ১ প্ৰতিচ্ছবি Y শ্বিফ্ট</translation>
 <translation id="4098354747657067197">আগত বিভ্ৰান্তিকৰ ছাইট আছে</translation>
 <translation id="4101413244023615925">পাঠ আৰু গ্ৰাফিক</translation>
 <translation id="4103249731201008433">ডিভাইচৰ ক্ৰমিক নম্বৰটো অমান্য</translation>
@@ -1055,7 +1055,7 @@
 <translation id="5632627355679805402">আপোনাৰ ডেটা <ph name="BEGIN_LINK" />Google পাছৱৰ্ড<ph name="END_LINK" />ৰ সৈতে <ph name="TIME" /> পর্যন্ত এনক্ৰিপ্ট কৰা হৈছে। ছিংক কৰা আৰম্ভ কৰিবলৈ এইটো দিয়ক।</translation>
 <translation id="5633066919399395251">বর্তমান <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />ত থকা আক্ৰমণকাৰীয়ে আপোনাৰ কম্পিউটাৰত কিছুমান ক্ষতিকাৰক প্র’গ্ৰেম ইনষ্টল কৰিবলৈ চেষ্টা কৰিব পাৰে ,যিবোৰে আপোনাৰ তথ্য (উদাহৰণ স্বৰূপে ফট’, পাছৱৰ্ড, বাৰ্তা আৰু ক্ৰেডিট কাৰ্ডসমূহ) চুৰি কৰিব বা মচিব পাৰে। <ph name="BEGIN_LEARN_MORE_LINK" />অধিক জানক<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">বিভ্ৰান্তিকৰ সমল অৱৰোধ কৰা হৈছে।</translation>
-<translation id="5644090287519800334">কাষ ১ প্ৰতিচ্ছবি X শ্বিফ্ট</translation>
+<translation id="5644090287519800334">কাষৰ ১ প্ৰতিচ্ছবি X শ্বিফ্ট</translation>
 <translation id="5645854190134202180">দ্বিতীয় শ্বিফ্ট</translation>
 <translation id="5659593005791499971">ইমেইল</translation>
 <translation id="5663614846592581799">৯x১১ (লেফাফা)</translation>
@@ -1362,7 +1362,7 @@
 <translation id="7129409597930077180">এই ঠিকনালৈ পঠিয়াব নোৱাৰি। অন্য এটা ঠিকনা বাছনি কৰক।</translation>
 <translation id="7135130955892390533">স্থিতি দেখুৱাওক</translation>
 <translation id="7139724024395191329">এমিৰে'ট</translation>
-<translation id="714064300541049402">কাষ ২ প্ৰতিচ্ছবি X শ্বিফ্ট</translation>
+<translation id="714064300541049402">কাষৰ ২ প্ৰতিচ্ছবি X শ্বিফ্ট</translation>
 <translation id="7152423860607593928">সংখ্যা-১৪ (লেফাফা)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> আৰু <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />টা অধিক}one{<ph name="PAYMENT_METHOD_PREVIEW" /> আৰু <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />টা অধিক}other{<ph name="PAYMENT_METHOD_PREVIEW" /> আৰু <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />টা অধিক}}</translation>
 <translation id="7153618581592392745">লেভেণ্ডাৰ</translation>
@@ -1468,7 +1468,7 @@
 <translation id="7569983096843329377">ক'লা</translation>
 <translation id="7575207903026901870">পৰামৰ্শৰ বুটামটো আঁতৰাওক, এই পৰামৰ্শটো আঁতৰাবলৈ এণ্টাৰ টিপক</translation>
 <translation id="7578104083680115302">আপুনি Googleত ছেভ কৰি থোৱা কার্ডসমূহ ব্যৱহাৰ কৰি সকলো ডিচাইচতে ছাইট আৰু এপ্‌সমূহত পৰিশোধ কৰক।</translation>
-<translation id="7581199239021537589">কাষ ২ প্ৰতিচ্ছবি Y শ্বিফ্ট</translation>
+<translation id="7581199239021537589">কাষৰ ২ প্ৰতিচ্ছবি Y শ্বিফ্ট</translation>
 <translation id="7592362899630581445">ছার্ভাৰৰ প্ৰমাণপত্ৰই নাম সম্পর্কীয় সীমাবদ্ধতাসমূহ উলংঘন কৰে।</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" />তকৈ কম</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" />এ এই মুহূৰ্তত এই অনুৰোধটো নিয়ন্ত্ৰণ কৰিব নোৱাৰে।</translation>
@@ -1497,7 +1497,7 @@
 <translation id="7682287625158474539">শ্বিপিং</translation>
 <translation id="7687186412095877299">আপোনাৰ ছেভ কৰি থোৱা পৰিশোধ পদ্ধতি ব্যৱহাৰ কৰি পৰিশোধৰ ফৰ্ম পূৰ কৰক</translation>
 <translation id="7687305263118037187">পুনঃচেষ্টাৰ সময় উকলা</translation>
-<translation id="7693583928066320343">পৃষ্ঠাৰ ক্ৰম লাভ পোৱা গৈছে</translation>
+<translation id="7693583928066320343">পৃষ্ঠাৰ ক্ৰম পোৱা গৈছে</translation>
 <translation id="7697066736081121494">Prc8 (লেফাফা)</translation>
 <translation id="769721561045429135">এই মুহূৰ্তত আপোনাৰ লগত কেইখনমান কাৰ্ড আছে যিবোৰ কেৱল এই ডিভাইচটোতহে ব্যৱহাৰ কৰিব পাৰি। কাৰ্ডবোৰৰ পৰ্যালোচনা কৰিবলৈ অব্যাহত ৰাখক-ত ক্লিক কৰক</translation>
 <translation id="7699293099605015246">প্ৰৱন্ধবোৰ এই মুহূৰ্তত উপলব্ধ নহয়</translation>
@@ -1626,7 +1626,7 @@
 <translation id="8261506727792406068">মচক</translation>
 <translation id="8262952874573525464">তলৰ অংশৰ কাষত চিলাওক</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> হিচাপে ছাইন ইন কৰিছে</translation>
-<translation id="8269242089528251720">পৃথক নথি/ক’লেট কৰা প্ৰতিলিপিসমূহ</translation>
+<translation id="8269242089528251720">পৃথক নথি/মিলোৱা প্ৰতিলিপিসমূহ</translation>
 <translation id="8269981117540303696">বর্তমান আপুনি ব্যক্তিগতভাৱে ব্ৰাউজিং কৰিব পাৰে আৰু এই ডিভাইচটো ব্যৱহাৰ কৰা অন্য লোকসকলে আপোনাৰ কার্যকলাপ দেখা নাপাব। অৱশ্যে, ডাউনল’ড আৰু বুকমার্কসমূহ ছেভ কৰা হ’ব।</translation>
 <translation id="8277900682056760511">পৰিশোধ নিয়ন্ত্ৰক শ্বীটখন খোলা আছে</translation>
 <translation id="8281084378435768645">ডাঙৰ-ফট'</translation>
@@ -1681,7 +1681,7 @@
 <translation id="8553075262323480129">পৃষ্ঠাটোৰ ভাষা চিনাক্ত কৰিব নোৱাৰাৰ বাবে অনুবাদ কৰিব পৰা নগ’ল।</translation>
 <translation id="8557066899867184262">CVCটো আপোনাৰ কাৰ্ডৰ পিছফালে আছে।</translation>
 <translation id="8559762987265718583">আপোনাৰ ডিভাইচৰ তাৰিখ আৰু সময় (<ph name="DATE_AND_TIME" />) অশুদ্ধ হোৱাৰ বাবে <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />লৈ কোনো ব্যক্তিগত সংযোগ স্থাপন কৰিব নোৱাৰি।</translation>
-<translation id="8564182942834072828">পৃথক নথি/ক’লেট নকৰা প্ৰতিলিপিসমূহ</translation>
+<translation id="8564182942834072828">পৃথক নথি/নিমিলোৱা প্ৰতিলিপিসমূহ</translation>
 <translation id="8564985650692024650">আপুনি যদি নিজৰ পাছৱৰ্ডটো অন্য ছাইটত পুনৰ ব্যৱহাৰ কৰিছিল <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />এ আপোনাৰ পাছৱর্ডটো ৰিছেট কৰিবলৈ চুপাৰিছ কৰে।</translation>
 <translation id="8571890674111243710">পৃষ্ঠাটো <ph name="LANGUAGE" />লৈ অনুবাদ কৰি থকা হৈছে...</translation>
 <translation id="8574899947864779331">কাৰ্ডসমূহ খৰতকীয়াকৈ নিশ্চিত কৰিবলৈ স্পৰ্শ আইডি ব্যৱহাৰ কৰক</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 63d23d8..d4f9933 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -172,7 +172,7 @@
 <translation id="1663943134801823270">Kart və ünvanlar Chrome'dandır. Onları <ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" /> bölməsindən idarə edə bilərsiniz.</translation>
 <translation id="1671391448414634642"><ph name="SOURCE_LANGUAGE" /> dilindəki səhifələr artıq <ph name="TARGET_LANGUAGE" /> dilinə tərcümə ediləcək.</translation>
 <translation id="1676269943528358898">Məlumatınızı qorumaq üçün <ph name="SITE" /> adətən şifrələmə istifadə edir. Chrome bu dəfə <ph name="SITE" /> üzərinə qoşulmağa çalışanda sayt qeyri-adi və yanlış kredensialları qaytarmağa başladı. Bu, hücum edən özünü <ph name="SITE" /> kimi apardıqda, və ya Wi-Fi tərəfindən bağlantı kəsintisi olduqda baş verir. Məlumatınız hələ də güvənlidir, çünki Chrome datanın mübadiləsindən öncə bağlantını kəsib.</translation>
-<translation id="1682696192498422849">Əvvəlcə qısa kənar</translation>
+<translation id="1682696192498422849">Qısa kənar əvvəldə</translation>
 <translation id="168841957122794586">Server sertifikatının kriptoqrafik açarı zəifdir.</translation>
 <translation id="1697532407822776718">Hər şey hazırdır!</translation>
 <translation id="1703835215927279855">Letter</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 17c3d0ed..fdf63e0 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -1177,7 +1177,7 @@
 <translation id="6157877588268064908">Выберыце адрас, каб убачыць спосабы дастаўкі і патрабаванні для дастаўкі</translation>
 <translation id="6165508094623778733">Даведацца больш</translation>
 <translation id="6177128806592000436">Ваша падключэнне да гэтага сайта небяспечнае</translation>
-<translation id="6180316780098470077">Прамежак паміж спробамі</translation>
+<translation id="6180316780098470077">Інтэрвал паміж спробамі</translation>
 <translation id="6196640612572343990">Блакіраваць староннія файлы cookie</translation>
 <translation id="6203231073485539293">Праверце падключэнне да інтэрнэту</translation>
 <translation id="6218753634732582820">Выдаліць адрас з Chromium?</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index 387a13a..3f67853 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -163,7 +163,7 @@
 <translation id="1639239467298939599">লোড হচ্ছে</translation>
 <translation id="1640180200866533862">ব্যবহারকারীর নীতিসমূহ</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />এই সাইটের হোমপেজটি ঘুরে দেখুন<ph name="END_LINK" />।</translation>
-<translation id="1641976391427233992">এই পর্যন্ত আউটপুট দেরি করান</translation>
+<translation id="1641976391427233992">ডিলে আউটপুট</translation>
 <translation id="1644574205037202324">ইতিহাস</translation>
 <translation id="1645368109819982629">অসমর্থিত প্রোটোকল</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -557,7 +557,7 @@
 <translation id="3447661539832366887">এই ডিভাইসের মালিক ডাইনোসর গেমটি বন্ধ করেছেন৷</translation>
 <translation id="3447884698081792621">সার্টিফিকেট দেখান (<ph name="ISSUER" /> এর দ্বারা জারি করা)</translation>
 <translation id="3452404311384756672">বিরামকাল প্রাপ্ত করুন:</translation>
-<translation id="3453962258458347894">রিট্রাইয়ের সংখ্যা</translation>
+<translation id="3453962258458347894">কতবার চেষ্টা করা যাবে</translation>
 <translation id="3456231139987291353">Number-11 (Envelope)</translation>
 <translation id="3461824795358126837">হাইলাইটার</translation>
 <translation id="3462200631372590220">উন্নত করার বিশদ বিবরণ, লুকান</translation>
@@ -1130,7 +1130,7 @@
 <translation id="5975083100439434680">ছোট করুন</translation>
 <translation id="5979084224081478209">পাসওয়ার্ড চেক করুন</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
-<translation id="5984570616552610254">চেম্বারের আদ্রতা</translation>
+<translation id="5984570616552610254">চেম্বারের আর্দ্রতা</translation>
 <translation id="598637245381783098">পেমেন্ট অ্যাপ খোলা যাচ্ছে না</translation>
 <translation id="5989320800837274978">কোনো নির্ধারিত প্রক্সি সার্ভার অথবা একটি.pac স্ক্রিপ্ট UR সুর্নিদিষ্টভাবে উল্লেখ করা হয়নি৷</translation>
 <translation id="5990559369517809815">সার্ভারে অনুরোধগুলি একটি এক্সটেনশন দিয়ে ব্লক করা আছে৷</translation>
@@ -1178,7 +1178,7 @@
 <translation id="6157877588268064908">শিপিং এর পদ্ধতি এবং প্রয়োজনীয়তা দেখতে একটি ঠিকানা বেছে নিন</translation>
 <translation id="6165508094623778733">আরও জানুন</translation>
 <translation id="6177128806592000436">এই সাইটে আপনার সংযোগ নিরাপদ নয়</translation>
-<translation id="6180316780098470077">রিট্রাই ইন্টার্ভ্যাল</translation>
+<translation id="6180316780098470077">কতক্ষণ পর আবার চেষ্টা করা যাবে</translation>
 <translation id="6196640612572343990">তৃতীয় পক্ষের কুকিজ অবরুদ্ধ করুন</translation>
 <translation id="6203231073485539293">আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন</translation>
 <translation id="6218753634732582820">Chromium থেকে ঠিকানা সরাবেন?</translation>
@@ -1506,7 +1506,7 @@
 <translation id="7681101578153515023">সার্চ ইঞ্জিন পরিবর্তন করুন</translation>
 <translation id="7682287625158474539">শিপিং</translation>
 <translation id="7687186412095877299">আপনার সেভ করা পেমেন্ট পদ্ধতি দিয়ে পেমেন্ট ফর্ম পূরণ করে</translation>
-<translation id="7687305263118037187">আর রিট্রাই করতে পারবেন না</translation>
+<translation id="7687305263118037187">আর চেষ্টা করতে পারবেন না</translation>
 <translation id="7693583928066320343">পৃষ্ঠার অর্ডার রিসিভ করা হয়েছে</translation>
 <translation id="7697066736081121494">Prc8 (Envelope)</translation>
 <translation id="769721561045429135">এই মুহূর্তে, আপনার কাছে থাকা কার্ডগুলি শুধুমাত্র এই ডিভাইসে ব্যবহার করা যেতে পারে। কার্ডগুলির পর্যালোচনা চালিয়ে যেতে ক্লিক করুন।</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index 9a5b0d0..bb0d07a 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -1528,7 +1528,7 @@
 <translation id="7764225426217299476">Dodaj adresu</translation>
 <translation id="7766518757692125295">Kontura</translation>
 <translation id="7770259615151589601">Zadano duga</translation>
-<translation id="7773005668374414287">Isti red s odštampanom stranom prema gore</translation>
+<translation id="7773005668374414287">Isti redoslijed s odštampanom stranom prema gore</translation>
 <translation id="777702478322588152">Prefektura</translation>
 <translation id="7791196057686275387">Povezivanje</translation>
 <translation id="7791543448312431591">Dodaj</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index d7a3458..021c7414 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -4,7 +4,7 @@
 <translation id="1008557486741366299">Ara no</translation>
 <translation id="1010200102790553230">Carrega la pàgina més tard</translation>
 <translation id="1015730422737071372">Proporcioneu més informació</translation>
-<translation id="1019413721762100891">desactivada</translation>
+<translation id="1019413721762100891">Desactivat</translation>
 <translation id="1021110881106174305">Targetes acceptades</translation>
 <translation id="1021753677514347426">Aquest problema es produeix a causa d'un certificat que tu o una altra persona heu instal·lat al dispositiu. Se sap que aquest certificat s'utilitza per supervisar i interceptar xarxes, i Chromium no hi confia. Tot i que hi ha casos en què és legítim dur a terme una supervisió, per exemple, en el cas d'una empresa o d'un centre educatiu, Chromium vol assegurar-se que estiguis al cas d'aquesta situació, encara que no la puguis evitar. La supervisió es pot produir en qualsevol navegador o aplicació que accedeixi al web.</translation>
 <translation id="1032854598605920125">Gira en sentit horari</translation>
@@ -180,7 +180,7 @@
 <translation id="1710259589646384581">SO</translation>
 <translation id="1713628304598226412">Safata 2</translation>
 <translation id="1715874602234207">F</translation>
-<translation id="1717494416764505390">Bústia 3</translation>
+<translation id="1717494416764505390">Bústia de correu 3</translation>
 <translation id="1718029547804390981">No es poden afegir anotacions a aquest fitxer perquè és massa gran</translation>
 <translation id="1721424275792716183">* El camp és obligatori</translation>
 <translation id="1727741090716970331">Afegeix un número de targeta vàlid</translation>
@@ -194,9 +194,9 @@
 <translation id="1743520634839655729">Perquè la propera vegada puguis pagar més ràpidament, desa la targeta, el nom i l'adreça de facturació al Compte de Google i en aquest dispositiu.</translation>
 <translation id="1743570585616704562">No s'ha reconegut</translation>
 <translation id="1745880797583122200">El navegador està gestionat</translation>
-<translation id="1746113442205726301">Torn de la imatge Y</translation>
+<translation id="1746113442205726301">Desplaçament de la imatge Y</translation>
 <translation id="17513872634828108">Pestanyes obertes</translation>
-<translation id="1752021286346845558">Bústia 8</translation>
+<translation id="1752021286346845558">Bústia de correu 8</translation>
 <translation id="1753706481035618306">Número de pàgina</translation>
 <translation id="1763864636252898013">Aquest servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè el sistema operatiu del vostre dispositiu considera que el seu certificat de seguretat no és de confiança. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Proveu d'executar el Diagnòstic de xarxa de Windows<ph name="END_LINK" />.</translation>
@@ -235,7 +235,7 @@
 <translation id="1973335181906896915">Error de serialització</translation>
 <translation id="1974060860693918893">Configuració avançada</translation>
 <translation id="1974883374937189061">Per ajudar a millorar la seguretat de Chrome, envia a Google <ph name="BEGIN_WHITEPAPER_LINK" />URL d'algunes pàgines que visites, informació limitada del sistema i part del contingut de les pàgines<ph name="END_WHITEPAPER_LINK" />. <ph name="PRIVACY_PAGE_LINK" /></translation>
-<translation id="1975584088563498795">Bústia 10</translation>
+<translation id="1975584088563498795">Bústia de correu 10</translation>
 <translation id="1978555033938440688">Versió del microprogramari</translation>
 <translation id="1981206234434200693">Esborra les dades de l'historial de navegació de Chrome</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">Tria el mètode d'entrega</translation>
 <translation id="2465688316154986572">Grapat</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />Executar el Diagnòstic de xarxa<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">Ordre mínima</translation>
+<translation id="2469153820345007638">Ordre d'1 a N</translation>
 <translation id="2473195200299095979">Tradueix aquesta pàgina</translation>
 <translation id="2479410451996844060">URL de cerca no vàlid.</translation>
 <translation id="2482878487686419369">Notificacions</translation>
@@ -390,7 +390,7 @@
 <translation id="2687555958734450033">Mida òptima</translation>
 <translation id="2691924980723297736">Advertiment de seguretat</translation>
 <translation id="2699302886720511147">Targetes acceptades</translation>
-<translation id="2701514975700770343">Cap avall</translation>
+<translation id="2701514975700770343">Cara avall</translation>
 <translation id="2702801445560668637">Llista de lectura</translation>
 <translation id="2704283930420550640">El valor no coincideix amb el format.</translation>
 <translation id="2705137772291741111">La còpia desada (a la memòria cau) d'aquest lloc no s'ha pogut llegir.</translation>
@@ -441,7 +441,7 @@
 <translation id="2934466151127459956">Government-Letter</translation>
 <translation id="2941952326391522266">Aquest servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè el seu certificat de seguretat prové del domini <ph name="DOMAIN2" />. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió.</translation>
 <translation id="2948083400971632585">Podeu desactivar qualsevol servidor intermediari configurat per a una connexió des de la pàgina de configuració.</translation>
-<translation id="2951588413176968965">La meva bústia</translation>
+<translation id="2951588413176968965">La meva bústia de correu</translation>
 <translation id="295526156371527179">Advertiment: aquesta política no s'ha combinat com a diccionari segons el que s'especifica a la política perquè no és un diccionari.</translation>
 <translation id="2955913368246107853">Tanca la barra de cerca</translation>
 <translation id="2969319727213777354">Per establir una connexió segura, heu de tenir el rellotge ben configurat, ja que els certificats que els llocs web fan servir per identificar-se només són vàlids durant períodes de temps concrets. Com que el rellotge del dispositiu no està ben configurat, Google Chrome no pot verificar aquests certificats.</translation>
@@ -456,7 +456,7 @@
 <translation id="2991174974383378012">Comparteix informació amb llocs web</translation>
 <translation id="2991571918955627853">En aquest moments no pots visitar la pàgina <ph name="SITE" /> perquè el lloc web fa servir HSTS. Els atacs i els errors de xarxa acostumen a ser temporals, o sigui que probablement la pàgina funcionarà més endavant.</translation>
 <translation id="2996674880327704673">Suggeriments de Google</translation>
-<translation id="3002501248619246229">Comprova la sortida de la safata multimèdia</translation>
+<translation id="3002501248619246229">Comprova el contingut multimèdia de la safata d'entrada</translation>
 <translation id="3005723025932146533">Mostra la còpia desada</translation>
 <translation id="3008447029300691911">Introdueix el CVC de la targeta <ph name="CREDIT_CARD" />. Un cop confirmada, els detalls de la targeta es compartiran amb aquest lloc.</translation>
 <translation id="3010559122411665027">Entrada de llista "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -564,10 +564,10 @@
 <translation id="3528485271872257980">Marró fosc</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{Almenys 1 element als dispositius sincronitzats}=1{1 element (i altres elements als dispositius sincronitzats)}other{# elements (i altres elements als dispositius sincronitzats)}}</translation>
 <translation id="3531780078352352885">Fulls de treball</translation>
-<translation id="3533328374079021623">Bústia 5</translation>
+<translation id="3533328374079021623">Bústia de correu 5</translation>
 <translation id="3539171420378717834">Desa una còpia d'aquesta targeta al dispositiu</translation>
 <translation id="3553513561058684206">Per a tu</translation>
-<translation id="3558573058928565255">Hora</translation>
+<translation id="3558573058928565255">Durant el dia</translation>
 <translation id="3566021033012934673">La connexió no és privada</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635">Una pàgina inserida a <ph name="SITE" /> diu</translation>
@@ -622,7 +622,7 @@
 <translation id="3760561303380396507">Vols utilitzar Windows Hello en lloc del CVC?</translation>
 <translation id="3761718714832595332">Amaga l'estat</translation>
 <translation id="3765032636089507299">La pàgina Navegació segura està en construcció.</translation>
-<translation id="3765588406864124894">Bústia 9</translation>
+<translation id="3765588406864124894">Bústia de correu 9</translation>
 <translation id="3778403066972421603">Vols desar aquesta targeta al teu compte de Google i en aquest dispositiu?</translation>
 <translation id="3780694243617746492">Safata de sortida</translation>
 <translation id="3781428340399460090">Rosa fúcsia</translation>
@@ -631,7 +631,7 @@
 <translation id="3789155188480882154">Mida 16</translation>
 <translation id="3797522431967816232">Prc3 (sobre)</translation>
 <translation id="3799805948399000906">Tipus de lletra sol·licitat</translation>
-<translation id="3807366285948165054">Torn de la imatge X</translation>
+<translation id="3807366285948165054">Desplaçament de la imatge X</translation>
 <translation id="3807873520724684969">S'ha bloquejat contingut perjudicial.</translation>
 <translation id="3808375843007691220">Advertiment: s'han detectat funcions experimentals.</translation>
 <translation id="3810973564298564668">Gestiona</translation>
@@ -680,7 +680,7 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">La configuració del servidor intermediari s'ha definit perquè utilitzi un URL d'script .pac, en lloc de servidors intermedis fixos.</translation>
 <translation id="4082393374666368382">Configuració - Gestió</translation>
-<translation id="4088981014127559358">Costat 1 del torn de la imatge Y</translation>
+<translation id="4088981014127559358">Desplaçament del costat 1 de la imatge Y</translation>
 <translation id="4098354747657067197">Aquest lloc web és enganyós</translation>
 <translation id="4101413244023615925">Text i gràfics</translation>
 <translation id="4103249731201008433">El número de sèrie del dispositiu no és vàlid</translation>
@@ -813,7 +813,7 @@
 <translation id="4628948037717959914">Foto</translation>
 <translation id="4635654612248442824">El lloc web <ph name="ORIGIN" /> ha sol·licitat que s'apliqui una política d'origen a totes les seves sol·licituds, però en aquest moment aquesta política no es pot aplicar.</translation>
 <translation id="464342062220857295">Funcions de cerca</translation>
-<translation id="4644670975240021822">Ordre invers cap avall</translation>
+<translation id="4644670975240021822">Ordre invers de cara avall</translation>
 <translation id="4646534391647090355">Porta-m'hi ara</translation>
 <translation id="4658638640878098064">Grapat a la part superior esquerra</translation>
 <translation id="4668929960204016307">,</translation>
@@ -840,7 +840,7 @@
 <translation id="4764776831041365478">És possible que la pàgina web <ph name="URL" /> estigui temporalment fora de servei o s'hagi traslladat permanentment a una adreça web nova.</translation>
 <translation id="4766713847338118463">Grapat doble a la part inferior</translation>
 <translation id="4771973620359291008">S'ha produït un error desconegut.</translation>
-<translation id="4780366598804516005">Bústia 1</translation>
+<translation id="4780366598804516005">Bústia de correu 1</translation>
 <translation id="4780900888022378816">El dispositiu està gestionat per <ph name="ENROLLMENT_DOMAIN" /> i el compte està gestionat per <ph name="ACCOUNT_DOMAIN" />.</translation>
 <translation id="4785689107224900852">Canvia a aquesta pestanya</translation>
 <translation id="4791134497475588553">Aplicacions per a Linux instal·lades i data en què s'han utilitzat per darrera vegada</translation>
@@ -905,7 +905,7 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1 en ús)}other{(# en ús)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />Comproveu l'adreça del servidor intermediari<ph name="END_LINK" /></translation>
-<translation id="507130231501693183">Bústia 4</translation>
+<translation id="507130231501693183">Bústia de correu 4</translation>
 <translation id="5087286274860437796">En aquest moment el certificat del servidor no és vàlid.</translation>
 <translation id="5087580092889165836">Afegeix una targeta</translation>
 <translation id="5088142053160410913">Missatge a l'operador</translation>
@@ -926,7 +926,7 @@
 <translation id="5138227688689900538">Mostra'n menys</translation>
 <translation id="5141240743006678641">Encripta contrasenyes sincronitzades amb les vostres credencials de Google</translation>
 <translation id="5145883236150621069">Hi ha un codi d'error en la resposta a la política</translation>
-<translation id="5148809049217731050">Cap amunt</translation>
+<translation id="5148809049217731050">Cara amunt</translation>
 <translation id="515292512908731282">C4 (sobre)</translation>
 <translation id="5158275234811857234">Portada</translation>
 <translation id="5159010409087891077">Obre la pàgina en una finestra d'incògnit nova (⇧⌘N)</translation>
@@ -995,7 +995,7 @@
 <translation id="5430298929874300616">Suprimeix l'adreça d'interès</translation>
 <translation id="5431657950005405462">No s'ha trobat el fitxer</translation>
 <translation id="5439770059721715174">Error de validació de l'esquema a "<ph name="ERROR_PATH" />": <ph name="ERROR" /></translation>
-<translation id="5443468954631487277">Ordre invers cap amunt</translation>
+<translation id="5443468954631487277">Ordre invers de cara amunt</translation>
 <translation id="5452270690849572955">No s'ha trobat aquesta pàgina de <ph name="HOST_NAME" /></translation>
 <translation id="5455374756549232013">Marca de temps de la política incorrecta</translation>
 <translation id="5457113250005438886">No vàlides</translation>
@@ -1019,7 +1019,7 @@
 <translation id="553484882784876924">Prc6 (sobre)</translation>
 <translation id="5539243836947087108">Raft</translation>
 <translation id="5540224163453853">No s'ha pogut trobar l'article sol·licitat.</translation>
-<translation id="5541086400771735334">Bústia 7</translation>
+<translation id="5541086400771735334">Bústia de correu 7</translation>
 <translation id="5541546772353173584">Afegeix un correu electrònic</translation>
 <translation id="5545756402275714221">Articles que et poden interessar</translation>
 <translation id="5552137475244467770">Chrome contrasta periòdicament les teves contrasenyes amb les d'una sèrie de llistes publicades en línia. Quan ho fa, les teves contrasenyes i els teus noms d'usuari s'encripten i, per tant, ningú no els pot llegir (ni tan sols Google).</translation>
@@ -1044,7 +1044,7 @@
 <translation id="5632627355679805402">Les teves dades s'han encriptat amb la <ph name="BEGIN_LINK" />contrasenya de Google<ph name="END_LINK" /> a partir del dia <ph name="TIME" />. Introdueix-la per començar la sincronització.</translation>
 <translation id="5633066919399395251">És possible que els atacants del lloc web <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> provin d'instal·lar programes perillosos a l'ordinador per robar o suprimir la teva informació (per exemple, les fotos, les contrasenyes, els missatges i les targetes de crèdit). <ph name="BEGIN_LEARN_MORE_LINK" />Més informació<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">S'ha bloquejat el contingut enganyós.</translation>
-<translation id="5644090287519800334">Costat 1 del torn de la imatge X</translation>
+<translation id="5644090287519800334">Desplaçament del costat 1 de la imatge X</translation>
 <translation id="5645854190134202180">Segon torn</translation>
 <translation id="5659593005791499971">Correu electrònic</translation>
 <translation id="5663614846592581799">9x11 (sobre)</translation>
@@ -1102,7 +1102,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (informació sincronitzada)</translation>
 <translation id="59174027418879706">Activat</translation>
 <translation id="5919090499915321845">B10</translation>
-<translation id="5921185718311485855">activada</translation>
+<translation id="5921185718311485855">Activat</translation>
 <translation id="5921639886840618607">Vols desar la targeta al Compte de Google?</translation>
 <translation id="5922853866070715753">Ja queda poc</translation>
 <translation id="5932224571077948991">El lloc web mostra anuncis intrusius o enganyosos</translation>
@@ -1119,7 +1119,7 @@
 <translation id="5990559369517809815">Una extensió ha bloquejat les peticions al servidor.</translation>
 <translation id="5992691462791905444">Plegat en Z per a enginyeria</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultats per a "<ph name="SEARCH_TEXT" />"</translation>
-<translation id="6008122969617370890">Ordre mínim</translation>
+<translation id="6008122969617370890">Ordre de N a 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Comprova les contrasenyes</translation>
 <translation id="6015796118275082299">Any</translation>
@@ -1129,7 +1129,7 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (informació sincronitzada)</translation>
 <translation id="6027201098523975773">Escriu un nom</translation>
 <translation id="603068602130820122">Grapat doble a la dreta</translation>
-<translation id="6032524144326295339">Bústia 2</translation>
+<translation id="6032524144326295339">Bústia de correu 2</translation>
 <translation id="6032955021262906325">Enquadernació a l'esquerra</translation>
 <translation id="6034000775414344507">Gris clar</translation>
 <translation id="6034283069659657473">10x14 (sobre)</translation>
@@ -1355,7 +1355,7 @@
 <translation id="7135130955892390533">Mostra l'estat</translation>
 <translation id="7138472120740807366">Mètode d'entrega</translation>
 <translation id="7139724024395191329">Emirat</translation>
-<translation id="714064300541049402">Costat 2 del torn de la imatge X</translation>
+<translation id="714064300541049402">Desplaçament del costat 2 de la imatge X</translation>
 <translation id="7152423860607593928">Number-14 (sobre)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> i <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> més}other{<ph name="PAYMENT_METHOD_PREVIEW" /> i <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> més}}</translation>
 <translation id="7153618581592392745">Lavanda</translation>
@@ -1462,7 +1462,7 @@
 <translation id="7569983096843329377">Negre</translation>
 <translation id="7575207903026901870">Botó Suprimeix el suggeriment, prem Retorn per suprimir aquest suggeriment</translation>
 <translation id="7578104083680115302">Agilitzeu els pagaments en llocs i en aplicacions des de qualsevol dispositiu mitjançant les targetes que hàgiu desat a Google.</translation>
-<translation id="7581199239021537589">Costat 2 del torn de la imatge Y</translation>
+<translation id="7581199239021537589">Desplaçament del costat 2 de la imatge Y</translation>
 <translation id="7592362899630581445">El certificat del servidor incompleix les restriccions de nom.</translation>
 <translation id="7598391785903975535">Menys de: <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> no pot gestionar la sol·licitud en aquest moment.</translation>
@@ -1485,7 +1485,7 @@
 <translation id="7667346355482952095">El testimoni de la política que s'ha retornat és buit o no coincideix amb el testimoni actual</translation>
 <translation id="7668654391829183341">Dispositiu desconegut</translation>
 <translation id="7669271284792375604">És possible que els atacants d'aquest lloc intentin enganyar-te perquè instal·lis programes que perjudiquen la teva navegació (per exemple, et poden canviar la pàgina d'inici o mostrar anuncis addicionals als llocs que visites).</translation>
-<translation id="7673278391011283842">Bústia 6</translation>
+<translation id="7673278391011283842">Bústia de correu 6</translation>
 <translation id="7676643023259824263">Cerca el text (<ph name="TEXT" />) del porta-retalls</translation>
 <translation id="7681101578153515023">Canvia el motor de cerca</translation>
 <translation id="7682287625158474539">Enviament</translation>
@@ -1512,7 +1512,7 @@
 <translation id="7764225426217299476">Afegeix una adreça</translation>
 <translation id="7766518757692125295">Skirt</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
-<translation id="7773005668374414287">Ordre idèntic cap amunt</translation>
+<translation id="7773005668374414287">Ordre idèntic de cara amunt</translation>
 <translation id="777702478322588152">Prefectura</translation>
 <translation id="7791196057686275387">Embalat</translation>
 <translation id="7791543448312431591">Afegeix</translation>
@@ -1657,7 +1657,7 @@
 <translation id="8428213095426709021">Configuració</translation>
 <translation id="8433057134996913067">Amb aquesta acció es tancarà la sessió a la majoria de llocs web.</translation>
 <translation id="8437238597147034694">&amp;Desfés el moviment</translation>
-<translation id="8457125768502047971">indefinida</translation>
+<translation id="8457125768502047971">Indefinit</translation>
 <translation id="8461694314515752532">Encripta les dades sincronitzades amb la teva frase de contrasenya de sincronització</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 targeta de crèdit}other{# targetes de crèdit}}</translation>
 <translation id="8473863474539038330">Adreces i més</translation>
@@ -1726,7 +1726,7 @@
 <translation id="8866928039507595380">Plegat</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">Tancades recentment</translation>
-<translation id="8870494189203302833">Ordre idèntic cap avall</translation>
+<translation id="8870494189203302833">Ordre idèntic de cara avall</translation>
 <translation id="8874824191258364635">Introdueix un número de targeta vàlid</translation>
 <translation id="8891727572606052622">El mode de servidor intermediari no és vàlid.</translation>
 <translation id="8894794286471754040">La vora llarga primer</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 78df973..93fc5ac7 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -4,7 +4,7 @@
 <translation id="1008557486741366299">Teď ne</translation>
 <translation id="1010200102790553230">Načíst stránku později</translation>
 <translation id="1015730422737071372">Zadejte další podrobnosti</translation>
-<translation id="1019413721762100891">Vyp</translation>
+<translation id="1019413721762100891">Vypnuto</translation>
 <translation id="1021110881106174305">Přijímané karty</translation>
 <translation id="1021753677514347426">K tomuto problému dochází kvůli certifikátu, který jste vy nebo někdo jiný nainstalovali do zařízení. O certifikátu je známo, že se používá ke sledování a zachytávání provozu v sítích, a Chromium mu nedůvěřuje. Ačkoliv sledování v některých případech (například ve školní nebo firemní síti) může být legitimní a nemůžete mu zabránit, Chromium se chce ujistit, že o něm víte. Ke sledování může docházet v kterémkoliv prohlížeči nebo aplikaci, které přistupují k webu.</translation>
 <translation id="1032854598605920125">Otočit ve směru hodinových ručiček</translation>
@@ -498,7 +498,7 @@
 <translation id="3209034400446768650">Stránka může účtovat poplatky</translation>
 <translation id="3212581601480735796">Vaše aktivita na webu <ph name="HOSTNAME" /> je sledována</translation>
 <translation id="3215092763954878852">Ověření WebAuthn nebylo možné použít</translation>
-<translation id="3218181027817787318">Reltivní</translation>
+<translation id="3218181027817787318">Relativní</translation>
 <translation id="3225919329040284222">Server se prokázal certifikátem, který neodpovídá integrovaným očekáváním. Tato očekávaní jsou zahrnuta u určitých webových stránek s vysokou úrovní zabezpečení kvůli vaší ochraně.</translation>
 <translation id="3226128629678568754">Klikněte na tlačítko Načíst znovu. Tím znovu odešlete údaje potřebné k načtení stránky.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
@@ -678,7 +678,7 @@
 <translation id="4082393374666368382">Nastavení – správa</translation>
 <translation id="4088981014127559358">Posun obrázku strany 1 na ose Y</translation>
 <translation id="4098354747657067197">Chystáte se navštívit podvodné webové stránky</translation>
-<translation id="4101413244023615925">Text a grafika</translation>
+<translation id="4101413244023615925">Text a obrázek</translation>
 <translation id="4103249731201008433">Sériové číslo zařízení je neplatné</translation>
 <translation id="4103763322291513355">Na stránce &lt;strong&gt;chrome://policy&lt;/strong&gt; naleznete seznam zakázaných adres URL a další zásady vynucené vaším správcem systému.</translation>
 <translation id="4108231218301530806">Příště tuto kartu ověřit otiskem prstu.</translation>
@@ -1098,7 +1098,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (synchronizováno)</translation>
 <translation id="59174027418879706">Povoleno</translation>
 <translation id="5919090499915321845">B10</translation>
-<translation id="5921185718311485855">Zap</translation>
+<translation id="5921185718311485855">Zapnuto</translation>
 <translation id="5921639886840618607">Uložit kartu do účtu Google?</translation>
 <translation id="5922853866070715753">Téměř dokončeno</translation>
 <translation id="5932224571077948991">Web zobrazuje rušivé nebo zavádějící reklamy</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index b9242e21..b5e0a7e 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -244,7 +244,7 @@
 <translation id="2003775180883135320">Fire huller øverst</translation>
 <translation id="2025186561304664664">Proxyen konfigureres automatisk.</translation>
 <translation id="2030481566774242610">Mente du <ph name="LINK" />?</translation>
-<translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kontrollere din proxy og din firewall<ph name="END_LINK" /></translation>
+<translation id="2032962459168915086"><ph name="BEGIN_LINK" />Tjekke din proxy og din firewall<ph name="END_LINK" /></translation>
 <translation id="2042213636306070719">Bakke 7</translation>
 <translation id="2053111141626950936">Sider på <ph name="LANGUAGE" /> oversættes ikke.</translation>
 <translation id="2053553514270667976">Postnummer</translation>
@@ -708,7 +708,7 @@
 <translation id="4117700440116928470">Politikkens omfang understøttes ikke.</translation>
 <translation id="4123572138124678573">Tre huller nederst</translation>
 <translation id="4129401438321186435">{COUNT,plural, =1{1 anden/andet}one{# anden/andet}other{# andre}}</translation>
-<translation id="4130226655945681476">Kontrollere netværkskabler, modem og router</translation>
+<translation id="4130226655945681476">Tjekke netværkskabler, modem og router</translation>
 <translation id="413544239732274901">Få flere oplysninger</translation>
 <translation id="4142935452406587478">Bakke 10</translation>
 <translation id="4148925816941278100">American Express</translation>
@@ -722,7 +722,7 @@
 <translation id="4179515394835346607"><ph name="ROW_NAME" /> <ph name="ROW_CONTENT" /></translation>
 <translation id="4194250254487269611">Dit kort kan ikke gemmes lige nu</translation>
 <translation id="4196861286325780578">&amp;Annuller fortryd flytning</translation>
-<translation id="4203896806696719780"><ph name="BEGIN_LINK" />Kontrollere firewall- og antiviruskonfigurationer<ph name="END_LINK" /></translation>
+<translation id="4203896806696719780"><ph name="BEGIN_LINK" />Tjekke firewall- og antiviruskonfigurationer<ph name="END_LINK" /></translation>
 <translation id="4214357935346142455">profil på loginskærm</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Nedbrud</translation>
@@ -1052,7 +1052,7 @@
 <translation id="5605670050355397069">Ledger</translation>
 <translation id="5607240918979444548">Architecture-C</translation>
 <translation id="5608165884683734521">Dette website er muligvis falsk eller ondsindet. Chrome anbefaler, at du forlader websitet med det samme.</translation>
-<translation id="5610142619324316209">Kontrollere forbindelsen</translation>
+<translation id="5610142619324316209">Tjekke din forbindelse</translation>
 <translation id="5610807607761827392">Du kan administrere kort og adresser i <ph name="BEGIN_LINK" />Indstillinger<ph name="END_LINK" />.</translation>
 <translation id="5617949217645503996"><ph name="HOST_NAME" /> omdirigerede dig for mange gange.</translation>
 <translation id="5629630648637658800">Der kunne ikke indlæses indstillinger for politik</translation>
@@ -1486,7 +1486,7 @@
 <translation id="7610193165460212391">Værdien er uden for intervallet <ph name="VALUE" />.</translation>
 <translation id="7613889955535752492">Udløbsdato: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">Du har allerede data, der er krypteret med en anden version af adgangskoden til din Google-konto. Angiv adgangskoden i feltet nedenfor.</translation>
-<translation id="7619838219691048931">Forsatspapir</translation>
+<translation id="7619838219691048931">Sidste ark</translation>
 <translation id="762844065391966283">Ét ad gangen</translation>
 <translation id="7633909222644580952">Effektivitetsdata og nedbrudsrapporter</translation>
 <translation id="7637571805876720304">Vil du fjerne kreditkortet fra Chromium?</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index f1d886c3..dcccdaba 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -1176,7 +1176,7 @@
 <translation id="6234122620015464377">Nach jedem Dokument zuschneiden</translation>
 <translation id="6240447795304464094">Google Pay-Logo</translation>
 <translation id="6241121617266208201">Vorschläge ausblenden</translation>
-<translation id="624499991300733384">Druck-Kompositionsdienst</translation>
+<translation id="624499991300733384">Druck-Satzdienst</translation>
 <translation id="6251924700383757765">Datenschutzerklärung</translation>
 <translation id="6254436959401408446">Nicht genügend Speicher, um diese Seite zu öffnen</translation>
 <translation id="625755898061068298">Sie haben die Sicherheitswarnmeldungen für diese Website deaktiviert.</translation>
@@ -1280,7 +1280,7 @@
 <translation id="6671697161687535275">Vorschlag für das Formular aus Chromium entfernen?</translation>
 <translation id="6685834062052613830">Abmelden und Einrichtung abschließen</translation>
 <translation id="6687335167692595844">Schriftgröße angefordert</translation>
-<translation id="6689249931105087298">Relativ mit Schwarzpunktkompression</translation>
+<translation id="6689249931105087298">Relativ mit Schwarzpunktkompensation</translation>
 <translation id="6689271823431384964">Chrome bietet Ihnen die Möglichkeit, die Karten in Ihrem Google-Konto zu speichern, weil Sie angemeldet sind. Sie können dies in den Einstellungen ändern. Der Name des Karteninhabers stammt aus Ihrem Konto.</translation>
 <translation id="6704582573942289642">Ist das die richtige Website?</translation>
 <translation id="6710213216561001401">Zurück</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index d80ae4a..98cd735 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -206,7 +206,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">Nombre del titular de la tarjeta</translation>
-<translation id="1807528111851433570">Hoja inicial</translation>
+<translation id="1807528111851433570">Hoja de inicio</translation>
 <translation id="1821930232296380041">Solicitud o parámetros de solicitud no válidos</translation>
 <translation id="1822540298136254167">Los sitios web que visitas y el tiempo que pasas en ellos</translation>
 <translation id="1826516787628120939">Comprobando</translation>
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">Elegir método de entrega</translation>
 <translation id="2465688316154986572">Grapa</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />Ejecución del Diagnóstico de red<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">Orden 1 a N</translation>
+<translation id="2469153820345007638">Orden de 1 a N</translation>
 <translation id="2473195200299095979">Traducir esta página</translation>
 <translation id="2479410451996844060">URL de búsqueda no válida</translation>
 <translation id="2482878487686419369">Notificaciones</translation>
@@ -923,7 +923,7 @@
 <translation id="507130231501693183">Buzón 4</translation>
 <translation id="5087286274860437796">El certificado del servidor no es válido en este momento.</translation>
 <translation id="5087580092889165836">Agregar tarjeta</translation>
-<translation id="5088142053160410913">Mensaje al operador</translation>
+<translation id="5088142053160410913">Mensaje para el operador</translation>
 <translation id="5089810972385038852">Estado</translation>
 <translation id="5093232627742069661">Plegado en Z</translation>
 <translation id="5094747076828555589">Este servidor no pudo probar que su dominio es <ph name="DOMAIN" />; Chromium no confía en el certificado de seguridad. Es posible que esto se deba a una configuración incorrecta o a que un atacante interceptó la conexión.</translation>
@@ -1134,7 +1134,7 @@
 <translation id="5990559369517809815">Una extensión bloqueó las solicitudes al servidor.</translation>
 <translation id="5992691462791905444">Plegado en Z para ingeniería</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultados para "<ph name="SEARCH_TEXT" />"</translation>
-<translation id="6008122969617370890">Orden N a 1</translation>
+<translation id="6008122969617370890">Orden de N a 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Revisa tus contraseñas</translation>
 <translation id="6015796118275082299">Año</translation>
@@ -1549,7 +1549,7 @@
 <translation id="7878562273885520351">Es posible que tu contraseña esté en peligro</translation>
 <translation id="7882421473871500483">Marrón</translation>
 <translation id="7887683347370398519">Verifica tu CVC y vuelve a intentarlo.</translation>
-<translation id="7888575728750733395">Intent para renderizar la impresión</translation>
+<translation id="7888575728750733395">Propósito de conversión para impresión</translation>
 <translation id="7904208859782148177">C3 (Envelope)</translation>
 <translation id="7932579305932748336">Recubrimiento</translation>
 <translation id="79338296614623784">Ingresa un número de teléfono válido</translation>
@@ -1635,7 +1635,7 @@
 <translation id="8261506727792406068">Borrar</translation>
 <translation id="8262952874573525464">Costura del borde inferior</translation>
 <translation id="8267698848189296333">Acceder como <ph name="USERNAME" /></translation>
-<translation id="8269242089528251720">Documentos separados/copias relacionadas</translation>
+<translation id="8269242089528251720">Documentos separados/copias intercaladas</translation>
 <translation id="8269981117540303696">Ahora puedes navegar de forma privada. Si otras personas usan este dispositivo, no verán tu actividad. Sin embargo, se guardarán las descargas y los favoritos.</translation>
 <translation id="8277900682056760511">La hoja del controlador de pagos está abierta</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1690,7 +1690,7 @@
 <translation id="8553075262323480129">Falló la traducción debido a que no se pudo determinar el idioma de la página.</translation>
 <translation id="8557066899867184262">El CVC se encuentra al dorso de tu tarjeta.</translation>
 <translation id="8559762987265718583">No se puede establecer una conexión privada a <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> porque la fecha y la hora del dispositivo (<ph name="DATE_AND_TIME" />) son incorrectas.</translation>
-<translation id="8564182942834072828">Documentos separados/copias diferentes</translation>
+<translation id="8564182942834072828">Documentos separados/copias sin intercalar</translation>
 <translation id="8564985650692024650">Chromium te recomienda que restablezcas la contraseña de <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> si la volviste a usar en otros sitios.</translation>
 <translation id="8571890674111243710">Traduciendo página a <ph name="LANGUAGE" />...</translation>
 <translation id="8574899947864779331">Usa Touch ID para confirmar las tarjetas más rápido</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 6a0e4ff5..85624093d 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -589,7 +589,7 @@
 <translation id="3587738293690942763">Medio</translation>
 <translation id="3592413004129370115">Italian (sobre)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
-<translation id="3608932978122581043">Proporcionar orientación</translation>
+<translation id="3608932978122581043">Orientación de entrada</translation>
 <translation id="3614103345592970299">Tamaño 2</translation>
 <translation id="361438452008624280">Entrada de lista "<ph name="LANGUAGE_ID" />": idioma no disponible o desconocido.</translation>
 <translation id="3615877443314183785">Introduce una fecha de vencimiento válida</translation>
@@ -1710,7 +1710,7 @@
 <translation id="8681531050781943054">No ha sido posible cargar la página web <ph name="PAGE" /> porque:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">Disponible</translation>
-<translation id="868922510921656628">Páginas por set</translation>
+<translation id="868922510921656628">Páginas por conjunto</translation>
 <translation id="869891660844655955">Fecha de caducidad</translation>
 <translation id="8703575177326907206">Tu conexión a <ph name="DOMAIN" /> no está cifrada.</translation>
 <translation id="8718314106902482036">El pago no se ha completado</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb
index c1badadd..d75fcb0d 100644
--- a/components/strings/components_strings_eu.xtb
+++ b/components/strings/components_strings_eu.xtb
@@ -258,7 +258,7 @@
 <translation id="2096368010154057602">Departamentua</translation>
 <translation id="2099652385553570808">Hiru grapa ezkerrean</translation>
 <translation id="2102134110707549001">Iradoki pasahitz seguru bat…</translation>
-<translation id="2107021941795971877">Inprimaketa-euskarriak</translation>
+<translation id="2107021941795971877">Inprimatze-euskarriak</translation>
 <translation id="2108755909498034140">Berrabiarazi ordenagailua</translation>
 <translation id="2111256659903765347">Super-A</translation>
 <translation id="2113977810652731515">Txartela</translation>
@@ -301,7 +301,7 @@
 <translation id="2263079731045660823">Eguneratu kreditu-txartelaren betetze automatikoaren datuak Chrome-ren ezarpenetan</translation>
 <translation id="2267047181501709434">Zure nortasuna egiaztatzen…</translation>
 <translation id="2270484714375784793">Telefono-zenbakia</translation>
-<translation id="2276057643614339130">Inprimatu oinarria</translation>
+<translation id="2276057643614339130">Inprimatze-oinarria</translation>
 <translation id="2277103315734023688">Aurreratu</translation>
 <translation id="2283340219607151381">Gorde eta bete helbideak</translation>
 <translation id="2288422996159078444">Zer idazten duzun, zer orri ikusten dituzun edo, orokorrean, sarean egiten duzun edozer ari dira gainbegiratzen. Baliteke webguneetako edukia aldatzea zuk jakin gabe.</translation>
@@ -569,7 +569,7 @@
 <translation id="3533328374079021623">5. postontzia</translation>
 <translation id="3539171420378717834">Gorde gailu honetan txartelaren kopia bat</translation>
 <translation id="3553513561058684206">Zuretzat</translation>
-<translation id="3558573058928565255">Goiza</translation>
+<translation id="3558573058928565255">Eguna</translation>
 <translation id="3566021033012934673">Konexioa ez da pribatua</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" />, <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635"><ph name="SITE" /> webguneko orri kapsulatu batek hau dio:</translation>
@@ -850,7 +850,7 @@
 <translation id="4780900888022378816"><ph name="ENROLLMENT_DOMAIN" /> domeinuak kudeatzen du gailua; <ph name="ACCOUNT_DOMAIN" /> domeinuak, berriz, kontua.</translation>
 <translation id="4785689107224900852">Aldatu fitxa honetara</translation>
 <translation id="4791134497475588553">Instalatutako Linux-erako aplikazioak eta azken erabiltze-data</translation>
-<translation id="4796594887379589189">Lanaren kontuaren IDa</translation>
+<translation id="4796594887379589189">Laneko kontuaren IDa</translation>
 <translation id="4798078619018708837"><ph name="CREDIT_CARD" /> txartelaren xehetasunak eguneratzeko, idatzi iraungitze-data eta CVC kodea. Datuok berresten dituzunean, webgune honekin partekatuko dira Google-ko kontuarekin lotutako txartelaren xehetasunak.</translation>
 <translation id="4800132727771399293">Egiaztatu CVC kodea eta saiatu berriro</translation>
 <translation id="480334179571489655">Jatorrizko gidalerroaren errorea</translation>
@@ -1176,7 +1176,7 @@
 <translation id="6234122620015464377">Moztu dokumentu bakoitzaren ondoren</translation>
 <translation id="6240447795304464094">Google Pay-ren logotipoa</translation>
 <translation id="6241121617266208201">Ezkutatu iradokizunak</translation>
-<translation id="624499991300733384">Inprimaketa-konposizioaren zerbitzua</translation>
+<translation id="624499991300733384">Inprimatze-konposizioaren zerbitzua</translation>
 <translation id="6251924700383757765">Pribatutasun-gidalerroak</translation>
 <translation id="6254436959401408446">Ez dago fitxategia irekitzeko behar adina memoria</translation>
 <translation id="625755898061068298">Webgune honetako segurtasun-abisuak desgaitzea aukeratu duzu.</translation>
@@ -1280,7 +1280,7 @@
 <translation id="6671697161687535275">Inprimaki-iradokizuna Chromium-etik kendu nahi duzu?</translation>
 <translation id="6685834062052613830">Amaitu saioa eta osatu konfigurazioa</translation>
 <translation id="6687335167692595844">Eskatutako letra-tamaina</translation>
-<translation id="6689249931105087298">Erlatiboa, puntu beltzaren konprimaketarekin</translation>
+<translation id="6689249931105087298">Erlatiboa, puntu beltzen konprimaketarekin</translation>
 <translation id="6689271823431384964">Saioa hasita duzunez, txartelak Google-ko kontuan gordetzeko aukera ematen dizu Chrome-k. Aukera hori aldatzeko, joan Ezarpenak atalera. Txartelaren titularraren izena kontutik hartu da.</translation>
 <translation id="6704582573942289642">Hau al da webgunea?</translation>
 <translation id="6710213216561001401">Aurrekoa</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index 53fd16f..596cad6 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">Choisir un mode de livraison</translation>
 <translation id="2465688316154986572">Agrafe</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />d'exécuter Network Diagnostics<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">Ordre 1 sur N</translation>
+<translation id="2469153820345007638">Ordre 1 sur N</translation>
 <translation id="2473195200299095979">Traduire cette page</translation>
 <translation id="2479410451996844060">URL de recherche non valide</translation>
 <translation id="2482878487686419369">Notifications</translation>
@@ -415,7 +415,7 @@
 <translation id="2799020568854403057">Ce site contient des applications malveillantes</translation>
 <translation id="2799223571221894425">Redémarrer</translation>
 <translation id="2803306138276472711">La fonctionnalité de navigation sécurisée Google a récemment permis de <ph name="BEGIN_LINK" />détecter des logiciels malveillants<ph name="END_LINK" /> sur le site <ph name="SITE" />. Un site Web qui est normalement inoffensif peut parfois être infecté par des logiciels malveillants.</translation>
-<translation id="2807052079800581569">Position de l'image Y</translation>
+<translation id="2807052079800581569">Position Y de l'image</translation>
 <translation id="2809804249696361569">Les deux feuilles</translation>
 <translation id="2824775600643448204">Barre d'adresse et de recherche</translation>
 <translation id="2826760142808435982">La connexion est chiffrée et authentifiée avec la clé <ph name="CIPHER" />. La méthode d'échange de clés utilisée est <ph name="KX" />.</translation>
@@ -469,7 +469,7 @@
 <translation id="3060227939791841287">Enveloppe C9</translation>
 <translation id="3061707000357573562">Service de correctif</translation>
 <translation id="3064966200440839136">Vous devez quitter le mode de navigation privée pour effectuer un paiement par l'intermédiaire d'une application externe. Continuer?</translation>
-<translation id="3080254622891793721">Graphique</translation>
+<translation id="3080254622891793721">Images</translation>
 <translation id="3086579638707268289">Votre activité sur le Web est actuellement surveillée</translation>
 <translation id="3087734570205094154">Bas</translation>
 <translation id="3095940652251934233">Relevé</translation>
@@ -501,7 +501,7 @@
 <translation id="3209034400446768650">Cette page peut exiger des frais</translation>
 <translation id="3212581601480735796">Votre activité sur <ph name="HOSTNAME" /> est surveillée</translation>
 <translation id="3215092763954878852">Impossible d'utiliser WebAuthn</translation>
-<translation id="3218181027817787318">Relative</translation>
+<translation id="3218181027817787318">Relatif</translation>
 <translation id="3225919329040284222">Le serveur dispose d'un certificat qui ne répond pas aux exigences intégrées. Celles-ci sont incluses dans certains sites Web très sécurisés afin de vous protéger.</translation>
 <translation id="3226128629678568754">Appuyez sur le bouton d'actualisation pour soumettre de nouveau les données nécessaires pour charger la page.</translation>
 <translation id="3227137524299004712">Microphone</translation>
@@ -567,7 +567,7 @@
 <translation id="3533328374079021623">Boîte aux lettres 5</translation>
 <translation id="3539171420378717834">Conserver une copie de cette carte sur cet appareil</translation>
 <translation id="3553513561058684206">Pour vous</translation>
-<translation id="3558573058928565255">Heure du jour</translation>
+<translation id="3558573058928565255">Pendant la journée</translation>
 <translation id="3566021033012934673">Votre connexion n'est pas privée</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635">Une page intégrée à <ph name="SITE" /> indique</translation>
@@ -1050,7 +1050,7 @@
 <translation id="5663614846592581799">Enveloppe 9 po x 11 po</translation>
 <translation id="5663955426505430495">L'administrateur de cet appareil a installé des extensions offrant des fonctions supplémentaires. Les extensions ont accès à certaines de vos données.</translation>
 <translation id="5675650730144413517">Cette page ne fonctionne pas</translation>
-<translation id="568292603005599551">Position de l'image X</translation>
+<translation id="568292603005599551">Position X de l'image</translation>
 <translation id="5684874026226664614">Oups… Impossible de traduire cette page.</translation>
 <translation id="5685654322157854305">Ajouter une adresse d'expédition</translation>
 <translation id="5689199277474810259">Exporter au format JSON</translation>
@@ -1119,7 +1119,7 @@
 <translation id="5990559369517809815">Les requêtes vers le serveur ont été bloquées par une extension.</translation>
 <translation id="5992691462791905444">Technique de pli en Z</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> résultats trouvés pour « <ph name="SEARCH_TEXT" /> »</translation>
-<translation id="6008122969617370890">Ordre N sur 1</translation>
+<translation id="6008122969617370890">Ordre N sur 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Vérifier vos mots de passe</translation>
 <translation id="6015796118275082299">Année</translation>
@@ -1162,7 +1162,7 @@
 <translation id="6157877588268064908">Pour voir les exigences et les modes de livraison, sélectionnez une adresse</translation>
 <translation id="6165508094623778733">En savoir plus</translation>
 <translation id="6177128806592000436">Votre connexion à ce site n'est pas sécurisée</translation>
-<translation id="6180316780098470077">Intervalle de nouvel essai</translation>
+<translation id="6180316780098470077">Intervalle entre les nouveaux essais</translation>
 <translation id="6196640612572343990">Bloquer les témoins de tiers</translation>
 <translation id="6203231073485539293">Vérifiez votre connexion Internet</translation>
 <translation id="6218753634732582820">Supprimer l'adresse de Chromium?</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index 7c1bd600..4c0132e7 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">Sélectionner un mode d'expédition</translation>
 <translation id="2465688316154986572">Agrafer</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />Exécuter les diagnostics du réseau<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">Ordre 1 sur N</translation>
+<translation id="2469153820345007638">Ordre 1 à N</translation>
 <translation id="2473195200299095979">Traduire cette page</translation>
 <translation id="2479410451996844060">URL de recherche incorrecte</translation>
 <translation id="2482878487686419369">Notifications</translation>
@@ -469,7 +469,7 @@
 <translation id="3060227939791841287">C9 (enveloppe)</translation>
 <translation id="3061707000357573562">Service d'application de correctifs</translation>
 <translation id="3064966200440839136">En payant via une application externe, vous allez quitter le mode navigation privée. Voulez-vous continuer ?</translation>
-<translation id="3080254622891793721">Éléments graphiques</translation>
+<translation id="3080254622891793721">Image</translation>
 <translation id="3086579638707268289">Votre activité sur le Web est surveillée</translation>
 <translation id="3087734570205094154">En bas</translation>
 <translation id="3095940652251934233">Statement</translation>
@@ -536,7 +536,7 @@
 <translation id="3399952811970034796">Adresse de livraison</translation>
 <translation id="3422248202833853650">Essayez de fermer les autres programmes pour libérer de la mémoire.</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> est actuellement inaccessible.</translation>
-<translation id="3423742043356668186">Système spécifié</translation>
+<translation id="3423742043356668186">Spécifiée par le système</translation>
 <translation id="3427092606871434483">Autoriser (par défaut)</translation>
 <translation id="3427342743765426898">&amp;Rétablir la modification</translation>
 <translation id="342781501876943858">L'équipe Chromium vous recommande de réinitialiser votre mot de passe si vous l'avez réutilisé sur d'autres sites.</translation>
@@ -682,7 +682,7 @@
 <translation id="4082393374666368382">Paramètres - Gestion</translation>
 <translation id="4088981014127559358">Décalage Y de l'image côté 1</translation>
 <translation id="4098354747657067197">Le site Web que vous allez ouvrir est trompeur</translation>
-<translation id="4101413244023615925">Texte et graphismes</translation>
+<translation id="4101413244023615925">Texte et image</translation>
 <translation id="4103249731201008433">Le numéro de série de l'appareil n'est pas valide.</translation>
 <translation id="4103763322291513355">Accédez à &lt;strong&gt;chrome://policy&lt;/strong&gt; pour consulter une liste des URL ajoutées à la liste noire et des autres règles définies par votre administrateur système.</translation>
 <translation id="4108231218301530806">Utiliser votre empreinte digitale pour valider cette carte la prochaine fois.</translation>
@@ -1119,7 +1119,7 @@
 <translation id="5990559369517809815">Les requêtes vers le serveur ont été bloquées par une extension.</translation>
 <translation id="5992691462791905444">Technique de pli en Z</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> résultats pour "<ph name="SEARCH_TEXT" />"</translation>
-<translation id="6008122969617370890">Ordre N sur 1</translation>
+<translation id="6008122969617370890">Ordre N à 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Vérifier vos mots de passe</translation>
 <translation id="6015796118275082299">Année</translation>
@@ -1550,7 +1550,7 @@
 <translation id="7956713633345437162">Favoris sur mobile</translation>
 <translation id="7961015016161918242">Jamais</translation>
 <translation id="7966803981046576691">Type de compte de travail</translation>
-<translation id="7977538094055660992">Module de sortie</translation>
+<translation id="7977538094055660992">Périphérique de sortie</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">Reliure</translation>
 <translation id="7995512525968007366">Non spécifié</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index f1e7a8ac..825a251 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">હમણાં નહીં</translation>
 <translation id="1010200102790553230">પેજ પછીથી લોડ કરો</translation>
 <translation id="1015730422737071372">અતિરિક્ત વિગતો પ્રદાન કરો</translation>
+<translation id="1019413721762100891">બંધ</translation>
 <translation id="1021110881106174305">સ્વીકારેલ કાર્ડ</translation>
 <translation id="1021753677514347426">તમારા ડિવાઇસ પર તમે અથવા અન્ય કોઈ વ્યક્તિએ ઇન્સ્ટૉલ કરેલા પ્રમાણપત્રને કારણે આ સમસ્યા થાય છે. આ પ્રમાણપત્ર નેટવર્કને મોનિટર અને બંધ કરવા માટે ઉપયોગમાં લેવા માટે જાણીતું છે અને Chromium તેના પર વિશ્વાસ કરતું નથી. જો કે કેટલાક નિયમસર કિસ્સાઓમાં મોનિટર કરવાનું કાર્ય થતું હોય છે, જેમકે શાળા અથવા કંપનીના નેટવર્કમાં, પણ Chromium ખાતરી કરવા માગે છે કે તમે ભલે એ રોકી ન શકતા હો, પણ એ થવા વિશે તમને જાણકારી છે. વેબને ઍક્સેસ કરતા કોઈપણ બ્રાઉઝર અથવા ઍપ્લિકેશનમાં મોનિટર કરવાનું કાર્ય થઈ શકે છે.</translation>
 <translation id="1032854598605920125">ઘડિયાળની દિશામાં ફેરવો</translation>
 <translation id="1036348656032585052">બંધ કરો</translation>
 <translation id="1038842779957582377">અજ્ઞાત નામ</translation>
+<translation id="1041998700806130099">જોબ શીટ સંદેશ</translation>
 <translation id="1050038467049342496">અન્ય ઍપ્લિકેશનો બંધ કરો</translation>
 <translation id="1055184225775184556">&amp;ઉમેરવું પૂર્વવત્ કરો</translation>
 <translation id="1056898198331236512">ચેતવણી</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">ક્યારેય ન સચવાયેલું</translation>
 <translation id="1062160989074299343">Prc10 (એન્વલપ)</translation>
 <translation id="106701514854093668">ડેસ્કટૉપ બુકમાર્ક્સ</translation>
+<translation id="1070901266639972381">રાત</translation>
 <translation id="1074497978438210769">સુરક્ષિત નથી</translation>
 <translation id="1080116354587839789">પહોળાઈ પ્રમાણે ફિટ કરો</translation>
 <translation id="1086953900555227778">અનુક્રમણિકા-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">પાસવર્ડ બદલો</translation>
 <translation id="1096545575934602868">આ ફીલ્ડમાં <ph name="MAX_ITEMS_LIMIT" /> કરતાં વધારે એન્ટ્રી હોવી જોઈએ નહી. વધારાની બધી એન્ટ્રીને કાઢી નાખવામાં આવશે.</translation>
 <translation id="109743633954054152">Chrome સેટિંગમાં પાસવર્ડ મેનેજ કરો</translation>
+<translation id="1101672080107056897">ક્રિયામાં ભૂલ</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> નો હંમેશાં અનુવાદ કરો</translation>
 <translation id="1107591249535594099">જો ચેક કરેલું હોય, તો ઝડપથી ફોર્મ ભરવા માટે Chrome આ ઉપકરણ પર તમારા કાર્ડની એક કૉપિ સંગ્રહશે.</translation>
 <translation id="1110994991967754504"><ph name="PERMISSION_NAME" /> માટે પરવાનગી પસંદ કરો</translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">વાચન સૂચિ</translation>
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> એ ક્રૅશ રિપોર્ટ કૅપ્ચર કરવામાં આવી (હજી સુધી અપલોડ કરવામાં કે અવગણવામાં આવેલું નથી)</translation>
 <translation id="1270502636509132238">પિકઅપ પદ્ધતિ</translation>
+<translation id="1281476433249504884">સ્ટૅકર 1</translation>
 <translation id="1285320974508926690">આ સાઇટનું ક્યારેય ભાષાંતર કરશો નહીં</translation>
 <translation id="1285400217480592994">તમે Chromeમાં ડાઉનલોડ અથવા અપલોડ કરેલી ફાઇલોના કન્ટેન્ટ તપાસો.</translation>
 <translation id="1292701964462482250">"તમારા કમ્પ્યુટરમાંનું સૉફ્ટવેર Chromeને સુરક્ષિત રીતે વેબ સાથે કનેક્ટ થવાથી અટકાવે છે" (માત્ર Windows કમ્પ્યુટર)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">ઉપરની બાજુએ ત્રણ સ્ટેપલ લગાવો</translation>
 <translation id="1413809658975081374">ગોપનીયતા ભૂલ</translation>
 <translation id="1426410128494586442">હા</translation>
+<translation id="1428146450423315676">સ્ટૅકર 7</translation>
 <translation id="1430915738399379752">પ્રિન્ટ</translation>
 <translation id="1442386063175183758">જમણો ગેટ ફોલ્ડ</translation>
 <translation id="1442987760062738829">કાણું પાડો</translation>
@@ -130,6 +136,7 @@
 <translation id="1521655867290435174">Google શીટ</translation>
 <translation id="1527263332363067270">કનેક્શનની રાહ જોઈ રહ્યાં છીએ...</translation>
 <translation id="1529521330346880926">10x15 (એન્વલપ)</translation>
+<translation id="1529789484829130889">ટ્રે 8</translation>
 <translation id="1530707389502320859">તમે હમણાં જે સાઇટની મુલાકાત લેવાનો પ્રયાસ કર્યો તે બનાવટી હોય એવું લાગે છે. હુમલાખોરો URLમાં સરળતાથી ન જોઈ શકાય એવા મામૂલી ફેરફારો કરીને કેટલીક વખત સાઇટની નકલ કરે છે.</translation>
 <translation id="1531205177818805254">એક્સેક</translation>
 <translation id="1532118530259321453">આ પેજ કહે છે કે</translation>
@@ -156,6 +163,7 @@
 <translation id="1639239467298939599">લોડ કરી રહ્યું છે</translation>
 <translation id="1640180200866533862">વપરાશકર્તા નીતિઓ</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />સાઇટના હોમપેજની મુલાકાત લેવાનો<ph name="END_LINK" /> પ્રયાસ કરો.</translation>
+<translation id="1641976391427233992">આટલા સમય સુધી આઉટપુટ વિલંબિત કરો</translation>
 <translation id="1644574205037202324">ઇતિહાસ</translation>
 <translation id="1645368109819982629">અસમર્થિત પ્રોટોકોલ</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -164,12 +172,15 @@
 <translation id="1663943134801823270">કાર્ડ અને સરનામા Chromeમાંથી છે. તમે તેને <ph name="BEGIN_LINK" />સેટિંગ્સ<ph name="END_LINK" />માં સંચાલિત કરી શકો છો.</translation>
 <translation id="1671391448414634642">હવેથી <ph name="SOURCE_LANGUAGE" />માં છે તે પેજનો અનુવાદ <ph name="TARGET_LANGUAGE" />માં થશે.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> સામાન્ય રીતે તમારી માહિતીને સુરક્ષિત રાખવા માટે એન્ક્રિપ્શનનો ઉપયોગ કરે છે. જ્યારે આ સમયે Google Chrome દ્વારા <ph name="SITE" />થી કનેક્ટ કરવાનો પ્રયાસ થયો, ત્યારે વેબસાઇટે અસામાન્ય અને ખોટા લૉગ ઇન વિગતને પાછા મોકલ્યાં. આવું ત્યારે થઈ શકે જ્યારે કોઈ હુમલાખોર <ph name="SITE" /> હોવાનો ડોળ કરવાનો પ્રયાસ કરી રહ્યો હોય અથવા કોઈ Wi-Fi સાઇન-ઇન સ્ક્રીને કનેક્શનમાં વિક્ષેપ પાડ્યો હોય. તમારી માહિતી હજી પણ સુરક્ષિત છે કારણ કે Google Chrome એ કોઈ પણ ડેટા વિનિમય થાય એ પહેલાં જ કનેક્શન રોકી દીધું.</translation>
+<translation id="1682696192498422849">પહેલાં ટૂંકી કિનારી</translation>
 <translation id="168841957122794586">સર્વર પ્રમાણપત્ર એક નબળી ક્રિપ્ટોગ્રાફિક કી ધરાવે છે.</translation>
 <translation id="1697532407822776718">તમારું બધું સેટ છે!</translation>
 <translation id="1703835215927279855">અક્ષર</translation>
 <translation id="1706954506755087368">{1,plural, =1{આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર આવતીકાલથી માનવામાં આવે છે તે પ્રમાણે છે. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઇ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.}one{આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર માનવામાં આવે છે તે પ્રમાણે ભવિષ્યમાં # દિવસથી છે. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઇ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.}other{આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર માનવામાં આવે છે તે પ્રમાણે ભવિષ્યમાં # દિવસથી છે. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઇ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1713628304598226412">ટ્રે 2</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">મેઇલબૉક્સ 3</translation>
 <translation id="1718029547804390981">એનોટેટ કરવા માટે દસ્તાવેજ ઘણો મોટો છે</translation>
 <translation id="1721424275792716183">* ફીલ્ડ આવશ્યક છે</translation>
 <translation id="1727741090716970331">માન્ય કાર્ડ નંબર ઉમેરો</translation>
@@ -183,7 +194,9 @@
 <translation id="1743520634839655729">આગલી વખતે વધુ ઝડપથી ચુકવણી કરવા માટે, તમારા કાર્ડ, નામ અને બિલિંગ સરનામાને તમારા Google એકાઉન્ટ અને આ ઉપકરણ પર સાચવો.</translation>
 <translation id="1743570585616704562">ઓળખાયેલ નથી</translation>
 <translation id="1745880797583122200">તમારું બ્રાઉઝર મેનેજ કરવામાં આવે છે</translation>
+<translation id="1746113442205726301">છબીને Y અક્ષ પર ખસેડો</translation>
 <translation id="17513872634828108">ટેબ્સ ખોલો</translation>
+<translation id="1752021286346845558">મેઇલબૉક્સ 8</translation>
 <translation id="1753706481035618306">પૃષ્ઠ નંબર</translation>
 <translation id="1763864636252898013">આ સર્વર સાબિત કરી શક્યું નથી કે એ <ph name="DOMAIN" /> છે; એનું સુરક્ષા પ્રમાણપત્ર તમારા ડિવાઇસની ઑપરેટિંગ સિસ્ટમ દ્વારા વિશ્વસનીય નથી. આ કોઈ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Windows નેટવર્ક ડાયગ્નોસ્ટિક્સ ચલાવવાનો પ્રયાસ કરો<ph name="END_LINK" />.</translation>
@@ -193,6 +206,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">કાર્ડધારકનું નામ</translation>
+<translation id="1807528111851433570">શરૂઆતની શીટ</translation>
 <translation id="1821930232296380041">અમાન્ય વિનંતી અથવા વિનંતી પરિમાણો</translation>
 <translation id="1822540298136254167">તમે મુલાકાત લો તે વેબસાઇટ અને તેના પર વિતાવેલો સમય</translation>
 <translation id="1826516787628120939">તપાસી રહ્યાં છે</translation>
@@ -221,6 +235,7 @@
 <translation id="1973335181906896915">અનુક્રમાંકન ભૂલ</translation>
 <translation id="1974060860693918893">વિગતવાર</translation>
 <translation id="1974883374937189061"><ph name="BEGIN_WHITEPAPER_LINK" />તમે મુલાકાત લો તે કેટલાક પેજના URLs, સિસ્ટમ વિશેની સીમિત માહિતી અને પેજનું કેટલુંક કન્ટેન્ટ<ph name="END_WHITEPAPER_LINK" /> Googleને મોકલીને Chromeની સુરક્ષા વધુ સારી બનાવવામાં સહાય કરો. <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">મેઇલબૉક્સ 10</translation>
 <translation id="1978555033938440688">ફર્મવેયર વર્ઝન</translation>
 <translation id="1981206234434200693">Chromeના બ્રાઉઝિંગ ઇતિહાસનો ડેટા સાફ કરો</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -230,6 +245,7 @@
 <translation id="2025186561304664664">પ્રૉક્સીને ઑટો ગોઠવણી મોડ પર સેટ કરાઈ છે.</translation>
 <translation id="2030481566774242610">શું તમારો અર્થ <ph name="LINK" /> છે?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />પ્રૉક્સી અને ફાયરવૉલ ચેક કરવાનો પ્રયાસ કરો<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">ટ્રે 7</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" />માં લખાયેલાં પેજનો અનુવાદ થશે નહીં.</translation>
 <translation id="2053553514270667976">પિન કોડ</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 સૂચન}one{# સૂચન}other{# સૂચન}}</translation>
@@ -242,6 +258,7 @@
 <translation id="2096368010154057602">વિભાગ</translation>
 <translation id="2099652385553570808">ડાબી બાજુએ ત્રણ સ્ટેપલ લગાવો</translation>
 <translation id="2102134110707549001">સશક્ત પાસવર્ડ સૂચવો…</translation>
+<translation id="2107021941795971877">પ્રિન્ટ માટેના સપોર્ટ</translation>
 <translation id="2108755909498034140">તમારું કમ્પ્યુટર પુનઃપ્રારંભ કરો</translation>
 <translation id="2111256659903765347">સુપર-A</translation>
 <translation id="2113977810652731515">કાર્ડ</translation>
@@ -266,6 +283,7 @@
 <translation id="2187317261103489799">શોધો (ડિફૉલ્ટ)</translation>
 <translation id="2188375229972301266">નીચેની બાજુએ એકથી વધુ કાણાં પાડો</translation>
 <translation id="2202020181578195191">એક માન્ય સમાપ્તિ વર્ષ દાખલ કરો</translation>
+<translation id="22081806969704220">ટ્રે 3</translation>
 <translation id="2212735316055980242">નીતિ મળી નથી</translation>
 <translation id="2213606439339815911">પ્રવિષ્ટિઓનું આનયન કરી રહ્યાં છે...</translation>
 <translation id="2215727959747642672">ફાઇલમાં ફેરફાર કરવો</translation>
@@ -283,6 +301,7 @@
 <translation id="2263079731045660823">Chrome સેટિંગમાં ક્રેડિટ કાર્ડ ઑટોમેટિક રીતે ભરવાની માહિતીને અપડેટ કરો</translation>
 <translation id="2267047181501709434">તમારી ઓળખની ચકાસણી કરી રહ્યાં છીએ...</translation>
 <translation id="2270484714375784793">ફોન નંબર</translation>
+<translation id="2276057643614339130">પ્રિન્ટ બેઝ</translation>
 <translation id="2277103315734023688">આગળ લઈ જાઓ</translation>
 <translation id="2283340219607151381">સરનામાં સાચવો અને ભરો</translation>
 <translation id="2288422996159078444">તમે જે કંઈપણ ટાઇપ કરશો તે, તમે જોશો તે કોઈપણ પેજ અથવા વેબ પરની અન્ય કોઈપણ પ્રવૃત્તિ પર નજર રાખવામાં આવી રહી છે. સાઇટ પરના કન્ટેન્ટમાં તમારી જાણ વિના ફેરફાર કરવામાં આવી શકે છે.</translation>
@@ -322,6 +341,7 @@
 <translation id="2465655957518002998">વિતરણ પદ્ધતિ પસંદ કરો</translation>
 <translation id="2465688316154986572">સ્ટેપલ લગાવો</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />નેટવર્ક ડાયગ્નોસ્ટિક્સ ચલાવી રહ્યાં છે<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">1-થી-N સુધીનો ક્રમ</translation>
 <translation id="2473195200299095979">આ પૃષ્ઠનો અનુવાદ કરો</translation>
 <translation id="2479410451996844060">અમાન્ય શોધ URL.</translation>
 <translation id="2482878487686419369">સૂચનાઓ</translation>
@@ -340,6 +360,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{અને અન્ય 1}one{અને વધુ #}other{અને વધુ #}}</translation>
 <translation id="2536110899380797252">સરનામું ઉમેરો</translation>
 <translation id="2539524384386349900">શોધો</translation>
+<translation id="2544644783021658368">માત્ર એક દસ્તાવેજ</translation>
 <translation id="254947805923345898">પૉલિસી મૂલ્ય માન્ય નથી.</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> એ અમાન્ય પ્રતિસાદ મોકલ્યો.</translation>
 <translation id="2556876185419854533">&amp;ફેરફાર કરવાનું રદ કરો</translation>
@@ -372,8 +393,10 @@
 <translation id="2676271551327853224">રૉક-8K</translation>
 <translation id="2677748264148917807">છોડો</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">શ્રેષ્ઠ ફિટ</translation>
 <translation id="2691924980723297736">સલામતીની ચેતવણી</translation>
 <translation id="2699302886720511147">સ્વીકૃત કાર્ડ</translation>
+<translation id="2701514975700770343">નીચે તરફ</translation>
 <translation id="2702801445560668637">વાંચન સૂચિ</translation>
 <translation id="2704283930420550640">મૂલ્ય ફોર્મેટથી મેળ ખાતું  નથી.</translation>
 <translation id="2705137772291741111">આ સાઇટની સાચવેલ (કૅશ કરેલ) કૉપિ વાંચવા યોગ્ય ન હતી.</translation>
@@ -393,12 +416,15 @@
 <translation id="2742870351467570537">પસંદ કરેલી આઇટમ્સને દૂર કરો</translation>
 <translation id="277133753123645258">વિતરણ પદ્ધતિ</translation>
 <translation id="277499241957683684">ઉપકરણ રેકોર્ડ ખૂટે છે</translation>
+<translation id="2775884851269838147">પહેલાં પેજ પ્રિન્ટ કરો</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">કનેક્શન ફરીથી સેટ થયું.</translation>
 <translation id="2792012897584536778">આ ડિવાઇસના વ્યવસ્થાપકોએ સુરક્ષા પ્રમાણપત્રો સેટ અપ કર્યા છે, જેના કારણે તેમને તમે મુલાકાત લો તે વેબસાઇટનું કન્ટેન્ટ જોવાની મંજૂરી મળી શકે છે.</translation>
 <translation id="2799020568854403057">સાઇટ આગળ હાનિકારક ઍપ્લિકેશનો ધરાવે છે</translation>
 <translation id="2799223571221894425">ફરીથી લોંચ કરો</translation>
 <translation id="2803306138276472711">Google Safe Browsing ને તાજેતરમાં <ph name="SITE" /> પર <ph name="BEGIN_LINK" />મૉલવેર મળ્યું<ph name="END_LINK" />. વેબસાઇટ્સ કે જે સામાન્ય રીતે સુરક્ષિત છે તે ક્યારેક મૉલવેરથી દૂષિત હોય છે.</translation>
+<translation id="2807052079800581569">છબીની Y અક્ષ પરની સ્થિતિ</translation>
+<translation id="2809804249696361569">બન્ને શીટ</translation>
 <translation id="2824775600643448204">સરનામું અને શોધ બાર</translation>
 <translation id="2826760142808435982">કનેક્શન <ph name="CIPHER" />નો ઉપયોગ કરીને એન્ક્રિપ્ટ અને પ્રમાણિત કરેલુંં છે અને મુખ્ય એક્સચેન્જ મેકેનિઝ્મ તરીકે <ph name="KX" />નો ઉપયોગ કરે છે.</translation>
 <translation id="2835170189407361413">ફોર્મ સાફ કરો</translation>
@@ -413,6 +439,7 @@
 <translation id="290376772003165898">પેજ <ph name="LANGUAGE" />માં નથી?</translation>
 <translation id="2909946352844186028">નેટવર્ક ફેરફાર મળ્યો હતો.</translation>
 <translation id="2910133103376701357">તમારું ડિવાઇસ અને એકાઉન્ટ <ph name="ENROLLMENT_DOMAIN" /> દ્વારા મેનેજ થાય છે.</translation>
+<translation id="2911973620368911614">જોબ એકાઉન્ટિંગ વપરાશકર્તાનું ID</translation>
 <translation id="2916038427272391327">અન્ય પ્રોગ્રામ બંધ કરો</translation>
 <translation id="2922350208395188000">સર્વરનું પ્રમાણપત્ર તપાસી શકાતું નથી.</translation>
 <translation id="2925673989565098301">વિતરણ પદ્ધતિ</translation>
@@ -422,6 +449,7 @@
 <translation id="2934466151127459956">સરકારી-દસ્તાવેજ</translation>
 <translation id="2941952326391522266">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર <ph name="DOMAIN2" /> નું છે. આ કોઈ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.</translation>
 <translation id="2948083400971632585">તમે સેટિંગ પેજમાંથી કનેક્શન માટે ગોઠવવામાં આવેલ કોઈપણ પ્રોક્સીઓ બંધ કરી શકો છો.</translation>
+<translation id="2951588413176968965">મારું મેઇલબૉક્સ</translation>
 <translation id="295526156371527179">ચેતવણી: નીતિમાં ઉલ્લેખ કર્યા મુજબ આ નીતિને શબ્દકોશ તરીકે મર્જ કરવામાં આવી ન હતી, કારણ કે તે શબ્દકોશ નથી.</translation>
 <translation id="2955913368246107853">શોધ બાર બંધ કરો</translation>
 <translation id="2969319727213777354">એક સુરક્ષિત કનેક્શન સ્થાપિત કરવા માટે, તમારી ઘડિયાળ યોગ્ય રીતે સેટ હોવી જરૂરી છે. આનું કારણ એ કે વેબસાઇટ્સ તેઓને ઓળખવા માટે જે પ્રમાણપત્રોનો ઉપયોગ કરે છે તે ચોક્કસ સમય અવધિ માટે જ માન્ય હોય છે. તમારા ઉપકરણની ઘડિયાળ ખોટી હોવાને લીધે, Google Chrome આ પ્રમાણપત્રોને ચકાસી શકતું નથી.</translation>
@@ -436,6 +464,7 @@
 <translation id="2991174974383378012">વેબસાઇટ્સ સાથે શેર કરવું</translation>
 <translation id="2991571918955627853">તમે હમણાં <ph name="SITE" />ની મુલાકાત લઈ શકતાં નથી કારણ કે તે વેબસાઇટ HSTSનો ઉપયોગ કરે છે. નેટવર્કમાં ભૂલ આવવી અને હુમલા થવા સામાન્ય રીતે અસ્થાયી હોય છે, તેથી આ પેજ સંભવિત રૂપે થોડા સમય પછી કાર્ય કરશે.</translation>
 <translation id="2996674880327704673">Google દ્વારા સૂચનો</translation>
+<translation id="3002501248619246229">ઇનપુટ ટ્રે મીડિયા ચેક કરો</translation>
 <translation id="3005723025932146533">સાચવેલી કૉપિ બતાવો</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> માટે CVC દાખલ કરો. એકવાર તમે ખાતરી કરી લો, તે પછી આ સાઇટ સાથે તમારા કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
 <translation id="3010559122411665027">"<ph name="ENTRY_INDEX" />" એન્ટ્રીને સૂચિબદ્ધ કરો: <ph name="ERROR" /></translation>
@@ -448,12 +477,14 @@
 <translation id="3060227939791841287">C9 (એન્વલપ)</translation>
 <translation id="3061707000357573562">પૅચ સેવા</translation>
 <translation id="3064966200440839136">બાહ્ય ઍપ્લિકેશન મારફતે ચુકવણી કરવા માટે છુપો મોડ છોડી રહ્યાં છીએ. તો ચાલુ રાખીએ?</translation>
+<translation id="3080254622891793721">ગ્રાફિક</translation>
 <translation id="3086579638707268289">વેબ પરની તમારી પ્રવૃત્તિને મોનિટર કરવામાં આવે છે</translation>
 <translation id="3087734570205094154">તળિયું</translation>
 <translation id="3095940652251934233">સ્ટેટમેંટ</translation>
 <translation id="3096100844101284527">પિકઅપ માટેનું સરનામું ઉમેરો</translation>
 <translation id="3105172416063519923">સંપત્તિ ID:</translation>
 <translation id="3109728660330352905">તમને આ પેજને જોવાનો અધિકાર નથી.</translation>
+<translation id="3113284927548439113">ત્રીજી પાળી</translation>
 <translation id="3116158981186517402">લૅમિનેટ કરો</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />કનેક્ટિવિટી ડાયગ્નોસ્ટિક્સ ચલાવવાનો પ્રયાસ કરો<ph name="END_LINK" />.</translation>
@@ -478,6 +509,7 @@
 <translation id="3209034400446768650">પેજ કદાચ નાણાં વસૂલી શકે છે</translation>
 <translation id="3212581601480735796"><ph name="HOSTNAME" /> પરની તમારી પ્રવૃત્તિનું નિરીક્ષણ કરવામાં આવી રહ્યું છે</translation>
 <translation id="3215092763954878852">WebAuthnનો ઉપયોગ કરી શક્યાં નથી</translation>
+<translation id="3218181027817787318">સંબંધિત</translation>
 <translation id="3225919329040284222">સર્વર એક પ્રમાણપત્ર પ્રસ્તુત કરે છે જે બિલ્ટ-ઇન અપેક્ષાઓ સાથે મેળ ખાતું નથી. આ અપેક્ષાઓમાં તમને સુરક્ષિત રાખવા માટે અમુક ચોક્કસ, ઉચ્ચ-સુરક્ષા વેબસાઇટ્સનો સમાવેશ થાય છે.</translation>
 <translation id="3226128629678568754">પૃષ્ઠને લોડ કરવા માટે જરૂરી ડેટા ફરીથી સબમિટ કરવા માટે ફરીથી લોડ કરો બટન દબાવો.</translation>
 <translation id="3227137524299004712">માઇક્રોફોન</translation>
@@ -512,6 +544,7 @@
 <translation id="3399952811970034796">વિતરણ માટેનું સરનામું</translation>
 <translation id="3422248202833853650">મેમરી ખાલી કરવા માટે અન્ય પ્રોગ્રામથી બહાર નીકળવાનો પ્રયાસ કરો.</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> હાલમાં પહોંચવા યોગ્ય નથી.</translation>
+<translation id="3423742043356668186">સિસ્ટમ દ્વારા ઉલ્લેખિત</translation>
 <translation id="3427092606871434483">મંજૂરી આપો (ડિફૉલ્ટ)</translation>
 <translation id="3427342743765426898">&amp;ફરી ફેરફાર કરો</translation>
 <translation id="342781501876943858">જો તમે અન્ય સાઇટ પર તમારા પાસવર્ડનો ફરી ઉપયોગ કર્યો હોય, તો Chromium તેને રીસેટ કરવાનો સુઝાવ આપે છે.</translation>
@@ -521,6 +554,7 @@
 <translation id="3447661539832366887">આ ઉપકરણના માલિકે ડાયનાસોર રમત બંધ કરી છે.</translation>
 <translation id="3447884698081792621">(<ph name="ISSUER" /> દ્વારા રજૂ થયેલ) પ્રમાણપત્ર બતાવો</translation>
 <translation id="3452404311384756672">આનયન અંતરાલ:</translation>
+<translation id="3453962258458347894">ફરી વાર કરી શકાતા પ્રયાસોની સંખ્યા</translation>
 <translation id="3456231139987291353">નંબર-11 (એન્વલપ)</translation>
 <translation id="3461824795358126837">હાઇલાઇટર</translation>
 <translation id="3462200631372590220">વિગતવાર છુપાવો</translation>
@@ -528,15 +562,20 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" />, હાલમાં ખુલ્લું છે, ખુલ્લા ટૅબ પર સ્વિચ કરવા માટે ટૅબ પછી Enter દબાવો</translation>
 <translation id="3479552764303398839">હમણાં નહીં</translation>
 <translation id="3484560055331845446">તમે તમારા Google એકાઉન્ટનો ઍક્સેસ ગુમાવી શકો છો. Chrome તમને હમણાં જ તમારો પાસવર્ડ બદલવાનો સુઝાવ આપે છે. તમને સાઇન ઇન કરવા માટે કહેવામાં આવશે.</translation>
+<translation id="3487845404393360112">ટ્રે 4</translation>
 <translation id="3495081129428749620">પેજ
     <ph name="PAGE_TITLE" />માં શોધો</translation>
 <translation id="3512163584740124171">આ નીતિને અવગણવામાં આવે છે કારણ કે સમાન નીતિ ગ્રૂપની બીજી નીતિ ઉચ્ચ પ્રાથમિકતા ધરાવે છે.</translation>
 <translation id="3513704683820682405">ઑગ્મેન્ટેડ રિયાલિટી</translation>
+<translation id="3518941727116570328">એકથી વધુ ઑબ્જેક્ટ હૅન્ડલ કરવા</translation>
 <translation id="3528171143076753409">સર્વરનું પ્રમાણપત્ર વિશ્વસનીય નથી.</translation>
 <translation id="3528485271872257980">ઘાટો ભૂરો</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{સિંક કરેલ ઉપકરણો પર ઓછામાં ઓછી 1 આઇટમ}=1{1 આઇટમ (અને સિંક કરેલ ઉપકરણો પર બીજી ઘણી બધી)}one{# આઇટમ (અને સિંક કરેલ ઉપકરણો પર બીજી ઘણી બધી)}other{# આઇટમ (અને સિંક કરેલ ઉપકરણો પર બીજી ઘણી બધી)}}</translation>
+<translation id="3531780078352352885">જોબ શીટ</translation>
+<translation id="3533328374079021623">મેઇલબૉક્સ 5</translation>
 <translation id="3539171420378717834">આ ઉપકરણ પર આ કાર્ડની એક કૉપિ રાખો</translation>
 <translation id="3553513561058684206">તમારા માટે</translation>
+<translation id="3558573058928565255">દિવસનો સમય</translation>
 <translation id="3566021033012934673">તમારું કનેક્શન ખાનગી નથી</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635"><ph name="SITE" /> પરનું શામેલ કરેલ પેજ કહે છે કે</translation>
@@ -545,8 +584,10 @@
 <translation id="3583757800736429874">&amp;ખસેડવું ફરી કરો</translation>
 <translation id="3584299510153766161">નીચેની બાજુએ બે કાણાં પાડો</translation>
 <translation id="3586931643579894722">વિગતો છુપાવો</translation>
+<translation id="3587738293690942763">મધ્ય</translation>
 <translation id="3592413004129370115">ઇટાલિયન (એન્વલપ)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">ફીડ ઓરિએન્ટેશન</translation>
 <translation id="3614103345592970299">કદ 2</translation>
 <translation id="361438452008624280">સૂચિની એન્ટ્રી "<ph name="LANGUAGE_ID" />": અજાણી અથવા અસમર્થિત ભાષા.</translation>
 <translation id="3615877443314183785">એક માન્ય સમાપ્તિ તારીખ દાખલ કરો</translation>
@@ -555,6 +596,7 @@
 <translation id="3630155396527302611">જો તે પહેલાંથી જ નેટવર્ક ઍક્સેસ કરવા માટે મંજૂર પ્રોગ્રામ તરીકે સૂચિબદ્ધ હોય, તો
     તેને સૂચિમાંથી દૂર કરી અને તેને ફરીથી ઉમેરવાનો પ્રયાસ કરો.</translation>
 <translation id="3631244953324577188">બાયોમેટ્રિક્સ</translation>
+<translation id="3634530185120165534">ટ્રે 5</translation>
 <translation id="3640766068866876100">અનુક્રમણિકા-4x6-Ext</translation>
 <translation id="3650584904733503804">માન્યતા સફળ</translation>
 <translation id="3655670868607891010">જો તમે આ વારંવાર જોઈ રહ્યાં છો, તો આ <ph name="HELP_LINK" /> અજમાવી જુઓ.</translation>
@@ -592,16 +634,21 @@
 <translation id="3760561303380396507">CVCને બદલે Windows Helloનો ઉપયોગ કરીએ?</translation>
 <translation id="3761718714832595332">સ્ટેટસ છુપાવો</translation>
 <translation id="3765032636089507299">Safe Browsing પેજ રચના હેઠળ છે.</translation>
+<translation id="3765588406864124894">મેઇલબૉક્સ 9</translation>
 <translation id="3778403066972421603">શું તમે આ કાર્ડને તમારા Google એકાઉન્ટ અને આ ડિવાઇસ પર સાચવવા માગો છો?</translation>
+<translation id="3780694243617746492">આઉટપુટ બિન</translation>
 <translation id="3781428340399460090">ચળકતો ગુલાબી</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /> માં સમાપ્ત થાય છે</translation>
 <translation id="3789155188480882154">કદ 16</translation>
 <translation id="3797522431967816232">Prc3 (એન્વલપ)</translation>
+<translation id="3799805948399000906">ફોન્ટની વિનંતી કરી</translation>
+<translation id="3807366285948165054">છબીને X અક્ષ પર ખસેડો</translation>
 <translation id="3807873520724684969">નુકસાનકારક કન્ટેન્ટ બ્લૉક કર્યું.</translation>
 <translation id="3808375843007691220">ચેતવણી: આગળ પ્રાયોગિક સુવિધાઓ છે!</translation>
 <translation id="3810973564298564668">મેનેજ કરો</translation>
 <translation id="382518646247711829">જો તમે કોઈ પ્રૉક્સી સર્વરનો ઉપયોગ કરો છો...</translation>
+<translation id="3827112369919217609">ચોક્કસ</translation>
 <translation id="3828924085048779000">ખાલી પાસફ્રેઝને અનુમતિ નથી. </translation>
 <translation id="3831915413245941253"><ph name="ENROLLMENT_DOMAIN" />એ વધારાના કાર્યો માટે એક્સ્ટેંશન ઇન્સ્ટૉલ કર્યા છે. એક્સ્ટેંશન પાસે તમારા કેટલાક ડેટાનો ઍક્સેસ છે.</translation>
 <translation id="3832522519263485449">ડાબી બાજુએ એકથી વધુ કાણાં પાડો</translation>
@@ -610,6 +657,7 @@
 <translation id="3884278016824448484">વિરોધાભાસી ઉપકરણ ઓળખકર્તા</translation>
 <translation id="3885155851504623709">પેરિશ</translation>
 <translation id="388632593194507180">નિરીક્ષણ કરતું જણાયું</translation>
+<translation id="3886948180919384617">સ્ટૅકર 3</translation>
 <translation id="3890664840433101773">ઇમેઇલ ઉમેરો</translation>
 <translation id="3897092660631435901">મેનૂ</translation>
 <translation id="3901925938762663762">કાર્ડની સમયસીમા સમાપ્ત થઇ ગઈ છે</translation>
@@ -644,7 +692,9 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">પ્રૉક્સી ગોઠવણી .pac સ્ક્રિપ્ટ URLનો ઉપયોગ કરવા માટે સેટ છે, ફિક્સ્ડ પ્રૉક્સી સર્વર માટે નહીંં.</translation>
 <translation id="4082393374666368382">સેટિંગ - મેનેજમેન્ટ</translation>
+<translation id="4088981014127559358">બાજુ 1 છબીને Y અક્ષ પર ખસેડો</translation>
 <translation id="4098354747657067197">આગળ છેતરામણી સાઇટ છે</translation>
+<translation id="4101413244023615925">ટેક્સ્ટ અને ગ્રાફિક</translation>
 <translation id="4103249731201008433">ઉપકરણ અનુક્ર્માંક નંબર અમાન્ય છે</translation>
 <translation id="4103763322291513355">બ્લેકલિસ્ટ કરેલા URL ની સૂચિ અને તમારા સિસ્ટમ વ્યવસ્થાપક દ્વારા લાગુ અન્ય નીતિઓ જોવા માટે &lt;strong&gt;chrome://policy&lt;/strong&gt; ની મુલાકાત લો.</translation>
 <translation id="4108231218301530806">આગલી વખતે આ કાર્ડની ચકાસણી કરવા માટે ફિંગરપ્રિન્ટનો ઉપયોગ કરો.</translation>
@@ -657,6 +707,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 અન્ય}one{# અન્ય}other{# અન્ય}}</translation>
 <translation id="4130226655945681476">નેટવર્ક કેબલ્સ, મૉડેમ અને રાઉટર તપાસીને</translation>
 <translation id="413544239732274901">વધુ જાણો</translation>
+<translation id="4142935452406587478">ટ્રે 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">વૈશ્વિક ડિફોલ્ટનો ઉપયોગ કરો (શોધો)</translation>
 <translation id="4159784952369912983">જાંબલી</translation>
@@ -699,6 +750,7 @@
 <translation id="4258748452823770588">ખરાબ હસ્તાક્ષર</translation>
 <translation id="4261046003697461417">સંરક્ષિત દસ્તાવેજ એનોટેટ કરી શકાતા નથી</translation>
 <translation id="4265872034478892965">તમારા વ્યવસ્થાપક દ્વારા મંજૂર</translation>
+<translation id="4270541775497538019">સ્ટૅકર 6</translation>
 <translation id="4275830172053184480">તમારું ઉપકરણ પુનઃપ્રારંભ કરો</translation>
 <translation id="4277028893293644418">પાસવર્ડ રીસેટ કરો</translation>
 <translation id="4279811152705618813">તમારા <ph name="DEVICE_TYPE" />ને <ph name="ENROLLMENT_DOMAIN" /> મેનેજ કરે છે</translation>
@@ -714,6 +766,7 @@
 <translation id="4318566738941496689">તમારા ડિવાઇસનું નામ અને નેટવર્ક ઍડ્રેસ</translation>
 <translation id="4325863107915753736">લેખ શોધવામાં નિષ્ફળ થયાં</translation>
 <translation id="4326324639298822553">તમારી સમાપ્તિ તારીખ તપાસો અને ફરી પ્રયાસ કરો</translation>
+<translation id="4331519897422864041">સ્ટૅકર 5</translation>
 <translation id="4331708818696583467">સુરક્ષિત નથી</translation>
 <translation id="4340982228985273705">આ કમ્પ્યુટર એન્ટરપ્રાઇઝ દ્વારા મેનેજ થતું હોય તેવું જણાયું નથી, તેથી નીતિ માત્ર Chrome Webstore પર હોસ્ટ થયેલા એક્સ્ટેન્શનો આપમેળે ઇન્સ્ટૉલ કરી શકશે. Chrome Webstore અપડેટનું URL "<ph name="CWS_UPDATE_URL" />" છે.</translation>
 <translation id="4346197816712207223">સ્વીકૃત ક્રેડિટ કાર્ડ</translation>
@@ -729,6 +782,7 @@
 <translation id="4372948949327679948">અપેક્ષિત <ph name="VALUE_TYPE" /> મૂલ્ય.</translation>
 <translation id="4377125064752653719">તમે <ph name="DOMAIN" /> પર પહોંચવાનો પ્રયાસ કર્યો, પણ સર્વર દ્વારા પ્રસ્તુત કરવામાં આવેલું પ્રમાણપત્ર તેના રજૂકર્તા દ્વારા જ રદ કરવામાં આવ્યું છે. આનો અર્થ છે કે સર્વરે પ્રસ્તુત કરેલા સુરક્ષા પ્રમાણપત્રો પૂર્ણપણે વિશ્વસનીય નથી. તમે કોઈ હુમલાખોર જોડે વાત કરતા હોઈ શકો છો.</translation>
 <translation id="4378154925671717803">ફોન</translation>
+<translation id="4390472908992056574">બ્રિમ</translation>
 <translation id="4406896451731180161">શોધ પરિણામો</translation>
 <translation id="4408413947728134509">કુકી <ph name="NUM_COOKIES" /></translation>
 <translation id="4415426530740016218">પિકઅપ માટેનું સરનામું</translation>
@@ -755,6 +809,7 @@
 <translation id="4522570452068850558">વિગતો</translation>
 <translation id="4524138615196389145">હવેથી WebAuthnનો ઉપયોગ કરીને તમારા કાર્ડ વધુ ઝડપથી કન્ફર્મ કરો</translation>
 <translation id="4524805452350978254">કાર્ડ મેનેજ કરો</translation>
+<translation id="4542971377163063093">ટ્રે 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ફ્લેશ</translation>
 <translation id="4558551763791394412">તમારા એક્સ્ટેન્શન્સને અક્ષમ કરવાનો પ્રયાસ કરો.</translation>
@@ -770,6 +825,7 @@
 <translation id="4628948037717959914">ફોટો</translation>
 <translation id="4635654612248442824">આ સાઇટ <ph name="ORIGIN" /> દ્વારા વિનંતી કરવામાં આવી છે કે ઑરિજિન પૉલિસી તેની બધી વિનંતી પર લાગુ થશે, પણ હાલમાં આ પૉલિસી લાગુ કરી શકાતી નથી.</translation>
 <translation id="464342062220857295">શોધ સુવિધાઓ</translation>
+<translation id="4644670975240021822">ઉલ્ટા ક્રમમાં નીચે તરફ</translation>
 <translation id="4646534391647090355">મને હવે ડાઉનલોડ હોમ પર લઈ જાઓ</translation>
 <translation id="4658638640878098064">ઉપર ડાબી બાજુએ સ્ટેપલ લગાવો</translation>
 <translation id="4668929960204016307">,</translation>
@@ -778,6 +834,7 @@
 <translation id="4690462567478992370">અમાન્ય પ્રમાણપત્રનો ઉપયોગ કરવાનું બંધ કરો</translation>
 <translation id="4691835149146451662">સ્થાપત્ય-A (એન્વલપ)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">બાજુ</translation>
 <translation id="4708268264240856090">તમારું કનેક્શન અવરોધાયું હતું</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />Windows નેટવર્ક ડાયગ્નોસ્ટિક્સ ચલાવી રહ્યાં છે<ph name="END_LINK" /></translation>
@@ -795,9 +852,11 @@
 <translation id="4764776831041365478"><ph name="URL" /> પરનાં વેબપેજ અસ્થાયી ધોરણે બંધ હોઈ શકે છે અથવા તે કાયમ માટે નવા વેબ ઍડ્રેસ પર ખસેડવામાં આવ્યા હોઈ શકે છે.</translation>
 <translation id="4766713847338118463">નીચે બે સ્ટેપલ લગાવો</translation>
 <translation id="4771973620359291008">કોઈ અજ્ઞાત ભૂલ આવી.</translation>
+<translation id="4780366598804516005">મેઇલબૉક્સ 1</translation>
 <translation id="4780900888022378816">તમારું ડિવાઇસ <ph name="ENROLLMENT_DOMAIN" /> દ્વારા મેનેજ કરવામાં આવે છે અને તમારું એકાઉન્ટ <ph name="ACCOUNT_DOMAIN" /> દ્વારા મેનેજ કરવામાં આવે છે.</translation>
 <translation id="4785689107224900852">આ ટૅબ પર સ્વિચ કરો</translation>
 <translation id="4791134497475588553">Linuxની બધી ઍપ ક્યારે ઇન્સ્ટૉલ થઈ અને છેલ્લે ક્યારે તેનો ઉપયોગ કરવામાં આવ્યો હતો</translation>
+<translation id="4796594887379589189">જોબ એકાઉન્ટ ID</translation>
 <translation id="4798078619018708837">તમારા કાર્ડની વિગતો અપડેટ કરવા <ph name="CREDIT_CARD" />ની સમાપ્તિ તારીખ અને CVC દાખલ કરો. તમે ખાતરી કરી લો, પછી આ સાઇટ સાથે તમારા Google એકાઉન્ટમાંથી કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
 <translation id="4800132727771399293">તમારી સમાપ્તિ તારીખ અને CVC તપાસો અને ફરીથી પ્રયાસ કરો</translation>
 <translation id="480334179571489655">ઑરિજિન પૉલિસી ભૂલ</translation>
@@ -805,6 +864,7 @@
 <translation id="4807049035289105102">તમે અત્યારે <ph name="SITE" /> ની મુલાકાત લઈ શકતાં નથી કારણ કે વેબસાઇટે સમજાય નહીં તેવા ઓળખપત્ર મોકલ્યાં છે જેની પર Google Chrome પ્રક્રિયા કરી શકતું નથી. નેટવર્ક ભૂલો અને હુમલા સામાન્ય રીતે અસ્થાયી છે, તેથી આ પૃષ્ઠ સંભવિત રૂપે પછીથી કાર્ય કરશે.</translation>
 <translation id="4813512666221746211">નેટવર્ક ભૂલ</translation>
 <translation id="4816492930507672669">પૃષ્ઠ પર ફિટ</translation>
+<translation id="484462545196658690">ઑટો</translation>
 <translation id="4850886885716139402">જુઓ</translation>
 <translation id="4854362297993841467">વિતરણની આ પદ્ધતિ ઉપલબ્ધ નથી. કોઈ ભિન્ન પદ્ધતિ અજમાવો.</translation>
 <translation id="4876188919622883022">સરળ દૃશ્ય</translation>
@@ -814,6 +874,7 @@
 <translation id="4879491255372875719">ઑટોમૅટિક (ડિફૉલ્ટ)</translation>
 <translation id="4880827082731008257">ઇતિહાસ શોધ</translation>
 <translation id="4881695831933465202">ખોલો</translation>
+<translation id="4892518386797173871">પાછળ</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">સાચવો...</translation>
 <translation id="4913987521957242411">ઉપર ડાબી બાજુએ કાણું પાડો</translation>
@@ -823,6 +884,7 @@
 <translation id="4926049483395192435">ઉલ્લેખિત હોવું આવશ્યક છે.</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> કહે છે કે</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">વિશાળ ક્ષમતા</translation>
 <translation id="4943703118917034429">વર્ચ્યુઅલ રિયાલિટી</translation>
 <translation id="4943872375798546930">પરિણામો નથી</translation>
 <translation id="4950898438188848926">ટૅબ, સ્વિચ બટન, ખુલ્લા ટૅબ, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /> પર સ્વિચ કરવા માટે Enter દબાવો</translation>
@@ -855,8 +917,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1 ઉપયોગમાં છે)}one{(# ઉપયોગમાં છે)}other{(# ઉપયોગમાં છે)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />પ્રૉક્સી ઍડ્રેસ ચેક કરવાનો પ્રયાસ કરો<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">મેઇલબૉક્સ 4</translation>
 <translation id="5087286274860437796">સર્વરનું પ્રમાણપત્ર આ સમયે માન્ય નથી.</translation>
 <translation id="5087580092889165836">કાર્ડ ઉમેરો</translation>
+<translation id="5088142053160410913">ઑપરેટરને સંદેશ</translation>
 <translation id="5089810972385038852">રાજ્ય</translation>
 <translation id="5093232627742069661">Z-ફોલ્ડ</translation>
 <translation id="5094747076828555589">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર Chromium દ્વારા વિશ્વસનીય નથી. આ કોઈ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.</translation>
@@ -867,15 +931,18 @@
 <translation id="5115216390227830982">યુરોપિયન-Edp</translation>
 <translation id="5115563688576182185">(64-બિટ)</translation>
 <translation id="5121469660360593280">Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા દ્વારા ચિહ્નિત કરવામાં આવેલી સુરક્ષા ઇવેન્ટ વિશેનો ડેટા તમારા વ્યવસ્થાપક સાથે શેર કરો. આમાં તમે મુલાકાત લીધી હોય તે પેજના URLs, ફાઇલના નામ અથવા મેટાડેટાનો અને તમે તમારા ડિવાઇસ તથા Chromeમાં સાઇન ઇન કરવા માટે ઉપયોગ કરો છો તે વપરાશકર્તા નામનો સમાવેશ હોઈ શકે છે.</translation>
+<translation id="5123063207673082822">વીકએન્ડ</translation>
 <translation id="5125394840236832993">B-પ્લસ</translation>
 <translation id="5126510351761255129">તમારું કાર્ડ ચકાસો</translation>
 <translation id="5135404736266831032">સરનામા મેનેજ કરો…</translation>
 <translation id="5138227688689900538">ઓછું બતાવો</translation>
 <translation id="5141240743006678641">તમારા Google લૉગ ઇન વિગત સાથે સિંક પાસવર્ડને એન્ક્રિપ્ટ કરો</translation>
 <translation id="5145883236150621069">નીતિ પ્રતિક્રિયામાં ભૂલ કોડ હાજર</translation>
+<translation id="5148809049217731050">ઉપર તરફ</translation>
 <translation id="515292512908731282">C4 (એન્વલપ)</translation>
 <translation id="5158275234811857234">કવર</translation>
 <translation id="5159010409087891077">એક નવી છુપી વિંડોમાં પેજ ખોલો (⇧⌘N)</translation>
+<translation id="5161506081086828129">સ્ટૅકર 9</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> માટે CVC દાખલ કરો. તમે ખાતરી કરી લો, પછી આ સાઇટ સાથે તમારા Google એકાઉન્ટમાંથી કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
 <translation id="5169827969064885044">તમે તમારી સંસ્થાના એકાઉન્ટ માટે ઍક્સેસ ગુમાવી શકો છો અથવા તમને ઓળખ ચોરીનો અનુભવ થઈ શકે છે. Chrome તમને હમણાં જ તમારો પાસવર્ડ બદલવાની ભલામણ કરે છે.</translation>
 <translation id="5170017743895942767">Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા</translation>
@@ -896,6 +963,7 @@
 <translation id="5250209940322997802">"નેટવર્ક સાથે કનેક્ટ કરો"</translation>
 <translation id="5251803541071282808">મેઘ</translation>
 <translation id="5252000469029418751">C7 (એન્વલપ)</translation>
+<translation id="5254043433801397071">પ્રિન્ટ કન્ટેન્ટને ઑપ્ટિમાઇઝ કરો</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">ચૂકવણી પૂર્ણ</translation>
 <translation id="5266128565379329178">ઉપરની બાજુએ જોડો</translation>
@@ -909,6 +977,7 @@
 <translation id="5287240709317226393">કુકી બતાવો</translation>
 <translation id="5287456746628258573">આ સાઇટ હજી પણ જૂના સુરક્ષા કન્ફિગ્યુરેશનનો ઉપયોગ કરે છે, જેને લીધે તમારી માહિતી (ઉદાહરણ તરીકે, પાસવર્ડ અથવા ક્રેડિટ કાર્ડ નંબર) જ્યારે આ સાઇટને મોકલવામાં આવે, ત્યારે તે જોખમમાં આવી શકે છે.</translation>
 <translation id="5288108484102287882">નીતિ મૂલ્યોની માન્યતા ચેતવણીઓનું કારણ બની છે</translation>
+<translation id="5289384342738547352">એકથી વધુ દસ્તાવેજો હૅન્ડલ કરવા</translation>
 <translation id="5295292838686006428">કોઈ સાઇટ અથવા ઍપ પર થયેલા ડેટા બ્રીચમાં તમારો પાસવર્ડ ઉઘાડો પાડી દેવામાં આવ્યો છે. Chrome સુઝાવ આપે છે કે તમે હમણાં જ તમારા સાચવેલા પાસવર્ડની તપાસ કરો.</translation>
 <translation id="5299298092464848405">ભૂલ વિશ્લેષણ નીતિ</translation>
 <translation id="5300589172476337783">બતાવો</translation>
@@ -933,10 +1002,12 @@
 <translation id="5396631636586785122">જમણી બાજુએ કિનારી જોડો</translation>
 <translation id="5400836586163650660">ગ્રે</translation>
 <translation id="540969355065856584">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર આ સમયે માન્ય નથી. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હોય અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો હોઇ શકે છે.</translation>
+<translation id="541416427766103491">સ્ટૅકર 4</translation>
 <translation id="5421136146218899937">બ્રાઉઝિંગ ડેટા સાફ કરો...</translation>
 <translation id="5430298929874300616">બુકમાર્ક દૂર કરો</translation>
 <translation id="5431657950005405462">તમારી ફાઇલ મળી ન હતી</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />" પર સ્કીમા માન્યતા ભૂલ: <ph name="ERROR" /></translation>
+<translation id="5443468954631487277">ઉલટા ક્રમમાં ઉપર તરફ</translation>
 <translation id="5452270690849572955">આ <ph name="HOST_NAME" /> પૃષ્ઠ શોધી શકાતું નથી</translation>
 <translation id="5455374756549232013">ખરાબ નીતિ સમયનોંધ</translation>
 <translation id="5457113250005438886">અમાન્ય</translation>
@@ -958,7 +1029,9 @@
 <translation id="552553974213252141">શું ટેક્સ્ટ ઠીકથી કાઢી હતી?</translation>
 <translation id="55293785478302737">કિનારી જોડવી</translation>
 <translation id="553484882784876924">Prc6 (એન્વલપ)</translation>
+<translation id="5539243836947087108">રાફ્ટ</translation>
 <translation id="5540224163453853">વિનંતી કરેલ લેખ શોધી શકાયો નથી.</translation>
+<translation id="5541086400771735334">મેઇલબૉક્સ 7</translation>
 <translation id="5541546772353173584">ઇમેઇલ ઍડ્રેસ ઉમેરો</translation>
 <translation id="5545756402275714221">તમારા માટે લેખ</translation>
 <translation id="5552137475244467770">Chrome તમારા પાસવર્ડને ઑનલાઇન પ્રકાશિત કરવામાં આવેલી સૂચિઓ સામે સમય સમય પર ચેક કરે છે. આમ કરતી વખતે તમારા પાસવર્ડ અને વપરાશકર્તા નામ એન્ક્રિપ્ટેડ હોય છે, જેથી Google સહિત, કોઈપણ તેને વાંચી શકતું નથી.</translation>
@@ -983,10 +1056,13 @@
 <translation id="5632627355679805402">તમારો ડેટા <ph name="TIME" />ના રોજ તમારા <ph name="BEGIN_LINK" />Google પાસવર્ડ<ph name="END_LINK" /> સાથે એન્ક્રિપ્ટ કરવામાં આવ્યો હતો. સિંક શરૂ કરવા માટે તે દાખલ કરો.</translation>
 <translation id="5633066919399395251"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> પરના હુમલાખોરો કદાચ હાલમાં તમારા કમ્પ્યુટર પર જોખમી પ્રોગ્રામ ઇન્સ્ટૉલ કરવાનો પ્રયાસ કરે છે કે જે તમારી માહિતી (ઉદાહરણ તરીકે, ફોટો, પાસવર્ડ, સંદેશા અને ક્રેડિટ કાર્ડ) ચોરી અથવા ડિલીટ કરી શકે છે. <ph name="BEGIN_LEARN_MORE_LINK" />વધુ જાણો<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">ભ્રામક કન્ટેન્ટ બ્લૉક કરી</translation>
+<translation id="5644090287519800334">બાજુ 1 છબીને X અક્ષ પર ખસેડો</translation>
+<translation id="5645854190134202180">બીજી પાળી</translation>
 <translation id="5659593005791499971">ઇમેઇલ</translation>
 <translation id="5663614846592581799">9x11 (એન્વલપ)</translation>
 <translation id="5663955426505430495">આ ડિવાઇસના વ્યવસ્થાપકે વધારાના કાર્યો માટે એક્સ્ટેંશન ઇન્સ્ટૉલ કર્યા છે. એક્સ્ટેંશન પાસે તમારા કેટલાક ડેટાનો ઍક્સેસ છે.</translation>
 <translation id="5675650730144413517">આ પૃષ્ઠ કામ કરી રહ્યું નથી</translation>
+<translation id="568292603005599551">છબીની X અક્ષ પરની સ્થિતિ</translation>
 <translation id="5684874026226664614">અરેરે. આ પૃષ્ઠનો અનુવાદ કરી શકાયો નથી.</translation>
 <translation id="5685654322157854305">વિતરણ માટેનું સરનામું ઉમેરો</translation>
 <translation id="5689199277474810259">JSON પર નિકાસ કરો</translation>
@@ -1004,6 +1080,7 @@
 <translation id="5763042198335101085">એક માન્ય ઇમેઇલ ઍડ્રેસ ઉમેરો</translation>
 <translation id="5763703224595565476">તમારા વ્યવસ્થાપક દ્વારા તમારા બ્રાઉઝર પર Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા ચાલુ કરવામાં આવી છે. Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવાને તમારા અમુક ડેટાનો ઍક્સેસ છે.</translation>
 <translation id="5765072501007116331">વિતરણ પદ્ધતિઓ અને આવશ્યકતાઓ જોવા માટે, એક સરનામું પસંદ કરો</translation>
+<translation id="5776313857861697733">પ્રાધાન્યતા</translation>
 <translation id="5778550464785688721">MIDI ઉપકરણોનું પૂર્ણ નિયંત્રણ</translation>
 <translation id="5781136890105823427">પ્રયોગ ચાલુ કર્યો</translation>
 <translation id="578305955206182703">પીળાશ પડતો નારંગી</translation>
@@ -1024,6 +1101,7 @@
 <translation id="5855253129151731373">આ સાઇટના હોસ્ટનું નામ <ph name="LOOKALIKE_DOMAIN" /> જેવું જ લાગી રહ્યું છે. હુમલાખોરો ઘણી વાર ડોમેન નામમાં સરળતાથી જોઈ ન શકાય એવા મામૂલી ફેરફારો કરીને સાઇટની નકલ કરતા હોય છે.
 
     જો તમે એમ માનતા હો કે આ ભૂલમાં બતાવવામાં આવ્યું છે, તો કૃપા કરીને https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appealsની મુલાકાત લો.</translation>
+<translation id="5862579898803147654">સ્ટૅકર 8</translation>
 <translation id="5863847714970149516">આગળનું પેજ તમને શુલ્ક લાગુ કરી શકે છે</translation>
 <translation id="5866257070973731571">ફોન નંબર ઉમેરો</translation>
 <translation id="5866898949289125849">તમે ડેવલપર સાધનોનું પેજ જોઈ રહ્યાં છો</translation>
@@ -1036,6 +1114,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (સમન્વયિત)</translation>
 <translation id="59174027418879706">સક્ષમ કરેલું</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">ચાલુ</translation>
 <translation id="5921639886840618607">Google એકાઉન્ટમાં કાર્ડ સાચવીએ?</translation>
 <translation id="5922853866070715753">લગભગ થઈ ગયું</translation>
 <translation id="5932224571077948991">સાઇટ ઘૃણાસ્પદ અથવા ભ્રામક જાહેરાતો બતાવે છે</translation>
@@ -1046,11 +1125,13 @@
 <translation id="5975083100439434680">ઝૂમ ઘટાડો</translation>
 <translation id="5979084224081478209">પાસવર્ડ ચેક કરો</translation>
 <translation id="5980920751713728343">અનુક્રમણિકા-3x5</translation>
+<translation id="5984570616552610254">ચેમ્બરમાં ભેજનું પ્રમાણ</translation>
 <translation id="598637245381783098">ચુકવણી ઍપ્લિકેશન ખોલી શકાતી નથી</translation>
 <translation id="5989320800837274978">ફિક્સ્ડ પ્રૉક્સી સર્વર કે .pac સ્ક્રિપ્ટ URL, બેમાંથી કોઈનો પણ ઉલ્લેખ કરેલો નથી.</translation>
 <translation id="5990559369517809815">સર્વર પરની વિનંતિઓને એક્સ્ટેંશન દ્વારા અવરોધિત કરવામાં આવી છે.</translation>
 <translation id="5992691462791905444">એન્જિનિયરિંગ Z-ફોલ્ડ</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' માટે <ph name="RESULT_COUNT" /> પરિણામ</translation>
+<translation id="6008122969617370890">N-થી-1 સુધીનો ક્રમ</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">તમારા પાસવર્ડ તપાસો</translation>
 <translation id="6015796118275082299">વર્ષ</translation>
@@ -1060,15 +1141,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (સમન્વયિત)</translation>
 <translation id="6027201098523975773">એક નામ દાખલ કરો</translation>
 <translation id="603068602130820122">જમણી બાજુએ બે સ્ટેપલ લગાવો</translation>
+<translation id="6032524144326295339">મેઇલબૉક્સ 2</translation>
 <translation id="6032955021262906325">ડાબી બાજુએ જોડો</translation>
 <translation id="6034000775414344507">આછો ગ્રે</translation>
 <translation id="6034283069659657473">10x14 (એન્વલપ)</translation>
 <translation id="6034514109191629503">અકૉર્ડિઅન ફોલ્ડ</translation>
 <translation id="6039846035001940113">જો સમસ્યા ચાલુ રહે, તો સાઇટના માલિકનો સંપર્ક કરો.</translation>
 <translation id="6040143037577758943">બંધ કરો</translation>
+<translation id="6041777658117377052">ચેમ્બરનું તાપમાન</translation>
 <translation id="6044573915096792553">કદ 12</translation>
+<translation id="6045164183059402045">લાગુ કરવા માટેનો નમૂનો</translation>
 <translation id="6047233362582046994">જો તમે તમારી સુરક્ષાના જોખમોને સમજો છો, તો તમે જોખમકારક ઍપ્લિકેશનો દૂર કરતા પહેલા <ph name="BEGIN_LINK" />આ સાઇટની મુલાકાત<ph name="END_LINK" /> લઈ શકો છો.</translation>
 <translation id="6047927260846328439">આ કન્ટેન્ટ કદાચ સૉફ્ટવેર ઇન્સ્ટૉલ કરવા માટે અથવા વ્યક્તિગત માહિતી કઢાવવા માટે તમારી સાથે કપટ કરવાનો પ્રયાસ કરી શકે છે. <ph name="BEGIN_LINK" />છતાં પણ બતાવો<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">પેજની ડિલિવરી</translation>
 <translation id="6051221802930200923">તમે અત્યારે આ <ph name="SITE" />ની મુલાકાત લઈ શકતાં નથી કારણ કે આ વેબસાઇટ પ્રમાણપત્ર પિનિંગનો ઉપયોગ કરે છે. નેટવર્કમાં ભૂલ આવવી અને હુમલા થવા સામાન્ય રીતે અસ્થાયી હોય છે, તેથી આ પેજ સંભવિત રૂપે થોડા સમય પછી કાર્ય કરશે.</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">તમારા બધાં ડિવાઇસ પર તમારાં કાર્ડનો ઉપયોગ કરીએ?</translation>
@@ -1089,6 +1174,7 @@
 <translation id="6157877588268064908">વિતરણ પદ્ધતિ અને આવશ્યકતાઓ જોવા માટે, એક સરનામું પસંદ કરો</translation>
 <translation id="6165508094623778733">વધુ જાણો</translation>
 <translation id="6177128806592000436">આ સાઇટ પરનું તમારું કનેક્શન સુરક્ષિત નથી</translation>
+<translation id="6180316780098470077">ફરી પ્રયાસ કરવા માટેનો અંતરાલ</translation>
 <translation id="6196640612572343990">તૃતીય પક્ષની કુકીઝ અવરોધિત કરો</translation>
 <translation id="6203231073485539293">તમારું ઇન્ટરનેટ કનેક્શન તપાસો</translation>
 <translation id="6218753634732582820">Chromium માંથી સરનામું દૂર કરીએ?</translation>
@@ -1097,6 +1183,7 @@
 <translation id="6234122620015464377">પ્રત્યેક દસ્તાવેજ પછી ટ્રિમ કરો</translation>
 <translation id="6240447795304464094">Google Payનો લોગો</translation>
 <translation id="6241121617266208201">સૂચનો છુપાવો</translation>
+<translation id="624499991300733384">કમ્પોઝિટર સેવા પ્રિન્ટ કરો</translation>
 <translation id="6251924700383757765">ગોપનીયતા નીતિ</translation>
 <translation id="6254436959401408446">આ પૃષ્ઠ ખોલવા માટે પૂરતી મેમરી નથી</translation>
 <translation id="625755898061068298">તમે આ સાઇટ માટે સુરક્ષા ચેતવણીઓ બંધ કરવાનું પસંદ કર્યું છે.</translation>
@@ -1183,6 +1270,7 @@
 <translation id="6604181099783169992">મોશન અથવા લાઇટ સેન્સર</translation>
 <translation id="6609880536175561541">Prc7 (એન્વલપ)</translation>
 <translation id="6612358246767739896">સુરક્ષિત કન્ટેન્ટ</translation>
+<translation id="6615297766614333076">સ્ટૅકર 2</translation>
 <translation id="6624427990725312378">સંપર્ક માહિતી</translation>
 <translation id="6626291197371920147">માન્ય કાર્ડ નંબર ઉમેરો</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> શોધ</translation>
@@ -1198,6 +1286,8 @@
 <translation id="6670613747977017428">સુરક્ષા પર પાછા.</translation>
 <translation id="6671697161687535275">Chromium માંથી ફોર્મ સૂચન દૂર કરીએ?</translation>
 <translation id="6685834062052613830">સાઇન આઉટ કરો અને સેટઅપ પૂર્ણ કરો</translation>
+<translation id="6687335167692595844">ફોન્ટના કદ માટે વિનંતી કરી</translation>
+<translation id="6689249931105087298">કાળા પૉઇન્ટને નાનો કરવા સંબંધિત</translation>
 <translation id="6689271823431384964">તમે સાઇન ઇન કરેલું છે તેથી Chrome તમને તમારા કાર્ડ તમારા Google એકાઉન્ટમાં સાચવવાની ઑફર કરે છે. તમે સેટિંગમાં આ વર્તણૂકને બદલી શકો છો. કાર્ડધારકનું નામ તમારા એકાઉન્ટમાંથી આવે છે.</translation>
 <translation id="6704582573942289642">શું આ યોગ્ય સાઇટ છે?</translation>
 <translation id="6710213216561001401">પાછલી</translation>
@@ -1243,6 +1333,7 @@
 <translation id="6964255747740675745">નેટવર્કની ગોઠવણી વિશ્લેષિત થવામાં નિષ્ફળ રહી (અમાન્ય JSON).</translation>
 <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation>
 <translation id="6965978654500191972">ઉપકરણ</translation>
+<translation id="696703987787944103">પરસેપચ્યુઅલ</translation>
 <translation id="6970216967273061347">જિલ્લો</translation>
 <translation id="6973656660372572881">ફિક્સ્ડ પ્રૉક્સી સર્વર અને .pac script URL બન્નેનો ઉલ્લેખ કરેલો છે.</translation>
 <translation id="6973932557599545801">માફ કરશો, હું હવે વધુ સહાય કરી શકીશ નહીં, કૃપા કરીને તમારી રીતે આગળ વધો.</translation>
@@ -1264,6 +1355,7 @@
 <translation id="7075452647191940183">વિનંતી ખૂબ મોટી છે.</translation>
 <translation id="7079718277001814089">આ સાઇટમાં માલવેર છે</translation>
 <translation id="7081308185095828845">તમારા ડિવાઇસમાં આ સુવિધા ઉપલબ્ધ નથી</translation>
+<translation id="7083258188081898530">ટ્રે 9</translation>
 <translation id="7087282848513945231">કાઉન્ટિ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> માટે Google પર શોધો</translation>
 <translation id="7108338896283013870">છુપાવો</translation>
@@ -1275,6 +1367,7 @@
 <translation id="7135130955892390533">સ્ટેટસ બતાવો</translation>
 <translation id="7138472120740807366">વિતરણ પદ્ધતિ</translation>
 <translation id="7139724024395191329">એમિરેટ</translation>
+<translation id="714064300541049402">બાજુ 2 છબીને X અક્ષ પર ખસેડો</translation>
 <translation id="7152423860607593928">નંબર-14 (એન્વલપ)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> વધુ}one{<ph name="PAYMENT_METHOD_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> વધુ}other{<ph name="PAYMENT_METHOD_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> વધુ}}</translation>
 <translation id="7153618581592392745">આછો જાંબલી</translation>
@@ -1293,6 +1386,7 @@
 <translation id="721197778055552897">આ સમસ્યા વિશે <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" />.</translation>
 <translation id="7219179957768738017">કનેક્શન <ph name="SSL_VERSION" /> નો ઉપયોગ કરે છે.</translation>
 <translation id="7220786058474068424">પ્રક્રિયા કરી રહ્યું છે</translation>
+<translation id="7233592378249864828">કન્ફર્મેશન શીટ પ્રિન્ટ કરો</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">સાઇટ આગળ મૉલવેર ધરાવે છે</translation>
 <translation id="724975217298816891">તમારા કાર્ડની વિગતોને અપડેટ કરવા <ph name="CREDIT_CARD" /> માટે સમાપ્તિ તારીખ અને CVC દાખલ કરો. એકવાર તમે ખાતરી કરી લો, તે પછી આ સાઇટ સાથે તમારા કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
@@ -1302,6 +1396,7 @@
 <translation id="725866823122871198"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> પર ખાનગી કનેક્શન સ્થાપિત કરી શકાતું નથી કારણ કે તમારા ઉપકરણની તારીખ અને સમય (<ph name="DATE_AND_TIME" />) અયોગ્ય છે.</translation>
 <translation id="7260504762447901703">ઍક્સેસ રદબાતલ કરો</translation>
 <translation id="7275334191706090484">સંચાલિત બુકમાર્ક્સ</translation>
+<translation id="7292031607255951991">પ્રાપ્તકર્તાનું નામ</translation>
 <translation id="7298195798382681320">ભલામણ કરેલ</translation>
 <translation id="7300012071106347854">ઘેરો વાદળી</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1379,6 +1474,7 @@
 <translation id="7569983096843329377">શ્યામ</translation>
 <translation id="7575207903026901870">સૂચન કાઢી નાખો બટન, આ સૂચન કાઢી નાખવા માટે Enter દબાવો</translation>
 <translation id="7578104083680115302">તમે Google સાથે સાચવ્યાં છે તે કાર્ડ્સનો ઉપયોગ કરીને સમગ્ર ઉપકરણોમાં સાઇટ્સ અને ઍપ્લિકેશનો પર ઝડપથી ચુકવણી કરો.</translation>
+<translation id="7581199239021537589">બાજુ 2 છબીને Y અક્ષ પર ખસેડો</translation>
 <translation id="7592362899630581445">સર્વરનું પ્રમાણપત્ર, નામ નિગ્રહોનું ઉલ્લંઘન કરે છે.</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" /> કરતા ઓછું</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" />, હાલમાં આ વિનંતીને હેન્ડલ કરવામાં અસમર્થ છે.</translation>
@@ -1386,10 +1482,13 @@
 <translation id="7610193165460212391">મૂલ્ય <ph name="VALUE" /> શ્રેણી બહારનું છે.</translation>
 <translation id="7613889955535752492">સમાપ્તિ: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">તમારી પાસે પેહલાથી જ ડેટા છે જે તમારા Google એકાઉન્ટ પાસવર્ડના વિવિધ વર્ઝનનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરેલો છે.</translation>
+<translation id="7619838219691048931">છેલ્લી શીટ</translation>
+<translation id="762844065391966283">એક સમયે માત્ર એક</translation>
 <translation id="7633909222644580952">કાર્યપ્રદર્શન ડેટા અને ક્રૅશ રિપોર્ટ</translation>
 <translation id="7637571805876720304">Chromium માંથી ક્રેડિટ કાર્ડ દૂર કરીએ?</translation>
 <translation id="7638605456503525968">સીરિયલ પોર્ટ</translation>
 <translation id="7639968568612851608">ઘાટો ગ્રે</translation>
+<translation id="7647206758853451655">પ્રિન્ટની ક્વૉલિટી</translation>
 <translation id="7653957176542370971">ચુકવણી માટેની હૅન્ડલર શીટ બંધ છે</translation>
 <translation id="765676359832457558">વિગતવાર સેટિંગ્સ છુપાવો...</translation>
 <translation id="7658239707568436148">રદ કરો</translation>
@@ -1398,10 +1497,13 @@
 <translation id="7667346355482952095">પરત કરવાની નીતિનું ટોકન ખાલી છે અથવા વર્તમાન ટોકન સાથે મેળ ખાતું નથી</translation>
 <translation id="7668654391829183341">અજ્ઞાત ઉપકરણ</translation>
 <translation id="7669271284792375604">આ સાઇટ પરના હુમલાખોરો તમને તમારા બ્રાઉઝિંગ અનુભવને નુકસાન પહોંચાડે એવા પ્રોગ્રામ્સ ઇન્સ્ટૉલ કરવા માટે છેતરવાનો પ્રયાસ કરી શકે છે (ઉદાહરણ તરીકે, તમારું હોમપેજ બદલીને અથવા તમે મુલાકાત લો છો તે સાઇટ્સ પર વધુ પડતી જાહેરાતો બતાવીને).</translation>
+<translation id="7673278391011283842">મેઇલબૉક્સ 6</translation>
 <translation id="7676643023259824263">ક્લિપબોર્ડ ટેક્સ્ટમાંથી શોધો, <ph name="TEXT" /></translation>
 <translation id="7681101578153515023">સર્ચ એંજિન બદલો</translation>
 <translation id="7682287625158474539">શિપિંગ</translation>
 <translation id="7687186412095877299">તમારી સાચવેલી ચુકવણી પદ્ધતિઓ વડે ચુકવણી ફૉર્મ ભરે છે</translation>
+<translation id="7687305263118037187">ફરી પ્રયાસ માટે સમયસમાપ્તિ</translation>
+<translation id="7693583928066320343">પેજનો ક્રમ મળ્યો છે</translation>
 <translation id="7697066736081121494">Prc8 (એન્વલપ)</translation>
 <translation id="769721561045429135">હમણાં, તમારી પાસે જે કાર્ડ છે તેનો માત્ર આ ડિવાઇસ પર ઉપયોગ કરી શકાય છે. કાર્ડને રિવ્યૂ કરવા માટે 'ચાલુ રાખો' પર ક્લિક કરો.</translation>
 <translation id="7699293099605015246">લેખો અત્યારે ઉપલબ્ધ નથી</translation>
@@ -1420,7 +1522,9 @@
 <translation id="7761701407923456692">સર્વરનું પ્રમાણપત્ર URL સાથે મેળ ખાતું નથી.</translation>
 <translation id="7763386264682878361">ચુકવણી મેનિફેસ્ટ વિશ્લેષક</translation>
 <translation id="7764225426217299476">સરનામું ઉમેરો</translation>
+<translation id="7766518757692125295">સ્કર્ટ</translation>
 <translation id="7770259615151589601">નિર્દિષ્ટ-લાંબું</translation>
+<translation id="7773005668374414287">ઉપર તરફ તે જ ક્રમમાં</translation>
 <translation id="777702478322588152">પ્રીફેચર</translation>
 <translation id="7791196057686275387">ગાંસળી બનાવો</translation>
 <translation id="7791543448312431591">ઉમેરો</translation>
@@ -1438,9 +1542,11 @@
 <translation id="785549533363645510">જોકે, તમે અદૃશ્ય નથી. છુપામાં જવું તમારા નિયોક્તા, તમારા ઇન્ટરનેટ સેવા પ્રદાતા અથવા તમે મુલાકાત લો છો તે વેબસાઇટથી તમારા બ્રાઉઝિંગને છુપાવતું નથી.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">સાઇટ છોડવી છે?</translation>
+<translation id="7865448901209910068">શ્રેષ્ઠ ઝડપ</translation>
 <translation id="7878562273885520351">તમારા પાસવર્ડ સાથે ચેડાં થઈ શકે છે</translation>
 <translation id="7882421473871500483">ભૂરો</translation>
 <translation id="7887683347370398519">તમારું CVC તપાસો અને ફરીથી પ્રયાસ કરો</translation>
+<translation id="7888575728750733395">પ્રિન્ટ રેન્ડર કરવાનું ઇન્ટેન્ટ</translation>
 <translation id="7904208859782148177">C3 (એન્વલપ)</translation>
 <translation id="7932579305932748336">કોટ કરો</translation>
 <translation id="79338296614623784">એક માન્ય ફોન નંબર દાખલ કરો</translation>
@@ -1455,6 +1561,8 @@
 <translation id="7953569069500808819">ઉપર કિનારી જોડવી</translation>
 <translation id="7956713633345437162">મોબાઇલ બુકમાર્ક્સ</translation>
 <translation id="7961015016161918242">ક્યારેય નહીં</translation>
+<translation id="7966803981046576691">જોબ એકાઉન્ટનો પ્રકાર</translation>
+<translation id="7977538094055660992">આઉટપુટ ડિવાઇસ</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">જોડો</translation>
 <translation id="7995512525968007366">નિર્દિષ્ટ કરાયેલ નથી</translation>
@@ -1512,6 +1620,7 @@
 <translation id="8221250263817408492">હમણાં જ કોઈ છેતરામણી સાઇટ પર તમે તમારો પાસવર્ડ દાખલ કર્યો. Chromium <ph name="WEBSITE_1" /> તેમજ તમે આ પાસવર્ડનો જ્યાં ઉપયોગ કરતા હોય તે અન્ય સાઇટ પર જઈને તેને હમણાં જ બદલવાનો સુઝાવ આપે છે.</translation>
 <translation id="8225771182978767009">આ કમ્પ્યુટરને સેટ કરનાર વ્યક્તિએ આ સાઇટને અવરોધિત કરવાનું પસંદ કર્યું છે.</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">પ્લૅટફૉર્મનું તાપમાન</translation>
 <translation id="8238581221633243064">એક નવી છુપી વિંડોમાં પેજ ખોલો</translation>
 <translation id="8241707690549784388">તમારા દ્વારા દાખલ કરાયેલી વપરાયેલી માહિતી માટે આ પાનું તમે જોઈ રહ્યા છો. તે પૃષ્ઠ પર પાછા જવાથી એવી કોઈપણ ક્રિયા ફરીથી થઈ શકે છે જે તમે પહેલા કરી હતી. શું તમે ચાલુ રાખવા માંગો છો?</translation>
 <translation id="8241712895048303527">આ સાઇટ પર અવરોધિત કરો</translation>
@@ -1523,6 +1632,7 @@
 <translation id="8261506727792406068">ડિલીટ કરો</translation>
 <translation id="8262952874573525464">નીચે કિનારી જોડવી</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> તરીકે સાઇન ઇન કરી રહ્યાં છે</translation>
+<translation id="8269242089528251720">અલગ દસ્તાવેજો/ગોઠવેલી કૉપિ</translation>
 <translation id="8269981117540303696">હવે તમે ખાનગીમાં બ્રાઉઝ કરી શકો છો અને આ ડિવાઇસનો ઉપયોગ કરતા અન્ય લોકો તમારી પ્રવૃત્તિ જોઇ શકશે નહીં. જો કે, ડાઉનલોડ અને બુકમાર્ક સાચવવામાં આવશે.</translation>
 <translation id="8277900682056760511">ચુકવણી માટેની હૅન્ડલર શીટ ખુલ્લી છે</translation>
 <translation id="8281084378435768645">મોટો-ફોટો</translation>
@@ -1536,6 +1646,7 @@
 <translation id="8307358339886459768">નાનો-ફોટો</translation>
 <translation id="8308427013383895095">નેટવર્ક કનેક્શનમાં સમસ્યાને કારણે ભાષાંતર નિષ્ફળ રહ્યું.</translation>
 <translation id="831207732689920588">આ પેજ શંકાસ્પદ છે (Chrome દ્વારા ચિહ્નિત કરાયું છે).</translation>
+<translation id="831997045666694187">સાંજ</translation>
 <translation id="8332188693563227489"><ph name="HOST_NAME" /> ની ઍક્સેસ નકારાઈ હતી</translation>
 <translation id="833262891116910667">હાઇલાઇટ</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1558,12 +1669,14 @@
 <translation id="8428213095426709021">સેટિંગ્સ</translation>
 <translation id="8433057134996913067">આ તમને મોટાભાગની વેબસાઇટ્સમાંથી સાઇન આઉટ કરશે.</translation>
 <translation id="8437238597147034694">&amp;ખસેડવું પૂર્વવત્‌ કરો</translation>
+<translation id="8457125768502047971">અનિશ્ચિત</translation>
 <translation id="8461694314515752532">તમારા પોતાના સિંક પાસફ્રેઝ સાથે સિંક કરેલા ડેટાને એન્ક્રિપ્ટ કરો</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 ક્રેડિટ કાર્ડ}one{# ક્રેડિટ કાર્ડ}other{# ક્રેડિટ કાર્ડ}}</translation>
 <translation id="8473863474539038330">સરનામા અને વધુ</translation>
 <translation id="8479754468255770962">નીચેની ડાબી બાજુએ સ્ટેપલ લગાવો</translation>
 <translation id="8483780878231876732">તમારા Google એકાઉન્ટમાંથી કાર્ડ્સનો ઉપયોગ કરવા માટે, Chromeમાં સાઇન ઇન કરો</translation>
 <translation id="8488350697529856933">આમને લાગુ</translation>
+<translation id="8490137692873530638">સ્ટૅકર 10</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> એ પ્રતિસાદ આપવા માટે ઘણો સમય લીધો.</translation>
 <translation id="8503559462189395349">Chrome પાસવર્ડ</translation>
 <translation id="8503813439785031346">વપરાશકર્તાનામ</translation>
@@ -1574,10 +1687,12 @@
 <translation id="8553075262323480129">ભાષાંતર નિષ્ફળ રહ્યું કારણ કે પૃષ્ઠની ભાષા નિર્ધારિત થઈ શકી નથી.</translation>
 <translation id="8557066899867184262">CVC તમારા કાર્ડની પાછળ હોય છે.</translation>
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> પર ખાનગી કનેક્શન સ્થાપિત કરી શકાતું નથી કારણ કે તમારા ઉપકરણની તારીખ અને સમય (<ph name="DATE_AND_TIME" />) અયોગ્ય છે.</translation>
+<translation id="8564182942834072828">અલગ દસ્તાવેજો/ગોઠવણી વિનાની કૉપિ</translation>
 <translation id="8564985650692024650">જો તમે અન્ય સાઇટ પર <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> પાસવર્ડનો ફરી ઉપયોગ કર્યો હોય, તો Chromium તેને રીસેટ કરવાનો સુઝાવ આપે છે.</translation>
 <translation id="8571890674111243710">પૃષ્ઠને <ph name="LANGUAGE" /> માં અનુવાદિત કરી રહ્યું છે...</translation>
 <translation id="8574899947864779331">કાર્ડને વધુ ઝડપથી કન્ફર્મ કરવા માટે Touch IDનો ઉપયોગ કરો</translation>
 <translation id="858637041960032120">ફોન નંબર ઉમેરો</translation>
+<translation id="8589998999637048520">શ્રેષ્ઠ ક્વૉલિટી</translation>
 <translation id="860043288473659153">કાર્ડધારકનું નામ</translation>
 <translation id="8616822740383114808">"<ph name="SETTINGS_PAGE" />"માં "<ph name="ENFORCING_SETTING" />" દ્વારા આ સેટિંગ લાગુ કરવામાં આવ્યું છે</translation>
 <translation id="861775596732816396">કદ 4</translation>
@@ -1585,10 +1700,13 @@
 <translation id="8625384913736129811">આ કાર્ડને આ ડિવાઇસમાં સાચવો</translation>
 <translation id="8647750283161643317">બધાને ડિફોલ્ટ પર ફરીથી સેટ કરો</translation>
 <translation id="8663226718884576429">ઑર્ડરનો સારાંશ, <ph name="TOTAL_LABEL" />, વધુ વિગતો</translation>
+<translation id="867224526087042813">સહી</translation>
+<translation id="8676424191133491403">કોઈ વિલંબ વિના</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, જવાબ, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054"><ph name="PAGE" /> પરનું વેબપેજ લોડ કરી શકાયું નથી કારણ કે:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">ઉપલબ્ધ</translation>
+<translation id="868922510921656628">સેટ દીઠ પેજ</translation>
 <translation id="869891660844655955">સમાપ્તિ તારીખ</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" /> સાથેનું તમારું કનેક્શન એન્ક્રિપ્ટેડ નથી.</translation>
 <translation id="8718314106902482036">ચુકવણી પૂર્ણ થઈ નથી</translation>
@@ -1620,8 +1738,10 @@
 <translation id="8866928039507595380">ફોલ્ડ</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">તાજેતરમાં બંધ કરેલા</translation>
+<translation id="8870494189203302833">નીચે તરફ તે જ ક્રમમાં</translation>
 <translation id="8874824191258364635">એક માન્ય કાર્ડ નંબર દાખલ કરો</translation>
 <translation id="8891727572606052622">અમાન્ય પ્રૉક્સી મોડ.</translation>
+<translation id="8894794286471754040">પહેલાં લાંબી કિનારી</translation>
 <translation id="8903921497873541725">ઝૂમ વધારો</translation>
 <translation id="890485472659500557">એન્જિનિયરિંગ-C</translation>
 <translation id="890493561996401738">સૂચન કાઢી નાખો બટન, આ કાઢી નાખવા માટે Enter દબાવો, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1670,6 +1790,7 @@
 <translation id="9080712759204168376">ઑર્ડરનો સારાંશ</translation>
 <translation id="9089260154716455634">બિન-કામકાજી સમય સંબંધી નીતિ:</translation>
 <translation id="9095388113577226029">વધુ ભાષાઓ...</translation>
+<translation id="9101630580131696064">ટ્રે 1</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> સામાન્ય રીતે તમારી માહિતીને સુરક્ષિત રાખવા માટે એન્ક્રિપ્શનનો ઉપયોગ કરે છે. જ્યારે આ સમયે Chromium દ્વારા <ph name="SITE" />થી કનેક્ટ કરવાનો પ્રયાસ થયો, ત્યારે વેબસાઇટે અસામાન્ય અને ખોટા લૉગ ઇન વિગતને પાછા મોકલ્યાં. આવું ત્યારે થઈ શકે જ્યારે કોઈ હુમલાખોર <ph name="SITE" /> હોવાનો ડોળ કરવાનો પ્રયાસ કરી રહ્યો હોવ અથવા કોઈ Wi-Fi સાઇન-ઇન સ્ક્રીને કનેક્શનમાં વિક્ષેપ પાડ્યો હોય. તમારી માહિતી હજી પણ સુરક્ષિત છે કારણ કે Chromium એ કોઈ પણ ડેટા વિનિમય થાય એ પહેલાં જ કનેક્શન રોકી દીધું.</translation>
 <translation id="9106062320799175032">બિલિંગ સરનામું ઉમેરો</translation>
 <translation id="9114524666733003316">કાર્ડ કન્ફર્મ કરી રહ્યાં છીએ...</translation>
@@ -1685,6 +1806,7 @@
 <translation id="9169664750068251925">હંમેશા આ સાઇટ પર અવરોધિત કરો</translation>
 <translation id="9170848237812810038">&amp;પૂર્વવત્ કરો</translation>
 <translation id="9171296965991013597">ઍપ છોડીએ?</translation>
+<translation id="9173282814238175921">માત્ર એક દસ્તાવેજ/નવી શીટ</translation>
 <translation id="917450738466192189">સર્વરનું પ્રમાણપત્ર અમાન્ય છે.</translation>
 <translation id="9174917557437862841">ટૅબ, સ્વિચ બટન, આ ટૅબ પર સ્વિચ કરવા માટે Enter દબાવો</translation>
 <translation id="9183302530794969518">Google દસ્તાવેજ</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index 80c0cb6..9055280 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -136,7 +136,7 @@
 <translation id="1521655867290435174">Google tablice</translation>
 <translation id="1527263332363067270">Čekanje na uspostavu veze…</translation>
 <translation id="1529521330346880926">10x15 (omotnica)</translation>
-<translation id="1529789484829130889">Traka 8</translation>
+<translation id="1529789484829130889">Ladica 8</translation>
 <translation id="1530707389502320859">Web-lokacija koju ste upravo pokušali posjetiti izgleda lažno. Napadači ponekad oponašaju web-lokacije sitnim izmjenama URL-a.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">Na ovoj se stranici navodi sljedeće</translation>
@@ -163,7 +163,7 @@
 <translation id="1639239467298939599">Učitavanje</translation>
 <translation id="1640180200866533862">Korisnička pravila</translation>
 <translation id="1640244768702815859">Pokušajte <ph name="BEGIN_LINK" />otvoriti početnu stranicu web-lokacije<ph name="END_LINK" />.</translation>
-<translation id="1641976391427233992">Odgodi izlaz do</translation>
+<translation id="1641976391427233992">Odgoda izlaza</translation>
 <translation id="1644574205037202324">Povijest</translation>
 <translation id="1645368109819982629">Protokol nije podržan</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -172,13 +172,13 @@
 <translation id="1663943134801823270">Kartice i adrese dolaze iz Chromea. Njima možete upravljati u <ph name="BEGIN_LINK" />Postavkama<ph name="END_LINK" />.</translation>
 <translation id="1671391448414634642">Odsad će se <ph name="SOURCE_LANGUAGE" /> prevoditi na <ph name="TARGET_LANGUAGE" />.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> obično upotrebljava enkripciju radi zaštite vaših podataka. Prilikom ovog pokušaja povezivanja Google Chromea s web-lokacijom <ph name="SITE" /> ta je web-lokacija vratila neuobičajene i netočne vjerodajnice. To može značiti da se neki napadač pokušava predstaviti kao <ph name="SITE" /> ili je zaslon za prijavu na Wi-Fi prekinuo vezu. Vaši su podaci još uvijek sigurni jer je Google Chrome zaustavio povezivanje prije razmjene podataka.</translation>
-<translation id="1682696192498422849">Prvo kratki rub</translation>
+<translation id="1682696192498422849">Najprije kratki rub</translation>
 <translation id="168841957122794586">Certifikat poslužitelja sadrži slab kriptografski ključ!</translation>
 <translation id="1697532407822776718">Potpuno ste spremni!</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Poslužitelj nije mogao dokazati da je to <ph name="DOMAIN" /> jer je sigurnosni certifikat navodno izdan sutra. Razlog može biti pogrešna konfiguracija ili napad na vašu vezu.}one{Poslužitelj nije mogao dokazati da je to <ph name="DOMAIN" /> jer je sigurnosni certifikat navodno izdan # dan u budućnosti. Razlog može biti pogrešna konfiguracija ili napad na vašu vezu.}few{Poslužitelj nije mogao dokazati da je to <ph name="DOMAIN" /> jer je sigurnosni certifikat navodno izdan # dana u budućnosti. Razlog može biti pogrešna konfiguracija ili napad na vašu vezu.}other{Poslužitelj nije mogao dokazati da je to <ph name="DOMAIN" /> jer je sigurnosni certifikat navodno izdan # dana u budućnosti. Razlog može biti pogrešna konfiguracija ili napad na vašu vezu.}}</translation>
 <translation id="1710259589646384581">OS</translation>
-<translation id="1713628304598226412">Traka 2</translation>
+<translation id="1713628304598226412">Ladica 2</translation>
 <translation id="1715874602234207">F</translation>
 <translation id="1717494416764505390">Izlazni spremnik s odjeljcima 3</translation>
 <translation id="1718029547804390981">Dokument je prevelik za dodavanje bilješki</translation>
@@ -245,7 +245,7 @@
 <translation id="2025186561304664664">Proxy je postavljen na automatsko konfiguriranje.</translation>
 <translation id="2030481566774242610">Jeste li mislili <ph name="LINK" />?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />provjerite proxy i vatrozid<ph name="END_LINK" /></translation>
-<translation id="2042213636306070719">Traka 7</translation>
+<translation id="2042213636306070719">Ladica 7</translation>
 <translation id="2053111141626950936">Neće se prevoditi <ph name="LANGUAGE" />.</translation>
 <translation id="2053553514270667976">ZIP kôd</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 prijedlog}one{# prijedlog}few{# prijedloga}other{# prijedloga}}</translation>
@@ -283,7 +283,7 @@
 <translation id="2187317261103489799">Otkrij (zadano)</translation>
 <translation id="2188375229972301266">Višestruko bušenje pri dnu</translation>
 <translation id="2202020181578195191">Unesite važeću godinu isteka</translation>
-<translation id="22081806969704220">Traka 3</translation>
+<translation id="22081806969704220">Ladica 3</translation>
 <translation id="2212735316055980242">Pravilo nije pronađeno</translation>
 <translation id="2213606439339815911">Dohvaćanje unosa...</translation>
 <translation id="2215727959747642672">Uređivanje datoteke</translation>
@@ -479,7 +479,7 @@
 <translation id="3060227939791841287">C9 (omotnica)</translation>
 <translation id="3061707000357573562">Usluga zakrpe</translation>
 <translation id="3064966200440839136">Napuštate anonimni način rada da biste platili putem vanjske aplikacije. Želite li nastaviti?</translation>
-<translation id="3080254622891793721">Grafičko izdanje</translation>
+<translation id="3080254622891793721">Grafika</translation>
 <translation id="3086579638707268289">Vaša se aktivnost na webu nadzire</translation>
 <translation id="3087734570205094154">Donji</translation>
 <translation id="3095940652251934233">Izjava</translation>
@@ -511,7 +511,7 @@
 <translation id="3209034400446768650">Stranica se možda naplaćuje</translation>
 <translation id="3212581601480735796">Prati se vaša aktivnost na web-lokaciji <ph name="HOSTNAME" /></translation>
 <translation id="3215092763954878852">Nije moguće koristiti WebAuthn</translation>
-<translation id="3218181027817787318">Rođak</translation>
+<translation id="3218181027817787318">Relativno</translation>
 <translation id="3225919329040284222">Poslužitelj je pokazao certifikat koji ne odgovara ugrađenim očekivanjima. Ta su očekivanja uključena za određene web-lokacije s visokim stupnjem sigurnosti radi vaše zaštite.</translation>
 <translation id="3226128629678568754">Pritisnite gumb za ponovno učitavanje da biste ponovo poslali podatke koji su potrebni za učitavanje stranice.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
@@ -564,7 +564,7 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" />, trenutačno otvoreno, pritisnite karticu pa Enter za prebacivanje na otvorenu karticu</translation>
 <translation id="3479552764303398839">Ne sada</translation>
 <translation id="3484560055331845446">Mogli biste izgubiti pristup svojem Google računu. Chrome preporučuje da odmah promijenite zaporku. Morat ćete se prijaviti.</translation>
-<translation id="3487845404393360112">Traka 4</translation>
+<translation id="3487845404393360112">Ladica 4</translation>
 <translation id="3495081129428749620">Traži na stranici
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">To se pravilo zanemaruje jer drugo pravilo iz iste grupe pravila ima viši prioritet.</translation>
@@ -577,7 +577,7 @@
 <translation id="3533328374079021623">Izlazni spremnik s odjeljcima 5</translation>
 <translation id="3539171420378717834">Zadrži kopiju te kartice na uređaju</translation>
 <translation id="3553513561058684206">Za vas</translation>
-<translation id="3558573058928565255">Dan vrijeme</translation>
+<translation id="3558573058928565255">Drugi dan</translation>
 <translation id="3566021033012934673">Vaša veza nije privatna</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635">Na ugrađenoj stranici na web-lokaciji <ph name="SITE" /> navodi se sljedeće</translation>
@@ -586,10 +586,10 @@
 <translation id="3583757800736429874">&amp;Ponovi premještanje</translation>
 <translation id="3584299510153766161">Dvostruko bušenje pri dnu</translation>
 <translation id="3586931643579894722">Sakrij detalje</translation>
-<translation id="3587738293690942763">Srednje</translation>
+<translation id="3587738293690942763">Srednji</translation>
 <translation id="3592413004129370115">Italian (omotnica)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
-<translation id="3608932978122581043">Usmjerenje unošenja</translation>
+<translation id="3608932978122581043">Usmjerenje umetanja</translation>
 <translation id="3614103345592970299">Veličina 2</translation>
 <translation id="361438452008624280">Unos na popisu "<ph name="LANGUAGE_ID" />": nepoznati ili nepodržani jezik.</translation>
 <translation id="3615877443314183785">Unesite važeći datum isteka</translation>
@@ -597,7 +597,7 @@
 <translation id="362276910939193118">Pokaži cijelu povijest</translation>
 <translation id="3630155396527302611">Ako je već navedena kao program koji smije pristupiti mreži, pokušajte je ukloniti s popisa pa je ponovo dodati.</translation>
 <translation id="3631244953324577188">Biometrijski podaci</translation>
-<translation id="3634530185120165534">Traka 5</translation>
+<translation id="3634530185120165534">Ladica 5</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">Valjanost je uspješna</translation>
 <translation id="3655670868607891010">Ako se to često događa, pokušajte <ph name="HELP_LINK" />.</translation>
@@ -650,7 +650,7 @@
 <translation id="3808375843007691220">Upozorenje: pristupate eksperimentalnim značajkama!</translation>
 <translation id="3810973564298564668">Upravljaj</translation>
 <translation id="382518646247711829">Ako upotrebljavate proxy poslužitelj...</translation>
-<translation id="3827112369919217609">Pozitiv</translation>
+<translation id="3827112369919217609">Apsolutno</translation>
 <translation id="3828924085048779000">Prazne zaporke nisu dopuštene.</translation>
 <translation id="3831915413245941253">Domena <ph name="ENROLLMENT_DOMAIN" /> instalirala je proširenja za dodatne funkcije. Proširenja imaju pristup nekim vašim podacima.</translation>
 <translation id="3832522519263485449">Višestruko bušenje s lijeve strane</translation>
@@ -709,7 +709,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 druga stavka}one{# druga stavka}few{# druge stavke}other{# drugih stavki}}</translation>
 <translation id="4130226655945681476">provjerite mrežne kabele, modem i usmjerivač</translation>
 <translation id="413544239732274901">Saznajte više</translation>
-<translation id="4142935452406587478">Traka 10</translation>
+<translation id="4142935452406587478">Ladica 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">Upotrijebi globalnu zadanu postavku (Otkrij)</translation>
 <translation id="4159784952369912983">Ljubičasto</translation>
@@ -811,7 +811,7 @@
 <translation id="4522570452068850558">Detalji</translation>
 <translation id="4524138615196389145">Odsad brže potvrdite kartice upotrebom značajke WebAuthn</translation>
 <translation id="4524805452350978254">Upravljanje karticama</translation>
-<translation id="4542971377163063093">Traka 6</translation>
+<translation id="4542971377163063093">Ladica 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
 <translation id="4558551763791394412">Pokušajte onemogućiti proširenja.</translation>
@@ -837,7 +837,7 @@
 <translation id="4690462567478992370">Prestani upotrebljavati nevažeći certifikat</translation>
 <translation id="4691835149146451662">Architecture-A (omotnica)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
-<translation id="4702504834785592287">Strana</translation>
+<translation id="4702504834785592287">Bočni</translation>
 <translation id="4708268264240856090">Veza je prekinuta</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />pokrenuti Mrežnu dijagnostiku sustava Windows<ph name="END_LINK" /></translation>
@@ -867,7 +867,7 @@
 <translation id="4807049035289105102">Trenutačno ne možete posjetiti <ph name="SITE" /> jer je web-lokacija poslala kodirane vjerodajnice koje Google Chrome ne može obraditi. Mrežne pogreške i napadi uglavnom su privremeni, tako da će ta stranica vjerojatno kasnije funkcionirati.</translation>
 <translation id="4813512666221746211">Pogreška mreže</translation>
 <translation id="4816492930507672669">Prilagodi stranici</translation>
-<translation id="484462545196658690">Auto</translation>
+<translation id="484462545196658690">Automatski</translation>
 <translation id="4850886885716139402">Prikaz</translation>
 <translation id="4854362297993841467">Taj način dostave nije dostupan. Pokušajte s nekim drugim načinom.</translation>
 <translation id="4876188919622883022">Pojednostavljeni prikaz</translation>
@@ -877,7 +877,7 @@
 <translation id="4879491255372875719">Automatski (zadano)</translation>
 <translation id="4880827082731008257">Pretraži povijest</translation>
 <translation id="4881695831933465202">Otvori</translation>
-<translation id="4892518386797173871">Stražnji dio</translation>
+<translation id="4892518386797173871">Stražnji</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">Spremi...</translation>
 <translation id="4913987521957242411">Bušenje pri vrhu lijevo</translation>
@@ -1128,7 +1128,7 @@
 <translation id="5975083100439434680">Smanji</translation>
 <translation id="5979084224081478209">Provjeri zaporke</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
-<translation id="5984570616552610254">Vlaga komore</translation>
+<translation id="5984570616552610254">Vlažnost komore</translation>
 <translation id="598637245381783098">Aplikacija za plaćanje ne može se otvoriti</translation>
 <translation id="5989320800837274978">Nisu određeni fiksni proxy poslužitelji ni URL .pac skripte.</translation>
 <translation id="5990559369517809815">Zahtjevi poslužitelju blokirani su proširenjem.</translation>
@@ -1358,7 +1358,7 @@
 <translation id="7075452647191940183">Zahtjev je prevelik</translation>
 <translation id="7079718277001814089">Ova web-lokacija sadrži zlonamjerni softver</translation>
 <translation id="7081308185095828845">Ta značajka nije dostupna na vašem uređaju</translation>
-<translation id="7083258188081898530">Traka 9</translation>
+<translation id="7083258188081898530">Ladica 9</translation>
 <translation id="7087282848513945231">Država</translation>
 <translation id="7090678807593890770">Potražite upit <ph name="LINK" /> na Googleu</translation>
 <translation id="7108338896283013870">Sakrij preglednik</translation>
@@ -1525,7 +1525,7 @@
 <translation id="7761701407923456692">Certifikat poslužitelja ne podudara se s URL-om.</translation>
 <translation id="7763386264682878361">Raščlanjivač manifesta za plaćanje</translation>
 <translation id="7764225426217299476">Dodaj adresu</translation>
-<translation id="7766518757692125295">Rub</translation>
+<translation id="7766518757692125295">Ivica</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
 <translation id="7773005668374414287">Istim redoslijedom prema gore</translation>
 <translation id="777702478322588152">Prefektura</translation>
@@ -1794,7 +1794,7 @@
 <translation id="9080712759204168376">Sažetak narudžbe</translation>
 <translation id="9089260154716455634">Pravilo za prekid rada:</translation>
 <translation id="9095388113577226029">Više jezika...</translation>
-<translation id="9101630580131696064">Traka 1</translation>
+<translation id="9101630580131696064">Ladica 1</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> obično upotrebljava enkripciju radi zaštite vaših podataka. Prilikom ovog pokušaja povezivanja Chromiuma s web-lokacijom <ph name="SITE" /> ta je web-lokacija vratila neuobičajene
 i netočne vjerodajnice. To može značiti da se neki napadač pokušava predstaviti kao <ph name="SITE" /> ili je zaslon za prijavu na Wi-Fi prekinuo vezu. Vaši su podaci još uvijek sigurni jer je Chromium zaustavio povezivanje prije razmjene podataka.</translation>
 <translation id="9106062320799175032">Dodajte adresu za naplatu</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index bd0868544..cf8dae32 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -4,7 +4,7 @@
 <translation id="1008557486741366299">Հիմա չէ</translation>
 <translation id="1010200102790553230">Էջը բեռնել ավելի ուշ</translation>
 <translation id="1015730422737071372">Տրամադրել լրացուցիչ տեղեկություններ</translation>
-<translation id="1019413721762100891">ԱՆՋԱՏ</translation>
+<translation id="1019413721762100891">Անջատ</translation>
 <translation id="1021110881106174305">Քարտեր, որոնցով կարելի է վճարել</translation>
 <translation id="1021753677514347426">Այս խնդիրը կարող է առաջանալ հավաստագրի պատճառով, որը դուք կամ ինչ-որ մեկը տեղադրել եք ձեր սարքում։ Հավաստագիրն օգտագործվում է ցանցեր որսալու ու հետագծելու նպատակով։ Այն վստահելի չէ Chromium-ի համար։ Թեև լինում են օրինական հետագծման դեպքեր, օրինակ՝ դպրոցի կամ ընկերության ցանցում, Chromium-ին անհրաժեշտ է համոզվել, որ դուք գիտեք այդ մասին, նույնիսկ եթե չեք կարող դադարեցնել դա։ Հետագծումը կարող է իրականացվել ցանկացած դիտարկիչում կամ հավելվածում, որին հասանելի է համացանցը։</translation>
 <translation id="1032854598605920125">Պտտել ժամացույցի սլաքի ուղղությամբ</translation>
@@ -966,7 +966,7 @@
 <translation id="5250209940322997802">«Միացեք ցանցին»</translation>
 <translation id="5251803541071282808">Ամպ</translation>
 <translation id="5252000469029418751">C7 (ծրար)</translation>
-<translation id="5254043433801397071">Օպտիմալացնել տպման համար բովանդակությունը</translation>
+<translation id="5254043433801397071">Օպտիմալացնել տպվելիք բովանդակությունը</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">Վճարումը կատարված է</translation>
 <translation id="5266128565379329178">Ամրակար վերևում</translation>
@@ -1117,7 +1117,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (համաժամացված)</translation>
 <translation id="59174027418879706">Միացված</translation>
 <translation id="5919090499915321845">B10</translation>
-<translation id="5921185718311485855">ՄԻԱՑ</translation>
+<translation id="5921185718311485855">Միաց</translation>
 <translation id="5921639886840618607">Պահե՞լ քարտը Google հաշվում</translation>
 <translation id="5922853866070715753">Գրեթե պատրաստ է</translation>
 <translation id="5932224571077948991">Կայքը հոգնեցնող կամ մոլորեցնող գովազդ է ցուցադրում</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index b21509b..987e827 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -194,7 +194,7 @@
 <translation id="1743520634839655729">Per pagare più velocemente la prossima volta, salva la carta e l'indirizzo di fatturazione sul tuo Account Google e su questo dispositivo.</translation>
 <translation id="1743570585616704562">Non riconosciuta</translation>
 <translation id="1745880797583122200">Il browser in uso è gestito</translation>
-<translation id="1746113442205726301">Turno Y immagine</translation>
+<translation id="1746113442205726301">Spostamento Y immagine</translation>
 <translation id="17513872634828108">Schede aperte</translation>
 <translation id="1752021286346845558">Mailbox 8</translation>
 <translation id="1753706481035618306">Numero di pagina</translation>
@@ -643,7 +643,7 @@
 <translation id="3789155188480882154">Dimensione 16</translation>
 <translation id="3797522431967816232">Prc3 (Envelope)</translation>
 <translation id="3799805948399000906">Nome carattere richiesto</translation>
-<translation id="3807366285948165054">Turno X immagine</translation>
+<translation id="3807366285948165054">Spostamento X immagine</translation>
 <translation id="3807873520724684969">Contenuti dannosi bloccati.</translation>
 <translation id="3808375843007691220">Avviso: funzioni sperimentali da qui in avanti.</translation>
 <translation id="3810973564298564668">Gestisci</translation>
@@ -692,7 +692,7 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">L'impostazione della configurazione proxy prevede l'utilizzo di un URL script .pac, non di server proxy fissi.</translation>
 <translation id="4082393374666368382">Impostazioni - Gestione</translation>
-<translation id="4088981014127559358">Lato 1 turno Y immagine</translation>
+<translation id="4088981014127559358">Spostamento Y lato 1 immagine</translation>
 <translation id="4098354747657067197">Sito ingannevole in vista</translation>
 <translation id="4101413244023615925">Testo e grafica</translation>
 <translation id="4103249731201008433">Il numero di serie del dispositivo non è valido</translation>
@@ -1057,7 +1057,7 @@
 <translation id="5632627355679805402">I tuoi dati sono stati criptati con la tua <ph name="BEGIN_LINK" />password Google<ph name="END_LINK" /> in data <ph name="TIME" />. Inserisci la password per avviare la sincronizzazione.</translation>
 <translation id="5633066919399395251">Gli utenti malintenzionati attualmente presenti sul sito <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> potrebbero cercare di installare sul tuo computer programmi pericolosi che carpiscono o eliminano le tue informazioni (ad esempio, foto, password, messaggi e carte di credito). <ph name="BEGIN_LEARN_MORE_LINK" />Ulteriori informazioni<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">Contenuti ingannevoli bloccati.</translation>
-<translation id="5644090287519800334">Lato 1 turno X immagine</translation>
+<translation id="5644090287519800334">Spostamento X lato 1 immagine</translation>
 <translation id="5645854190134202180">Secondo turno</translation>
 <translation id="5659593005791499971">Email</translation>
 <translation id="5663614846592581799">9x11 (Envelope)</translation>
@@ -1367,7 +1367,7 @@
 <translation id="7135130955892390533">Mostra stato</translation>
 <translation id="7138472120740807366">Metodo di consegna</translation>
 <translation id="7139724024395191329">Emirato</translation>
-<translation id="714064300541049402">Lato 2 immagine X turno</translation>
+<translation id="714064300541049402">Spostamento X lato 2 immagine</translation>
 <translation id="7152423860607593928">Number-14 (Envelope)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> e <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> altro}other{<ph name="PAYMENT_METHOD_PREVIEW" /> e altri <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Lavanda</translation>
@@ -1474,7 +1474,7 @@
 <translation id="7569983096843329377">Nero</translation>
 <translation id="7575207903026901870">Rimuovi il pulsante Suggerimento, premi INVIO per rimuovere questo suggerimento</translation>
 <translation id="7578104083680115302">Paga velocemente su siti e app su più dispositivi utilizzando le carte salvate su Google.</translation>
-<translation id="7581199239021537589">Lato 2 turno Y immagine</translation>
+<translation id="7581199239021537589">Spostamento Y lato 2 immagine</translation>
 <translation id="7592362899630581445">Il certificato del server vìola i vincoli relativi ai nomi.</translation>
 <translation id="7598391785903975535">Meno di <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> al momento non è in grado di gestire la richiesta.</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index f1f237b..76644a2 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -71,7 +71,7 @@
 <translation id="1263231323834454256">Оқу тізімі</translation>
 <translation id="1264126396475825575">Жаңылыс туралы есеп жасалған уақыты: <ph name="CRASH_TIME" /> (әлі жүктеп салынбаған немесе еленбеген)</translation>
 <translation id="1270502636509132238">Таңдау әдісі</translation>
-<translation id="1281476433249504884">Жинастырушы 1</translation>
+<translation id="1281476433249504884">1-жинастырушы</translation>
 <translation id="1285320974508926690">Бұл сайтты ешқашан аудармау</translation>
 <translation id="1285400217480592994">Chrome браузерінде жүктеп алған не салған файлдардың мазмұнын тексеріңіз.</translation>
 <translation id="1292701964462482250">"Компьютердегі бағдарламалық құрал Chrome жүйесінің интернетке қауіпсіз қосылуына жол бермей тұр" (тек Windows компьютерлерінде)</translation>
@@ -113,7 +113,7 @@
 <translation id="1408787208417187241">Жоғарғы жағын үш рет қапсыру</translation>
 <translation id="1413809658975081374">Құпиялылық қатесі</translation>
 <translation id="1426410128494586442">Иә</translation>
-<translation id="1428146450423315676">Жинастырушы 7</translation>
+<translation id="1428146450423315676">7-жинастырушы</translation>
 <translation id="1430915738399379752">Басып шығару</translation>
 <translation id="1442386063175183758">Оң жағын қақпа тәрізді бүктеу</translation>
 <translation id="1442987760062738829">Тесу</translation>
@@ -136,7 +136,7 @@
 <translation id="1521655867290435174">Google Sheets</translation>
 <translation id="1527263332363067270">Желіге қосылуда…</translation>
 <translation id="1529521330346880926">10x15 (Envelope)</translation>
-<translation id="1529789484829130889">Науа 8</translation>
+<translation id="1529789484829130889">8-науа</translation>
 <translation id="1530707389502320859">Жаңа ғана кірген сайт жалған сияқты. Кейде хакерлер белгілі бір сайттарды көшіріп, олардың URL сілтемесіне сіз байқамайтын өзгерістер енгізіп қояды.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">Бұл беттегі сұрау</translation>
@@ -178,9 +178,9 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Бұл сервер өзінің <ph name="DOMAIN" /> екендігін дәлелдей алмады; оның қауіпсіздік сертификаты ертеңнен басталатын сияқты. Бұл дұрыс конфигурацияланбағаннан немесе зиянды бағдарламаның байланысқа кедергі келтіруінен болуы мүмкін.}other{Бұл сервер өзінің <ph name="DOMAIN" /> екендігін дәлелдей алмады; оның қауіпсіздік сертификаты # күн өткеннен кейін басталатын сияқты. Бұл дұрыс конфигурацияланбағаннан немесе зиянды бағдарламаның байланысқа кедергі келтіруінен болуы мүмкін.}}</translation>
 <translation id="1710259589646384581">ОЖ</translation>
-<translation id="1713628304598226412">Науа 2</translation>
+<translation id="1713628304598226412">2-науа</translation>
 <translation id="1715874602234207">F</translation>
-<translation id="1717494416764505390">Пошта жәшігі 3</translation>
+<translation id="1717494416764505390">3-ші пошта жәшігі</translation>
 <translation id="1718029547804390981">Аннотация қосуға құжат өлшемі өте үлкен.</translation>
 <translation id="1721424275792716183">* Өріс толтырылуы қажет</translation>
 <translation id="1727741090716970331">Дұрыс карта нөмірін енгізу</translation>
@@ -196,7 +196,7 @@
 <translation id="1745880797583122200">Браузеріңіз басқарылады.</translation>
 <translation id="1746113442205726301">Кескіннің Y осі бойынша ығысуы</translation>
 <translation id="17513872634828108">Ашық қойындылар</translation>
-<translation id="1752021286346845558">Пошта жәшігі 8</translation>
+<translation id="1752021286346845558">8-ші пошта жәшігі</translation>
 <translation id="1753706481035618306">Бет нөмірі</translation>
 <translation id="1763864636252898013">Бұл сервер оның <ph name="DOMAIN" /> екендігін дәлелдей алмайды; оның қауіпсіздік сертификаты құрылғының операциялық жүйесі арқылы тексерілмеген. Бұған конфигурация ақаулығы немесе қаскүнемнің қосылымыңызды тоқтатуы себеп болуы мүмкін.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Windows Network Diagnostics құралын пайдаланып көріңіз<ph name="END_LINK" />.</translation>
@@ -235,7 +235,7 @@
 <translation id="1973335181906896915">Сериалау қатесі</translation>
 <translation id="1974060860693918893">Қосымша</translation>
 <translation id="1974883374937189061">Сіз <ph name="BEGIN_WHITEPAPER_LINK" />кірген кейбір беттердің URL сілтемелерін, жүйе туралы шектеулі ақпаратты және беттің кейбір мазмұнын<ph name="END_WHITEPAPER_LINK" /> Google-ға жіберу арқылы Chrome браузерінің қауіпсіздігін күшейтуге көмектесіңіз. <ph name="PRIVACY_PAGE_LINK" /></translation>
-<translation id="1975584088563498795">Пошта жәшігі 10</translation>
+<translation id="1975584088563498795">10-шы пошта жәшігі</translation>
 <translation id="1978555033938440688">Микробағдарлама нұсқасы</translation>
 <translation id="1981206234434200693">Chrome браузерінің тарихын тазалау</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -245,7 +245,7 @@
 <translation id="2025186561304664664">Прокси автоматты конфигурациялануға орнатылды.</translation>
 <translation id="2030481566774242610"><ph name="LINK" /> сілтемесі болар?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Прокси және брандмауэр конфигурациясын тексеріп көріңіз<ph name="END_LINK" /></translation>
-<translation id="2042213636306070719">Науа 7</translation>
+<translation id="2042213636306070719">7-науа</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> тіліндегі беттер аударылмайды.</translation>
 <translation id="2053553514270667976">Пошта индексі</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 ұсыныс}other{# ұсыныс}}</translation>
@@ -283,7 +283,7 @@
 <translation id="2187317261103489799">Анықтау (әдепкі)</translation>
 <translation id="2188375229972301266">Төменгі жағын бірнеше рет тесу</translation>
 <translation id="2202020181578195191">Дұрыс жарамдылық мерзімі аяқталатын жылды енгізіңіз</translation>
-<translation id="22081806969704220">Науа 3</translation>
+<translation id="22081806969704220">3-науа</translation>
 <translation id="2212735316055980242">Саясат табылмады</translation>
 <translation id="2213606439339815911">Жазбалар алынуда…</translation>
 <translation id="2215727959747642672">Файлды өңдеу</translation>
@@ -563,7 +563,7 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" /> қазір ашық, ашық қойындыға ауысу үшін Tab, одан кейін Enter пернесін басыңыз.</translation>
 <translation id="3479552764303398839">Қазір емес</translation>
 <translation id="3484560055331845446">Google есептік жазбаңызға кіре алмай қалуыңыз мүмкін. Chrome браузері құпия сөзді қазір өзгертуге кеңес береді. Сонан соң есептік жазбаға кіру сұралады.</translation>
-<translation id="3487845404393360112">Науа 4</translation>
+<translation id="3487845404393360112">4-науа</translation>
 <translation id="3495081129428749620"><ph name="PAGE_TITLE" />
 бетінен табу</translation>
 <translation id="3512163584740124171">Бұл саясат еленбейді, себебі дәл сол саясаттар тобындағы басқа бір саясаттың басымдығы жоғары болып тұр.</translation>
@@ -573,7 +573,7 @@
 <translation id="3528485271872257980">Қою қоңыр</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{синхрондалған құрылғыларда кемінде 1 элемент}=1{1 элемент (синхрондалған құрылғыларда тағы бар)}other{# элемент (синхрондалған құрылғыларда тағы бар)}}</translation>
 <translation id="3531780078352352885">Тапсырма парақтары</translation>
-<translation id="3533328374079021623">Пошта жәшігі 5</translation>
+<translation id="3533328374079021623">5-ші пошта жәшігі</translation>
 <translation id="3539171420378717834">Бұл картаның көшірмесін осы құрылғыда сақтау</translation>
 <translation id="3553513561058684206">Сізге арналған</translation>
 <translation id="3558573058928565255">Күн, уақыт</translation>
@@ -597,7 +597,7 @@
 <translation id="3630155396527302611">Ол желіге кіруге рұқсат алған бағдарламалар тізімінде тұрса, оны
       тізімнен өшіріп, қайта қосып көріңіз.</translation>
 <translation id="3631244953324577188">Биометрика</translation>
-<translation id="3634530185120165534">Науа 5</translation>
+<translation id="3634530185120165534">5-науа</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">Тексеру сәтті аяқталды</translation>
 <translation id="3655670868607891010">Бұны жиі көрсеңіз, <ph name="HELP_LINK" /> сілтемесін пайдаланып көріңіз.</translation>
@@ -636,7 +636,7 @@
 <translation id="3760561303380396507">CVC орнына Windows Hello қолданасыз ба?</translation>
 <translation id="3761718714832595332">Күйін жасыру</translation>
 <translation id="3765032636089507299">Қауіпсіз шолу беті жасақталу үстінде.</translation>
-<translation id="3765588406864124894">Пошта жәшігі 9</translation>
+<translation id="3765588406864124894">9-шы пошта жәшігі</translation>
 <translation id="3778403066972421603">Бұл карта осы құрылғыдағы Google есептік жазбасына сақталсын ба?</translation>
 <translation id="3780694243617746492">Шығу деректері</translation>
 <translation id="3781428340399460090">Қою алқызыл</translation>
@@ -659,7 +659,7 @@
 <translation id="3884278016824448484">Мұндай құрылғы идентификаторы бұрыннан бар</translation>
 <translation id="3885155851504623709">Округ</translation>
 <translation id="388632593194507180">Бақыланып жатқаны анықталды</translation>
-<translation id="3886948180919384617">Жинастырушы 3</translation>
+<translation id="3886948180919384617">3-жинастырушы</translation>
 <translation id="3890664840433101773">Электрондық пошта мекенжайын енгізу</translation>
 <translation id="3897092660631435901">Мәзір</translation>
 <translation id="3901925938762663762">Картаның мерзімі өткен</translation>
@@ -709,7 +709,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{тағы 1}other{тағы #}}</translation>
 <translation id="4130226655945681476">Желі кабельдерін, модем және роутерді тексеру</translation>
 <translation id="413544239732274901">Толығырақ</translation>
-<translation id="4142935452406587478">Науа 10</translation>
+<translation id="4142935452406587478">10-науа</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">Ғаламдық әдепкі мәнді пайдалану (анықтау)</translation>
 <translation id="4159784952369912983">Күлгін</translation>
@@ -752,7 +752,7 @@
 <translation id="4258748452823770588">Қолтаңба жарамсыз</translation>
 <translation id="4261046003697461417">Қорғалған құжаттарға аннотация қосу мүмкін емес.</translation>
 <translation id="4265872034478892965">Әкімші рұқсат берген</translation>
-<translation id="4270541775497538019">Жинастырушы 6</translation>
+<translation id="4270541775497538019">6-жинастырушы</translation>
 <translation id="4275830172053184480">Құрылғыңызды қайта іске қосу</translation>
 <translation id="4277028893293644418">Құпия сөзді қайта орнату</translation>
 <translation id="4279811152705618813"><ph name="DEVICE_TYPE" /> құрылғыңызды <ph name="ENROLLMENT_DOMAIN" /> басқарады.</translation>
@@ -768,7 +768,7 @@
 <translation id="4318566738941496689">Құрылғыңыздың атауы және желі мекенжайыңыз</translation>
 <translation id="4325863107915753736">Мақала табылмады</translation>
 <translation id="4326324639298822553">Жарамдылық мерзімін тексеріп, әрекетті қайталаңыз</translation>
-<translation id="4331519897422864041">Жинастырушы 5</translation>
+<translation id="4331519897422864041">5-жинастырушы</translation>
 <translation id="4331708818696583467">Қауіпсіз емес</translation>
 <translation id="4340982228985273705">Бұл компьютерді кәсіпорын басқармайтындықтан, саясат тек Chrome Webstore дүкенінде орналасқан кеңейтімдерді автоматты түрде орната алады. Chrome Webstore жаңартылған нұсқасының URL мекенжайы: "<ph name="CWS_UPDATE_URL" />".</translation>
 <translation id="4346197816712207223">Қабылданатын несиелік карталар</translation>
@@ -811,7 +811,7 @@
 <translation id="4522570452068850558">Мәліметтер</translation>
 <translation id="4524138615196389145">Қазірден бастап карталарыңызды WebAuthn арқылы жылдам растаңыз</translation>
 <translation id="4524805452350978254">Карталарды басқару</translation>
-<translation id="4542971377163063093">Науа 6</translation>
+<translation id="4542971377163063093">6-науа</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
 <translation id="4558551763791394412">Кеңейтімдерді ажыратып көріңіз.</translation>
@@ -855,7 +855,7 @@
 <translation id="4764776831041365478"><ph name="URL" /> мекенжайындағы веб-бет уақытша істен шыққан немесе тұрақты түрде басқа мекенжайға көшкен болуы мүмкін.</translation>
 <translation id="4766713847338118463">Төменгі жағын екі рет қапсыру</translation>
 <translation id="4771973620359291008">Белгісіз қате орын алды.</translation>
-<translation id="4780366598804516005">Пошта жәшігі 1</translation>
+<translation id="4780366598804516005">1-ші пошта жәшігі</translation>
 <translation id="4780900888022378816">Құрылғыңызды <ph name="ENROLLMENT_DOMAIN" /> домені, ал есептік жазбаңызды <ph name="ACCOUNT_DOMAIN" /> домені басқарады.</translation>
 <translation id="4785689107224900852">Осы қойындыға ауысу</translation>
 <translation id="4791134497475588553">Орнатылған Linux қолданбалары және олар соңғы рет пайдаланылған күн</translation>
@@ -920,7 +920,7 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(қолданыста: 1)}other{(қолданыста: #)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />Прокси мекенжайын тексеру<ph name="END_LINK" /></translation>
-<translation id="507130231501693183">Пошта жәшігі 4</translation>
+<translation id="507130231501693183">4-ші пошта жәшігі</translation>
 <translation id="5087286274860437796">Сервердің сертификаты әзірше жарамайды.</translation>
 <translation id="5087580092889165836">Несие картасын қосу</translation>
 <translation id="5088142053160410913">Операторға жіберілетін хабарлама</translation>
@@ -945,7 +945,7 @@
 <translation id="515292512908731282">C4 (Envelope)</translation>
 <translation id="5158275234811857234">Мұқаба</translation>
 <translation id="5159010409087891077">Бетті жаңа инкогнито терезесінде ашу (⇧⌘N)</translation>
-<translation id="5161506081086828129">Жинастырушы 9</translation>
+<translation id="5161506081086828129">9-жинастырушы</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> картасының CVC кодын енгізіңіз. Растағаннан кейін, Google есептік жазбасындағы карта мәліметтері осы сайтқа беріледі.</translation>
 <translation id="5169827969064885044">Ұйымның есептік жазбасына кіре алмай қалуыңыз мүмкін немесе жеке деректеріңіз ұрлануы ықтимал. Chrome құпия сөзіңізді қазір өзгертуге кеңес береді.</translation>
 <translation id="5170017743895942767">Chrome корпоративтік пайдаланушыны қорғау</translation>
@@ -1005,7 +1005,7 @@
 <translation id="5396631636586785122">Оң жақ жиегін тігу</translation>
 <translation id="5400836586163650660">Сұр</translation>
 <translation id="540969355065856584">Бұл сервер өзінің <ph name="DOMAIN" /> екенін дәлелдей алмады; оның қауіпсіздік сертификаты әзірше жарамайды. Бұл дұрыс конфигурацияланбағаннан немесе зиянды бағдарламаның байланысқа кедергі келтіргенінен болуы мүмкін.</translation>
-<translation id="541416427766103491">Жинастырушы 4</translation>
+<translation id="541416427766103491">4-жинастырушы</translation>
 <translation id="5421136146218899937">Шолу деректерін өшіру…</translation>
 <translation id="5430298929874300616">Бетбелгіні жою</translation>
 <translation id="5431657950005405462">Файл табылмады</translation>
@@ -1034,7 +1034,7 @@
 <translation id="553484882784876924">Prc6 (Envelope)</translation>
 <translation id="5539243836947087108">Тақта</translation>
 <translation id="5540224163453853">Сұралған мақаланы табу мүмкін болмады.</translation>
-<translation id="5541086400771735334">Пошта жәшігі 7</translation>
+<translation id="5541086400771735334">7-ші пошта жәшігі</translation>
 <translation id="5541546772353173584">Электрондық пошта мекенжайын енгізу</translation>
 <translation id="5545756402275714221">Сізге арналған мақалалар</translation>
 <translation id="5552137475244467770">Chrome браузері құпия сөздеріңізді онлайн жарияланған тізімдермен салыстырып тексереді. Тексеру кезінде құпия сөздер мен пайдаланушылар аты шифрланады. Сондықтан оларды ешқандай Google пайдаланушылары оқи алмайды.</translation>
@@ -1104,7 +1104,7 @@
 <translation id="5855253129151731373">Бұл сайттың хост атауы <ph name="LOOKALIKE_DOMAIN" /> атауына ұқсас. Кейде шабуылдаушылар белгілі бір сайттарды көшіріп, олардың домен атауын аздап өзгертіп қояды.
 
     Бұл хабар қателікпен көрсетілді деп ойласаңыз, мына бетке өтіңіз: https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals.</translation>
-<translation id="5862579898803147654">Жинастырушы 8</translation>
+<translation id="5862579898803147654">8-жинастырушы</translation>
 <translation id="5863847714970149516">Бұл бет сізден ақшалай ақы алуға тырысуы мүмкін</translation>
 <translation id="5866257070973731571">Телефон нөмірін қосу</translation>
 <translation id="5866898949289125849">Әзірлеуші құралдары беті ашылды.</translation>
@@ -1144,7 +1144,7 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (синхрондалған)</translation>
 <translation id="6027201098523975773">Атын енгізіңіз</translation>
 <translation id="603068602130820122">Оң жағын екі рет қапсыру</translation>
-<translation id="6032524144326295339">Пошта жәшігі 2</translation>
+<translation id="6032524144326295339">2-ші пошта жәшігі</translation>
 <translation id="6032955021262906325">Сол жағын байлау</translation>
 <translation id="6034000775414344507">Ашық сұр</translation>
 <translation id="6034283069659657473">10x14 (Envelope)</translation>
@@ -1273,7 +1273,7 @@
 <translation id="6604181099783169992">Қозғалыс не жарық датчиктері</translation>
 <translation id="6609880536175561541">Prc7 (Envelope)</translation>
 <translation id="6612358246767739896">Қорғалған мазмұн</translation>
-<translation id="6615297766614333076">Жинастырушы 2</translation>
+<translation id="6615297766614333076">2-жинастырушы</translation>
 <translation id="6624427990725312378">Байланыс ақпараты</translation>
 <translation id="6626291197371920147">Дұрыс карта нөмірін енгізу</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> Search</translation>
@@ -1358,7 +1358,7 @@
 <translation id="7075452647191940183">Сұрау өлшемі өте үлкен.</translation>
 <translation id="7079718277001814089">Бұл сайтта зиянды бағдарлама бар</translation>
 <translation id="7081308185095828845">Бұл мүмкіндік құрылғыда жоқ.</translation>
-<translation id="7083258188081898530">Науа 9</translation>
+<translation id="7083258188081898530">9-науа</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Google сайтынан <ph name="LINK" /> іздеу</translation>
 <translation id="7108338896283013870">Жасыру</translation>
@@ -1500,7 +1500,7 @@
 <translation id="7667346355482952095">Қайтарылған саясат таңбалауышы бос немесе ағымдағы таңбалауышқа сәйкес келмейді</translation>
 <translation id="7668654391829183341">Белгісіз құрылғы</translation>
 <translation id="7669271284792375604">Осы сайттағы шабуылдаушылар шолу әрекетіңізге зиян келтіретін бағдарламаларды айлакерлікпен (мысалы, басты бетіңізді өзгерту немесе сіз кірген сайттарда қосымша жарнамалар көрсету арқылы) орнатқызуы мүмкін.</translation>
-<translation id="7673278391011283842">Пошта жәшігі 6</translation>
+<translation id="7673278391011283842">6-шы пошта жәшігі</translation>
 <translation id="7676643023259824263">Буфер мәтінін (<ph name="TEXT" />) іздеу</translation>
 <translation id="7681101578153515023">Іздеу жүйесін өзгерту</translation>
 <translation id="7682287625158474539">Жіберу</translation>
@@ -1545,7 +1545,7 @@
 <translation id="785549533363645510">Алайда, сіз бақылауда боласыз. Инкогнито режимінде шарлау тарихы жұмыс берушіге, интернет қызметі провайдеріне не кірген веб-сайттарға көрінеді.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">Сайттан шыққыңыз келе ме?</translation>
-<translation id="7865448901209910068">Үздік жылдамдық</translation>
+<translation id="7865448901209910068">Ең жақсы жылдамдық</translation>
 <translation id="7878562273885520351">Құпия сөзіңіз ұрланған болуы мүмкін</translation>
 <translation id="7882421473871500483">Қоңыр</translation>
 <translation id="7887683347370398519">CVC нөмірін енгізіп, әрекетті қайталаңыз</translation>
@@ -1635,7 +1635,7 @@
 <translation id="8261506727792406068">Жою</translation>
 <translation id="8262952874573525464">Төменгі жиегін тігу</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> ретінде кіру</translation>
-<translation id="8269242089528251720">Жалғыз құжаттар/реттелген көшірмелер</translation>
+<translation id="8269242089528251720">Бөлек құжаттар/реттелген көшірмелер</translation>
 <translation id="8269981117540303696">Енді инкогнито режимінде қарап шығуыңызға болады, ал осы құрылғыны пайдаланатын басқа адамдар әрекетіңізді көрмейді. Бірақ жүктеп алынған материалдар мен бетбелгілер сақталады.</translation>
 <translation id="8277900682056760511">Төлем өңдегіш парағы ашық.</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1679,7 +1679,7 @@
 <translation id="8479754468255770962">Төменгі сол жағын қапсыру</translation>
 <translation id="8483780878231876732">Google есептік жазбасында белгіленген карталарды пайдалану үшін Chrome жүйесіне кіріңіз.</translation>
 <translation id="8488350697529856933">Келесіге қолданылады</translation>
-<translation id="8490137692873530638">Жинастырушы 10</translation>
+<translation id="8490137692873530638">10-жинастырушы</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> жауабы тым ұзақ уақыт алды.</translation>
 <translation id="8503559462189395349">Chrome құпия сөздері</translation>
 <translation id="8503813439785031346">Пайдаланушы аты</translation>
@@ -1690,7 +1690,7 @@
 <translation id="8553075262323480129">Аударма сәтсіз аяқталды, себебі беттің тілі анықталмады.</translation>
 <translation id="8557066899867184262">CVC коды картаңыздың артқы жағында орналасқан.</translation>
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> доменімен жеке байланыс орнату мүмкін емес, себебі құрылғыңыздың күні мен уақыты (<ph name="DATE_AND_TIME" />) дұрыс емес.</translation>
-<translation id="8564182942834072828">Жалғыз құжаттар/реттелмеген көшірмелер</translation>
+<translation id="8564182942834072828">Бөлек құжаттар/реттелмеген көшірмелер</translation>
 <translation id="8564985650692024650">Chromium басқа сайттарда пайдаланылған <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> құпия сөзін қайта орнатуды ұсынады.</translation>
 <translation id="8571890674111243710">Бет <ph name="LANGUAGE" /> тіліне аударылуда…</translation>
 <translation id="8574899947864779331">Карталарыңызды жылдам растау үшін Touch ID пайдаланыңыз.</translation>
@@ -1793,7 +1793,7 @@
 <translation id="9080712759204168376">Тапсырыстың жиынтық мәліметтері</translation>
 <translation id="9089260154716455634">Жұмыс істемейтін уақыт туралы саясат:</translation>
 <translation id="9095388113577226029">Басқа тілдер…</translation>
-<translation id="9101630580131696064">Науа 1</translation>
+<translation id="9101630580131696064">1-науа</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> әдетте ақпаратыңызды қорғау үшін шифрлауды қолданады. Осы жолы Chromium <ph name="SITE" /> сайтына қосылуға әрекет еткенде, веб-сайт әдеттен тыс және қате тіркелгі деректерін жіберді. Бұл жағдай қаскүнем <ph name="SITE" /> болып көрінгісі келгенде немесе Wi-Fi кіру экраны байланысқа кедергі болғанда пайда болуы мүмкін. Ақпаратыңыз қауіпсіз күйде, себебі Chromium ешқандай дерек алмасу болмай тұрып байланысты үзді.</translation>
 <translation id="9106062320799175032">Төлем мекенжайын қосу</translation>
 <translation id="9114524666733003316">Карта расталуда...</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index a35ba32..1322800a 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -72,7 +72,7 @@
 <translation id="1263231323834454256">បញ្ជី​អាន</translation>
 <translation id="1264126396475825575">របាយការណ៍គាំងបានថតនៅម៉ោង <ph name="CRASH_TIME" /> (មិនទាន់បានអាប់ឡូត ឬមិនអើពើ)</translation>
 <translation id="1270502636509132238">មធ្យោបាយ​ទៅយក</translation>
-<translation id="1281476433249504884">ទម្រស្ទេកខ័រទី 1</translation>
+<translation id="1281476433249504884">ទម្រគំនរ​ទី 1</translation>
 <translation id="1285320974508926690">មិនបកប្រែគេហទំព័រនេះទៀតឡើយ</translation>
 <translation id="1285400217480592994">ស្កេន​ខ្លឹមសារ​នៃ​ឯកសារ​ដែល​អ្នក​ទាញយក ឬ​បង្ហោះ​នៅក្នុង Chrome​។</translation>
 <translation id="1292701964462482250">"កម្មវិធី​នៅលើ​កុំព្យូទ័រ​របស់អ្នក​កំពុង​បញ្ឈប់ Chrome មិន​ឱ្យ​ភ្ជាប់​ទៅ​អ៊ីនធឺណិត​​ដោយសុវត្ថិភាព" (កុំព្យូទ័រ​ Windows តែ​ប៉ុណ្ណោះ)</translation>
@@ -114,7 +114,7 @@
 <translation id="1408787208417187241">កិប​បីគ្រាប់​ខាងលើ</translation>
 <translation id="1413809658975081374">កំហុសឆ្គងឯកជនភាព</translation>
 <translation id="1426410128494586442">បាទ/ចាស</translation>
-<translation id="1428146450423315676">ទម្រស្ទេកខ័រទី 7</translation>
+<translation id="1428146450423315676">ទម្រគំនរទី 7</translation>
 <translation id="1430915738399379752">បោះពុម្ព</translation>
 <translation id="1442386063175183758">បត់ភ្ជិត​ផ្ទាំង​ខាងស្ដាំ</translation>
 <translation id="1442987760062738829">ចោះ</translation>
@@ -663,7 +663,7 @@
 <translation id="3884278016824448484">មានបញ្ហាជាមួយឧបករណ៍សម្គាល់ឧបករណ៍</translation>
 <translation id="3885155851504623709">តំបន់រដ្ឋបាល</translation>
 <translation id="388632593194507180">បានរកឃើញ​ការឃ្លាំមើល</translation>
-<translation id="3886948180919384617">ទម្រស្ទេកខ័រទី 3</translation>
+<translation id="3886948180919384617">ទម្រគំនរទី 3</translation>
 <translation id="3890664840433101773">បញ្ចូល​អ៊ីមែល</translation>
 <translation id="3897092660631435901">ម៉ឺនុយ</translation>
 <translation id="3901925938762663762">កាតនេះផុតកំណត់។</translation>
@@ -756,7 +756,7 @@
 <translation id="4258748452823770588">ហេត្ថលេខាមិនល្អ</translation>
 <translation id="4261046003697461417">មិនអាចដាក់​ចំណារលើឯកសារ​ដែលត្រូវបានការពារនោះ​ទេ</translation>
 <translation id="4265872034478892965">អនុញ្ញាតដោយអ្នកគ្រប់គ្រងរបស់អ្នក</translation>
-<translation id="4270541775497538019">ទម្រស្ទេកខ័រទី 6</translation>
+<translation id="4270541775497538019">ទម្រគំនរ​ទី 6</translation>
 <translation id="4275830172053184480">ចាប់ផ្តើមឧបករណ៍របស់អ្នកឡើងវិញ</translation>
 <translation id="4277028893293644418">កំណត់​ពាក្យ​សម្ងាត់​ឡើងវិញ</translation>
 <translation id="4279811152705618813"><ph name="DEVICE_TYPE" /> របស់​អ្នក​ស្ថិតក្រោម​ការគ្រប់គ្រង​របស់ <ph name="ENROLLMENT_DOMAIN" /></translation>
@@ -772,7 +772,7 @@
 <translation id="4318566738941496689">អាសយដ្ឋានបណ្ដាញ និងឈ្មោះ​ឧបករណ៍របស់អ្នក</translation>
 <translation id="4325863107915753736">បានបរាជ័យក្នុងការស្វែងរកអត្ថបទ</translation>
 <translation id="4326324639298822553">ពិនិត្យមើល​កាលបរិច្ឆេទ​ផុត​កំណត់​របស់អ្នក​ រួច​ព្យាយាម​ម្តង​ទៀត​</translation>
-<translation id="4331519897422864041">ទម្រស្ទេកខ័រទី 5</translation>
+<translation id="4331519897422864041">ទម្រគំនរ​ទី 5</translation>
 <translation id="4331708818696583467">គ្មានសុវត្ថិភាព</translation>
 <translation id="4340982228985273705">កុំព្យូទ័រនេះ​មិនត្រូវបាន​រកឃើញ​ថាជា​សហគ្រាស​ដែលបាន​គ្រប់គ្រង​ទេ ដូច្នេះ​គោលការណ៍​អាចដំឡើង​កម្មវិធី​បន្ថែម​ដែលបាន​បង្ហោះដោយ​ស្វ័យប្រវត្តិ​នៅ​លើ Chrome Webstore តែ​ប៉ុណ្ណោះ។ URL កំណែថ្មី​របស់ Chrome Webstore គឺ "<ph name="CWS_UPDATE_URL" />" ។</translation>
 <translation id="4346197816712207223">បណ្ណ​ឥណទាន​ដែល​​ទទួលយក</translation>
@@ -950,7 +950,7 @@
 <translation id="515292512908731282">C4 (ស្រោម​សំបុត្រ)</translation>
 <translation id="5158275234811857234">គម្រប</translation>
 <translation id="5159010409087891077">បើក​ទំព័រ​នៅក្នុង​ផ្ទាំងឯកជន​ថ្មី (⇧⌘N)</translation>
-<translation id="5161506081086828129">ទម្រស្ទេកខ័រទី 9</translation>
+<translation id="5161506081086828129">ទម្រគំនរទី 9</translation>
 <translation id="516920405563544094">បញ្ចូល CVC សម្រាប់ <ph name="CREDIT_CARD" /> ។ បន្ទាប់​ពីអ្នក​បញ្ជាក់​ហើយ ព័ត៌មាន​លម្អិត​អំពី​កាតដែលបាន​មកពីគណនី Google របស់អ្នក​នឹងត្រូវ​បាន​ចែករំលែក​ជាមួយ​គេហទំព័រ​នេះ។</translation>
 <translation id="5169827969064885044">អ្នកអាច​បាត់បង់​សិទ្ធិចូល​ប្រើ​គណនី​​របស់ស្ថាប័នអ្នក ឬ​ជួបប្រទះ​នឹង​ការលួចយក​អត្តសញ្ញាណ។ Chrome សូមណែនាំ​ឱ្យប្ដូរ​ពាក្យសម្ងាត់​របស់អ្នក​ឥឡូវនេះ។</translation>
 <translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
@@ -1010,7 +1010,7 @@
 <translation id="5396631636586785122">ដេរគែម​ខាងស្ដាំ</translation>
 <translation id="5400836586163650660">ប្រផេះ</translation>
 <translation id="540969355065856584">ម៉ាស៊ីនមេនេះមិនអាចបង្ហាញថាវាជា <ph name="DOMAIN" /> នោះទេ វិញ្ញាបនបត្រសុវត្ថិភាពរបស់វាមិនមានសុពលភាពទេនៅពេលនេះ។ វាអាចបណ្តាលមកពីការកំណត់រចនាសម្ព័ន្ធមិនត្រឹមត្រូវ ឬមានអ្នកវាយប្រហារកំពុងរារាំងការតភ្ជាប់របស់អ្នក។</translation>
-<translation id="541416427766103491">ទម្រស្ទេកខ័រទី 4</translation>
+<translation id="541416427766103491">ទម្រគំនរ​ទី 4</translation>
 <translation id="5421136146218899937">ជម្រះទិន្នន័យរុករក...</translation>
 <translation id="5430298929874300616">ដកចំណាំចេញ</translation>
 <translation id="5431657950005405462">រកមិនឃើញឯកសាររបស់អ្នកទេ</translation>
@@ -1065,7 +1065,7 @@
 <translation id="5633066919399395251">អ្នក​វាយ​ប្រហារ​ដែល​បច្ចុប្បន្នធ្វើទៅលើ <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> អាចនឹងព្យាយាមដំឡើងកម្មវិធីដែលមានគ្រោះថ្នាក់នៅលើ​កុំព្យូទ័រ​របស់អ្នក ដែលកម្មវិធីនោះ​អាច​លួច ឬលុប​ព័ត៌មាន​របស់អ្នក (ឧទាហរណ៍៖ រូបថត ពាក្យសម្ងាត់ សារ និងបណ្ណឥណទាន)។ <ph name="BEGIN_LEARN_MORE_LINK" />ស្វែងយល់បន្ថែម<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">បានទប់ស្កាត់​ខ្លឹមសារបញ្ឆោត។</translation>
 <translation id="5644090287519800334">ការប្ដូរ​រូបភាព X នៃចំហៀងទី 1</translation>
-<translation id="5645854190134202180">ការប្ដូរ​លើកទីពីរ</translation>
+<translation id="5645854190134202180">វេនទីពីរ</translation>
 <translation id="5659593005791499971">អ៊ីម៉េល</translation>
 <translation id="5663614846592581799">9x11 (ស្រោម​សំបុត្រ)</translation>
 <translation id="5663955426505430495">អ្នកគ្រប់គ្រង​ឧបករណ៍នេះ​បានដំឡើង​កម្មវិធីបន្ថែមសម្រាប់​មុខងារបន្ថែម។ កម្មវិធីបន្ថែម​មានសិទ្ធិចូលប្រើ​ទិន្នន័យមួយចំនួន​របស់អ្នក។</translation>
@@ -1109,7 +1109,7 @@
 <translation id="5855253129151731373">ឈ្មោះម៉ាស៊ីនរបស់​គេហទំព័រ​នេះ​ស្រដៀងគ្នា​នឹង <ph name="LOOKALIKE_DOMAIN" />។ ជួនកាល អ្នក​វាយប្រហារ​ក្លែងបន្លំជា​គេហទំព័រ​ផ្សេងៗ ដោយ​ធ្វើការ​ផ្លាស់ប្ដូរ​តិចតួចដែលពិបាក​សម្គាល់​ចំពោះឈ្មោះដែន​។
 
     ប្រសិនបើ​អ្នកយល់ថា ឈ្មោះដែននេះមានបញ្ហា សូម​ចូលទៅកាន់ https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals។</translation>
-<translation id="5862579898803147654">ទម្រស្ទេកខ័រទី 8</translation>
+<translation id="5862579898803147654">ទម្រគំនរ​ទី 8</translation>
 <translation id="5863847714970149516">ទំព័រ​ខាងមុខ​អាច​ព្យាយាម​គិតប្រាក់​ពីអ្នក</translation>
 <translation id="5866257070973731571">បញ្ចូល​លេខ​ទូរសព្ទ</translation>
 <translation id="5866898949289125849">អ្នកកំពុងមើល​ទំព័រឧបករណ៍​របស់​អ្នកអភិវឌ្ឍន៍</translation>
@@ -1278,7 +1278,7 @@
 <translation id="6604181099783169992">ឧបករណ៍​ចាប់​សញ្ញាពន្លឺ ឬចលនា</translation>
 <translation id="6609880536175561541">Prc7 (ស្រោម​សំបុត្រ)</translation>
 <translation id="6612358246767739896">មាតិកាដែលបានការពារ</translation>
-<translation id="6615297766614333076">ទម្រស្ទេកខ័រទី 2</translation>
+<translation id="6615297766614333076">ទម្រគំនរ​ទី 2</translation>
 <translation id="6624427990725312378">ព័ត៌មាន​ទំនាក់ទំនង</translation>
 <translation id="6626291197371920147">បញ្ចូលលេខកាតឲ្យបានត្រឹមត្រូវ</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> ស្វែងរក</translation>
@@ -1685,7 +1685,7 @@
 <translation id="8479754468255770962">កិប​ខាងក្រោម​ផ្នែកខាង​ឆ្វេង</translation>
 <translation id="8483780878231876732">ដើម្បីប្រើកាតពីគណនី Google របស់អ្នក សូមចូលទៅកាន់ Chrome</translation>
 <translation id="8488350697529856933">អនុវត្តទៅ</translation>
-<translation id="8490137692873530638">ទម្រស្ទេកខ័រទី 10</translation>
+<translation id="8490137692873530638">ទម្រគំនរ​ទី 10</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> បានចំណាយពេលយូរពេកដើម្បីឆ្លើយតប</translation>
 <translation id="8503559462189395349">ពាក្យ​សម្ងាត់ Chrome</translation>
 <translation id="8503813439785031346">ឈ្មោះអ្នកប្រើ</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 3090759..08bac69 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">ಈಗಲೇ ಅಲ್ಲ</translation>
 <translation id="1010200102790553230">ಪುಟವನ್ನು ನಂತರ ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="1015730422737071372">ಹೆಚ್ಚುವರಿ ವಿವರಗಳನ್ನು ಒದಗಿಸಿ</translation>
+<translation id="1019413721762100891">ಆಫ್</translation>
 <translation id="1021110881106174305">ಸ್ವೀಕೃತ ಕಾರ್ಡ್‌ಗಳು</translation>
 <translation id="1021753677514347426">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ನೀವು ಅಥವಾ ಬೇರೊಬ್ಬರು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ಪ್ರಮಾಣಪತ್ರದಿಂದಾಗಿ ಈ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ. ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಮತ್ತು ಪ್ರತಿಬಂಧಿಸಲು ಪ್ರಮಾಣಪತ್ರವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಎಂದು ತಿಳಿದುಬಂದಿದೆ ಮತ್ತು ಈ ಪ್ರಮಾಣಪತ್ರದ ಕುರಿತು Chromium ಗೆ ವಿಶ್ವಾಸವಿಲ್ಲ. ಕೆಲವು ಕಾನೂನುಬದ್ಧ ಮೇಲ್ವಿಚಾರಣೆ ಪ್ರಕರಣಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೂ, ಉದಾಹರಣೆಗೆ ಶಾಲೆ ಅಥವಾ ಕಂಪನಿಯ ನೆಟ್‌ವರ್ಕ್‌, ಅದನ್ನು ತಡೆಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೂ ಸಹ, ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಯುತ್ತಿದೆ ಎಂಬುದು ನಿಮಗೆ ತಿಳಿದಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು Chromium ಬಯಸುತ್ತದೆ. ವೆಬ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವ ಯಾವುದೇ ಬ್ರೌಸರ್ ಅಥವಾ ಆ್ಯಪ್‌ನಲ್ಲಿ ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಯಬಹುದು.</translation>
 <translation id="1032854598605920125">ಪ್ರದಕ್ಷಿಣಾಕಾರದಲ್ಲಿ ತಿರುಗಿಸು</translation>
 <translation id="1036348656032585052">ಆಫ್ ಮಾಡು</translation>
 <translation id="1038842779957582377">ಆಜ್ಞಾತ ಹೆಸರು</translation>
+<translation id="1041998700806130099">ಜಾಬ್ ಶೀಟ್ ಸಂದೇಶ</translation>
 <translation id="1050038467049342496">ಇತರ ಅಪ್ಲಿಕೇಶನ್‍ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="1055184225775184556">&amp;ಸೇರಿಸುವುದನ್ನು ರದ್ದುಗೊಳಿಸಿ</translation>
 <translation id="1056898198331236512">ಎಚ್ಚರಿಕೆ</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">ಉಳಿಸಿಯೇ ಇಲ್ಲ</translation>
 <translation id="1062160989074299343">Prc10 (Envelope)</translation>
 <translation id="106701514854093668">ಡೆಸ್ಕ್‌ಟಾಪ್ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
+<translation id="1070901266639972381">ರಾತ್ರಿ</translation>
 <translation id="1074497978438210769">ಸುರಕ್ಷಿತವಾಗಿಲ್ಲ</translation>
 <translation id="1080116354587839789">ಅಗಲಕ್ಕೆ ಹೊಂದಿಸಿ</translation>
 <translation id="1086953900555227778">Index-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಿ</translation>
 <translation id="1096545575934602868">ಈ ಕ್ಷೇತ್ರವು <ph name="MAX_ITEMS_LIMIT" /> ಗಿಂತ ಹೆಚ್ಚು ನಮೂದುಗಳನ್ನು ಹೊಂದಿರುವಂತಿಲ್ಲ. ಮುಂದಿನ ಎಲ್ಲಾ ನಮೂದುಗಳನ್ನು ತ್ಯಜಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="109743633954054152">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನಿರ್ವಹಿಸಿ</translation>
+<translation id="1101672080107056897">ದೋಷ ಕ್ರಿಯೆ</translation>
 <translation id="1103523840287552314">ಯಾವಾಗಲೂ ಅನುವಾದಿಸಿ <ph name="LANGUAGE" /></translation>
 <translation id="1107591249535594099">ಪರಿಶೀಲಿಸಿದರೆ, ವೇಗವಾಗಿ ಫಾರ್ಮ್ ಭರ್ತಿ ಮಾಡಲು Chrome ಈ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ಕಾರ್ಡ್‌ನ ಪ್ರತಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ.</translation>
 <translation id="1110994991967754504"><ph name="PERMISSION_NAME" /> ಗಾಗಿ ಅನುಮತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">ಓದುವ ಪಟ್ಟಿ</translation>
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> ನಲ್ಲಿ ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು ಸೆರೆಹಿಡಿಯಲಾಗಿದೆ (ಇನ್ನೂ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ ಅಥವಾ ನಿರ್ಲಕ್ಷಿಸಲಾಗಿಲ್ಲ)</translation>
 <translation id="1270502636509132238">ಪಿಕಪ್ ವಿಧಾನ</translation>
+<translation id="1281476433249504884">ಸ್ಟ್ಯಾಕರ್ 1</translation>
 <translation id="1285320974508926690">ಈ ಸೈಟ್ ಅನ್ನು ಎಂದಿಗೂ ಭಾಷಾಂತರಿಸದಿರಿ</translation>
 <translation id="1285400217480592994">ನೀವು Chrome ನಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡುವ ಫೈಲ್‌ಗಳ ವಿಷಯಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ.</translation>
 <translation id="1292701964462482250">"ಸುರಕ್ಷಿತವಾಗಿ ವೆಬ್‌ಗೆ ಸಂಪರ್ಕಿಸುವ Chrome ನ ಕಾರ್ಯವನ್ನು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿರುವ ಸಾಫ್ಟ್‌ವೇರ್‌ ಸ್ಥಗಿತಗೊಳಿಸಿದೆ" (Windows ಕಂಪ್ಯೂಟರ್‌ಗಳಿಗೆ ಮಾತ್ರ)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">ಮೇಲ್ಭಾಗದಲ್ಲಿ ಮೂರು ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="1413809658975081374">ಗೌಪ್ಯತೆ ದೋಷ</translation>
 <translation id="1426410128494586442">ಹೌದು</translation>
+<translation id="1428146450423315676">ಸ್ಟ್ಯಾಕರ್ 7</translation>
 <translation id="1430915738399379752">ಮುದ್ರಿಸು</translation>
 <translation id="1442386063175183758">ಬಲಭಾಗದ ಗೇಟ್ ಅನ್ನು ಮಡಿಸಿ</translation>
 <translation id="1442987760062738829">ತೂತು ಮಾಡಿ</translation>
@@ -129,6 +135,7 @@
 <translation id="1521655867290435174">Google ಶೀಟ್‌ಗಳು</translation>
 <translation id="1527263332363067270">ಸಂಪರ್ಕಕ್ಕೆ ಕಾಯಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1529521330346880926">10x15 (Envelope)</translation>
+<translation id="1529789484829130889">ಟ್ರೇ 8</translation>
 <translation id="1530707389502320859">ನೀವು ಇದೀಗ ಭೇಟಿ ನೀಡಲು ಪ್ರಯತ್ನಿಸಿದ ವೆಬ್‌ಸೈಟ್ ನಕಲಿ ವೆಬ್‌ಸೈಟ್‌ನಂತೆ ಕಾಣುತ್ತದೆ. ದಾಳಿಕೋರರು ಕೆಲವೊಮ್ಮೆ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ನಕಲಿಸುತ್ತಾರೆ ಮತ್ತು URL ನಲ್ಲಿ ಸಣ್ಣ ಪ್ರಮಾಣದ ಅಥವಾ ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದ ರೀತಿಯಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡುತ್ತಾರೆ.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">ಈ ಪುಟವು ಹೀಗೆ ಹೇಳುತ್ತದೆ</translation>
@@ -155,6 +162,7 @@
 <translation id="1639239467298939599">ಲೋಡ್ ಆಗುತ್ತಿದೆ</translation>
 <translation id="1640180200866533862">ಬಳಕೆದಾರನ ನೀತಿಗಳು</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />ಸೈಟ್‌ನ ಮುಖಪುಟಕ್ಕೆ ಭೇಟಿ ನೀಡಲು<ph name="END_LINK" /> ಪ್ರಯತ್ನಿಸಿ.</translation>
+<translation id="1641976391427233992">ಇಷ್ಟು ಸಮಯದವರೆಗೆ ಫಲಿತಾಂಶವನ್ನು ವಿಳಂಬಗೊಳಿಸಿ</translation>
 <translation id="1644574205037202324">ಇತಿಹಾಸ</translation>
 <translation id="1645368109819982629">ಬೆಂಬಲವಿಲ್ಲದ ಪ್ರೊಟೋಕಾಲ್</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -163,12 +171,15 @@
 <translation id="1663943134801823270">ಕಾರ್ಡ್‌ಗಳು ಮತ್ತು ವಿಳಾಸಗಳನ್ನು Chrome ನಿಂದ ಪಡೆಯಲಾಗಿದೆ. ನೀವು ಅವುಗಳನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ<ph name="END_LINK" /> ನಿರ್ವಹಿಸಬಹುದು.</translation>
 <translation id="1671391448414634642">ಇಂದಿನಿಂದ <ph name="SOURCE_LANGUAGE" />ಭಾಷೆಯಲ್ಲಿರುವ ಪುಟಗಳನ್ನು <ph name="TARGET_LANGUAGE" />ಭಾಷೆಗೆ ಅನುವಾದ ಮಾಡಲಾಗುವುದು.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> ಸಾಮಾನ್ಯವಾಗಿ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಸಂರಕ್ಷಿಸಲು ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಪ್ರಯೋಜನವನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ Google Chrome <ph name="SITE" /> ವೆಬ್‌ಸೈಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ಆ ವೆಬ್‌ಸೈಟ್‌‌ ಅಸಹಜ ಮತ್ತು ತಪ್ಪು ರುಜುವಾತುಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿದೆ. ದಾಳಿಕೋರರು <ph name="SITE" /> ರೂಪದಲ್ಲಿ ಸೋಗು ಹಾಕಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಾಗ ಅಥವಾ ವೈ-ಫೈ ಸೈನ್-ಇನ್ ಪರದೆಯು ಸಂಪರ್ಕಕ್ಕೆ ಅಡ್ಡಿಯುಂಟು ಮಾಡಿದಾಗ ಇದು ಕಂಡುಬರಬಹುದು. ಯಾವುದೇ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುವ ಮೊದಲೇ Google Chrome ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿರುವ ಕಾರಣ, ನಿಮ್ಮ ಮಾಹಿತಿ ಈಗಲೂ ಸುರಕ್ಷಿತವಾಗಿದೆ.</translation>
+<translation id="1682696192498422849">ಚಿಕ್ಕ ಅಂಚು ಮೊದಲು</translation>
 <translation id="168841957122794586">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವು ದುರ್ಬಲ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಕೀಯನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="1697532407822776718">ನೀವು ಎಲ್ಲ ರೀತಿಯಲ್ಲಿಯೂ ಸಿದ್ಧರಾಗಿರುವಿರಿ!</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ; ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರ ಬಹುಶಃ ನಾಳೆಯಿಂದ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.}one{ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರ ಬಹುಶಃ ಭವಿಷ್ಯದಲ್ಲಿ # ದಿನಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.}other{ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರ ಬಹುಶಃ ಭವಿಷ್ಯದಲ್ಲಿ # ದಿನಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1713628304598226412">ಟ್ರೇ 2</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">ಮೇಲ್‌ಬಾಕ್ಸ್ 3</translation>
 <translation id="1718029547804390981">ಟಿಪ್ಪಣಿ ಮಾಡಲು ಡಾಕ್ಯುಮೆಂಟ್‌ ತುಂಬಾ ದೊಡ್ಡದಾಗಿದೆ</translation>
 <translation id="1721424275792716183">* ಈ ಫೀಲ್ಡ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="1727741090716970331">ಮಾನ್ಯವಾದ ಕಾರ್ಡ್ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ</translation>
@@ -182,7 +193,9 @@
 <translation id="1743520634839655729">ಮುಂದಿನ ಬಾರಿ ವೇಗವಾಗಿ ಪಾವತಿಸಲು, ನಿಮ್ಮ ಕಾರ್ಡ್‌, ಹೆಸರು ಮತ್ತು ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ವಿಳಾಸವನ್ನು Google ಖಾತೆಯಲ್ಲಿ ಮತ್ತು ಈ ಸಾಧನದಲ್ಲಿ ಉಳಿಸಿ.</translation>
 <translation id="1743570585616704562">ಗುರುತಿಸಲಾಗಿಲ್ಲ</translation>
 <translation id="1745880797583122200">ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗಿದೆ</translation>
+<translation id="1746113442205726301">ಚಿತ್ರ Y ಶಿಫ್ಟ್</translation>
 <translation id="17513872634828108">ತೆರೆದ ಟ್ಯಾಬ್‌ಗಳು</translation>
+<translation id="1752021286346845558">ಮೇಲ್‌ಬಾಕ್ಸ್ 8</translation>
 <translation id="1753706481035618306">ಪುಟ ಸಂಖ್ಯೆ</translation>
 <translation id="1763864636252898013">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರವು ನಿಮ್ಮ ಸಾಧನದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ‌ ಪ್ರಕಾರ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿಲ್ಲ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Windows ನೆಟ್‌ವರ್ಕ್ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ಸ್‌ ರನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ‌<ph name="END_LINK" />.</translation>
@@ -192,6 +205,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">ಕಾರ್ಡ್‌ಹೋಲ್ಡರ್ ಹೆಸರು</translation>
+<translation id="1807528111851433570">ಪ್ರಾರಂಭಿಕ ಶೀಟ್</translation>
 <translation id="1821930232296380041">ಅಮಾನ್ಯವಾದ ವಿನಂತಿ ಅಥವಾ ವಿನಂತಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು</translation>
 <translation id="1822540298136254167">ನೀವು ಭೇಟಿ ನೀಡಿರುವ ವೆಬ್‌ಸೈಟ್‌ಗಳು ಮತ್ತು ಅವುಗಳಲ್ಲಿ ನೀವು ಕಳೆದಿರುವ ಸಮಯ</translation>
 <translation id="1826516787628120939">ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ</translation>
@@ -220,6 +234,7 @@
 <translation id="1973335181906896915">ಅನುಕ್ರಮಗೊಳಿಸುವಿಕೆಯ ದೋಷ</translation>
 <translation id="1974060860693918893">ಸುಧಾರಿತ</translation>
 <translation id="1974883374937189061"><ph name="BEGIN_WHITEPAPER_LINK" />ನೀವು ಭೇಟಿ ನೀಡುವ ಕೆಲವೊಂದು ಪುಟಗಳ URL ಗಳು, ಸಿಸ್ಟಂಗೆ ಸಂಬಂಧಿಸಿದ ಸೀಮಿತ ಮಾಹಿತಿ ಹಾಗೂ ಪುಟದಲ್ಲಿನ ಕೆಲವು ಕಂಟೆಂಟ್<ph name="END_WHITEPAPER_LINK" /> ಅನ್ನು Google ಗೆ ಕಳುಹಿಸುವ ಮೂಲಕ Chrome ನ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ. <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">ಮೇಲ್‌ಬಾಕ್ಸ್ 10</translation>
 <translation id="1978555033938440688">ಫರ್ಮ್‌ವೇರ್ ಆವೃತ್ತಿ</translation>
 <translation id="1981206234434200693">Chrome ನ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸದ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -229,6 +244,7 @@
 <translation id="2025186561304664664">ಪ್ರಾಕ್ಸಿಯನ್ನು ಸ್ವಯಂ ಕಾನ್ಫಿಗರ್ ಆಗಿ ಹೊಂದಿಸಲಾಗಿದೆ.</translation>
 <translation id="2030481566774242610">ನಿಮ್ಮ ಮಾತಿನ ಅರ್ಥ <ph name="LINK" />?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ಪ್ರಾಕ್ಸಿ ಮತ್ತು ಫೈರ್‌ವಾಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">ಟ್ರೇ 7</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" />ಭಾಷೆಯಲ್ಲಿರುವ ಪುಟಗಳು ಅನುವಾದಕ್ಕೊಳಪಡುವುದಿಲ್ಲ.</translation>
 <translation id="2053553514270667976">ಪಿನ್ ಕೋಡ್</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 ಸಲಹೆ}one{# ಸಲಹೆಗಳು}other{# ಸಲಹೆಗಳು}}</translation>
@@ -241,6 +257,7 @@
 <translation id="2096368010154057602">ವಿಭಾಗ</translation>
 <translation id="2099652385553570808">ಎಡಭಾಗದಲ್ಲಿ ಮೂರು ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="2102134110707549001">ಸದೃಢವಾದ ಪಾಸ್‌ವರ್ಡ್ ಸೂಚಿಸಿ…</translation>
+<translation id="2107021941795971877">ಪ್ರಿಂಟ್ ಬೆಂಬಲಗಳು</translation>
 <translation id="2108755909498034140">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="2111256659903765347">Super-A</translation>
 <translation id="2113977810652731515">ಕಾರ್ಡ್</translation>
@@ -265,6 +282,7 @@
 <translation id="2187317261103489799">ಪತ್ತೆ ಮಾಡಿ (ಡಿಫಾಲ್ಟ್)</translation>
 <translation id="2188375229972301266">ಕೆಳಭಾಗದಲ್ಲಿ ಅನೇಕ ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
 <translation id="2202020181578195191">ಮಾನ್ಯವಾದ ಅವಧಿ-ಮುಕ್ತಾಯ ವರ್ಷವನ್ನು ನಮೂದಿಸಿ</translation>
+<translation id="22081806969704220">ಟ್ರೇ 3</translation>
 <translation id="2212735316055980242">ನೀತಿ ಕಂಡು ಬಂದಿಲ್ಲ</translation>
 <translation id="2213606439339815911">ನಮೂದುಗಳನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="2215727959747642672">ಫೈಲ್ ಎಡಿಟ್ ಮಾಡುವಿಕೆ</translation>
@@ -282,6 +300,7 @@
 <translation id="2263079731045660823">ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್‌ ಸ್ವಯಂ ಭರ್ತಿಯ ಮಾಹಿತಿಯನ್ನು Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಿ</translation>
 <translation id="2267047181501709434">ನಿಮ್ಮ ಗುರುತನ್ನು ದೃಢೀಕರಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="2270484714375784793">ಫೋನ್ ಸಂಖ್ಯೆ</translation>
+<translation id="2276057643614339130">ಪ್ರಿಂಟ್ ಬೇಸ್</translation>
 <translation id="2277103315734023688">ಮುಂದಕ್ಕೆ ಸೀಕ್ ಮಾಡಿ</translation>
 <translation id="2283340219607151381">ವಿಳಾಸಗಳನ್ನು ಉಳಿಸಿ ಮತ್ತು ಭರ್ತಿ ಮಾಡಿ</translation>
 <translation id="2288422996159078444">ನೀವು ಟೈಪ್ ಮಾಡುವ ಯಾವುದೇ ವಿಷಯ, ವೀಕ್ಷಿಸುವ ಯಾವುದೇ ಪುಟಗಳು ಅಥವಾ ವೆಬ್‌ನಲ್ಲಿ ನಡೆಸುವ ಇತರ ಯಾವುದೇ ಚಟುವಟಿಕೆಯ ಮೇಲೆ ನಿಗಾ ಇರಿಸಲಾಗಿದೆ. ಸೈಟ್‌ಗಳಲ್ಲಿನ ವಿಷಯವನ್ನು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ತರದೇ ಬದಲಾಯಿಸಬಹುದು.</translation>
@@ -321,6 +340,7 @@
 <translation id="2465655957518002998">ವಿತರಣೆ ವಿಧಾನವನ್ನು ಆರಿಸಿ</translation>
 <translation id="2465688316154986572">ಸ್ಟೇಪಲ್ ಮಾಡಿ</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />ನೆಟ್‌ವರ್ಕ್ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ಸ್‌ ರನ್ ಆಗುತ್ತಿದೆ<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">1-ಇಂದ-N ಆರ್ಡರ್</translation>
 <translation id="2473195200299095979">ಈ ಪುಟವನ್ನು ಅನುವಾದಿಸಿ</translation>
 <translation id="2479410451996844060">ಅಮಾನ್ಯವಾದ ಹುಡುಕಾಟ URL.</translation>
 <translation id="2482878487686419369">ಸೂಚನೆಗಳು</translation>
@@ -339,6 +359,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{ಮತ್ತು ಇನ್ನೂ 1}one{ಮತ್ತು ಇನ್ನೂ #}other{ಮತ್ತು ಇನ್ನೂ #}}</translation>
 <translation id="2536110899380797252">ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="2539524384386349900">ಪತ್ತೆ ಮಾಡು</translation>
+<translation id="2544644783021658368">ಏಕೈಕ ಡಾಕ್ಯುಮೆಂಟ್</translation>
 <translation id="254947805923345898">ಕಾರ್ಯನೀತಿಯ ಮೌಲ್ಯವು ಮಾನ್ಯವಾಗಿಲ್ಲ.</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> ಅಮಾನ್ಯ ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸಿದೆ.</translation>
 <translation id="2556876185419854533">&amp;ಎಡಿಟ್ ಮಾಡುವುದನ್ನು ರದ್ದುಗೊಳಿಸಿ</translation>
@@ -365,8 +386,10 @@
 <translation id="2676271551327853224">Roc-8K</translation>
 <translation id="2677748264148917807">ತೊರೆಯಿರಿ</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">ಅತ್ಯುತ್ತಮ ಹೊಂದಿಕೆ</translation>
 <translation id="2691924980723297736">ಸುರಕ್ಷತೆಯ ಎಚ್ಚರಿಕೆ</translation>
 <translation id="2699302886720511147">ಸ್ವೀಕೃತ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="2701514975700770343">ಮುಖ ಕೆಳಗೆ</translation>
 <translation id="2702801445560668637">ಓದುವ ಪಟ್ಟಿ</translation>
 <translation id="2704283930420550640">ಮೌಲ್ಯವು ಸ್ವರೂಪಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="2705137772291741111">ಈ ಸೈಟ್‌ನ ಉಳಿಸಿದ (ಸಂಗ್ರಹವಾಗಿರುವ) ನಕಲನ್ನು ಓದಲಾಗುತ್ತಿಲ್ಲ.</translation>
@@ -384,12 +407,15 @@
 <translation id="2742870351467570537">ಆಯ್ಕೆಮಾಡಿದ ಐಟಂಗಳನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="277133753123645258">ಶಿಪ್ಪಿಂಗ್ ವಿಧಾನ</translation>
 <translation id="277499241957683684">ಸಾಧನದ ರೆಕಾರ್ಡ್ ಕಾಣೆಯಾಗಿದೆ</translation>
+<translation id="2775884851269838147">ಮೊದಲ ಪ್ರಿಂಟ್ ಪುಟ</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">ಸಂಪರ್ಕವನ್ನು ರೀಸೆಟ್ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="2792012897584536778">ಈ ಸಾಧನದ ನಿರ್ವಾಹಕರು ಭದ್ರತೆಯ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಸೆಟಪ್ ಮಾಡಿದ್ದು, ಅದು ನೀವು ಭೇಟಿ ನೀಡುವ ವೆಬ್‌ಸೈಟ್‌ಗಳಲ್ಲಿನ ವಿಷಯವನ್ನು ನೋಡಲು ಅವರನ್ನು ಅನುಮತಿಸಬಹುದು.</translation>
 <translation id="2799020568854403057">ಮುಂದಿರುವ ಸೈಟ್‌ನಲ್ಲಿ ಹಾನಿಕಾರಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿವೆ</translation>
 <translation id="2799223571221894425">ಮರುಪ್ರಾರಂಭಿಸು</translation>
 <translation id="2803306138276472711">Google ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಇತ್ತೀಚೆಗೆ <ph name="SITE" /> ನಲ್ಲಿ <ph name="BEGIN_LINK" />ಮಾಲ್‌ವೇರ್ ಪತ್ತೆಹಚ್ಚಿದೆ<ph name="END_LINK" />. ವೆಬ್‌ಸೈಟ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಸುರಕ್ಷಿತವಾಗಿದ್ದರೂ, ಕೆಲವೊಮ್ಮೆ ಮಾಲ್‌ವೇರ್‌ಗೆ ತುತ್ತಾಗಿರುತ್ತವೆ.</translation>
+<translation id="2807052079800581569">ಚಿತ್ರ Y ಸ್ಥಿತಿ</translation>
+<translation id="2809804249696361569">ಎರಡೂ ಶೀಟ್</translation>
 <translation id="2824775600643448204">ವಿಳಾಸ ಹಾಗೂ ಹುಡುಕಾಟ ಪಟ್ಟಿ</translation>
 <translation id="2826760142808435982"><ph name="CIPHER" /> ಬಳಸಿಕೊಂಡು ಸಂಪರ್ಕವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ದೃಢೀಕರಿಸಲಾಗಿದೆ ಮತ್ತು <ph name="KX" /> ಅನ್ನು ಕೀ ವಿನಿಮಯ ಯಾಂತ್ರಿಕತೆಯಂತೆ ಬಳಸುತ್ತದೆ.</translation>
 <translation id="2835170189407361413">ಫಾರ್ಮ್ ತೆರವುಗೊಳಿಸು</translation>
@@ -404,6 +430,7 @@
 <translation id="290376772003165898"><ph name="LANGUAGE" /> ನಲ್ಲಿನ ಪುಟ ಇಲ್ಲವೇ?</translation>
 <translation id="2909946352844186028">ನೆಟ್‌ವರ್ಕ್ ಬದಲಾವಣೆಯನ್ನು ಪತ್ತೆ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="2910133103376701357">ನಿಮ್ಮ ಸಾಧನ ಮತ್ತು ಖಾತೆಯನ್ನು <ph name="ENROLLMENT_DOMAIN" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ.</translation>
+<translation id="2911973620368911614">ಕೆಲಸದ ಖಾತೆ ಬಳಕೆದಾರ ಐಡಿ</translation>
 <translation id="2916038427272391327">ಇತರ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="2922350208395188000">ಸರ್ವರ್‌ನ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="2925673989565098301">ವಿತರಣೆ ವಿಧಾನ</translation>
@@ -413,6 +440,7 @@
 <translation id="2934466151127459956">Government-Letter</translation>
 <translation id="2941952326391522266">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರವು <ph name="DOMAIN2" /> ದಿಂದ ಆಗಿದೆ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation>
 <translation id="2948083400971632585">ಸಂಪರ್ಕಕ್ಕಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿರುವ ಯಾವುದೇ ಪ್ರಾಕ್ಸಿಗಳನ್ನು ನೀವು ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಪುಟದಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬಹುದು.</translation>
+<translation id="2951588413176968965">ನನ್ನ ಮೇಲ್‌ಬಾಕ್ಸ್</translation>
 <translation id="295526156371527179">ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯನೀತಿಯು ನಿಘಂಟು ಆಗಿಲ್ಲದಿರುವ ಕಾರಣದಿಂದಾಗಿ, ಕಾರ್ಯನೀತಿಯ ಮೂಲಕ ನಿರ್ದಿಷ್ಟಪಡಿಸಿರುವಂತೆ ಅದನ್ನು ವಿಲೀನಗೊಳಿಸಲಾಗಿಲ್ಲ.</translation>
 <translation id="2955913368246107853">ಹುಡುಕಿ ಬಾರ್ ಅನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="2969319727213777354">ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು, ನಿಮ್ಮ ಗಡಿಯಾರವನ್ನು ಸರಿಯಾಗಿ ಹೊಂದಿಸಬೇಕಾದ ಅಗತ್ಯವಿದೆ. ವೆಬ್‌ಸೈಟ್‌ಗಳು ತಮ್ಮನ್ನು ಗುರುತಿಸಲು ಬಳಸುವ ಪ್ರಮಾಣಪತ್ರಗಳು ನಿರ್ದಿಷ್ಟ ಅವಧಿಗಳಲ್ಲಿ ಮಾತ್ರ ಮಾನ್ಯವಾಗಿರುವ ಕಾರಣ ಹೀಗಾಗುತ್ತದೆ. ನಿಮ್ಮ ಸಾಧನದ ಗಡಿಯಾರವು ತಪ್ಪಾಗಿರುವ ಕಾರಣ, Google Chrome ಗೆ ಈ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
@@ -427,6 +455,7 @@
 <translation id="2991174974383378012">ವೆಬ್‌ಸೈಟ್‌ಗಳ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳುವುದು</translation>
 <translation id="2991571918955627853">ವೆಬ್‌ಸೈಟ್ HSTS ಅನ್ನು ಬಳಸುವ ಕಾರಣದಿಂದ ನೀವು ಸದ್ಯಕ್ಕೆ <ph name="SITE" /> ಅನ್ನು ಭೇಟಿ ನೀಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೆಟ್‌ವರ್ಕ್ ದೋಷಗಳು ಮತ್ತು ಆಕ್ರಮಣಗಳು ಸಾಮಾನ್ಯವಾಗಿ ತಾತ್ಕಾಲಿಕವಾಗಿವೆ, ಹಾಗಾಗಿ ಈ ಪುಟವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಕಾರ್ಯ ನಿರ್ವಹಿಸಬಹುದು.</translation>
 <translation id="2996674880327704673">Google ನಿಂದ ಸಲಹೆಗಳು</translation>
+<translation id="3002501248619246229">ಇನ್‌ಪುಟ್ ಟ್ರೇ ಮೀಡಿಯಾವನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="3005723025932146533">ಉಳಿಸಲಾದ ನಕಲನ್ನು ತೋರಿಸು</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> ಗೆ CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಒಮ್ಮೆ ಖಚಿತಪಡಿಸಿದರೆ, ನಿಮ್ಮ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
 <translation id="3010559122411665027">ಪಟ್ಟಿ ನಮೂದು "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -439,12 +468,14 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">ಪ್ಯಾಚ್ ಸೇವೆ</translation>
 <translation id="3064966200440839136">ಬಾಹ್ಯ ಅಪ್ಲಿಕೇಶನ್‌‌ ಮೂಲಕರ ಪಾವತಿಸಲು ಅದೃಶ್ಯ ಮೋಡ್‌‌ ತೊರೆಯಲಾಗುತ್ತಿದೆ. ಮುಂದುವರಿಸುವುದೇ?</translation>
+<translation id="3080254622891793721">ಗ್ರಾಫಿಕ್</translation>
 <translation id="3086579638707268289">ವೆಬ್‌ನಲ್ಲಿನ ನಿಮ್ಮ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3087734570205094154">ಕೆಳಗೆ</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">ಪಿಕಪ್ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="3105172416063519923">ಸ್ವತ್ತು ID:</translation>
 <translation id="3109728660330352905">ಈ ಪುಟ ವೀಕ್ಷಿಸುವ ಅಧಿಕಾರ ನಿಮಗಿಲ್ಲ</translation>
+<translation id="3113284927548439113">ಮೂರನೇ ಶಿಫ್ಟ್</translation>
 <translation id="3116158981186517402">ಲ್ಯಾಮಿನೇಟ್ ಮಾಡಿ</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />ಸಂಪರ್ಕ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ಸ್ ರನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ‌<ph name="END_LINK" />.</translation>
@@ -467,6 +498,7 @@
 <translation id="3209034400446768650">ಈ ಪುಟವು, ಶುಲ್ಕ ವಿಧಿಸಬಹುದು</translation>
 <translation id="3212581601480735796"><ph name="HOSTNAME" /> ನಲ್ಲಿ ನಿಮ್ಮ ಚಟುವಟಿಕೆಯ ಮೇಲೆ ನಿಗಾ ಇಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3215092763954878852">WebAuthn ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
+<translation id="3218181027817787318">ಸಂಬಂಧಿತ</translation>
 <translation id="3225919329040284222">ಆಂತರಿಕ ಮಾನದಂಡಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗದ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸರ್ವರ್ ಹಾಜರಿಪಡಿಸಿದೆ. ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ಸಲುವಾಗಿ ಕೆಲವು ಹೆಚ್ಚು ಸುರಕ್ಷಿತ ವೆಬ್ ಸೈಟ್‌ಗಳಲ್ಲಿ ಈ ಮಾನದಂಡಗಳನ್ನು ಸೇರ್ಪಡೆಗೊಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="3226128629678568754">ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡುವುದಕ್ಕೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಮರುಸಲ್ಲಿಸಲು ಮರುಲೋಡ್ ಬಟನ್ ಒತ್ತಿರಿ.</translation>
 <translation id="3227137524299004712">ಮೈಕ್ರೋಫೋನ್</translation>
@@ -501,6 +533,7 @@
 <translation id="3399952811970034796">ವಿತರಣೆಯ ವಿಳಾಸಗಳು</translation>
 <translation id="3422248202833853650">ಮೆಮೊರಿ ಮುಕ್ತಗೊಳಿಸಲು ಇತರ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ನಿರ್ಗಮಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> ಅನ್ನು ಪ್ರಸ್ತುತ ತಲುಪಲಾಗುತ್ತಿಲ್ಲ.</translation>
+<translation id="3423742043356668186">ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸಿಸ್ಟಂ</translation>
 <translation id="3427092606871434483">ಅನುಮತಿಸಿ (ಡಿಫಾಲ್ಟ್)</translation>
 <translation id="3427342743765426898">&amp;ಎಡಿಟ್ ಮಾಡುವುದನ್ನು ಪುನಃ ಮಾಡು</translation>
 <translation id="342781501876943858">ನೀವು ಇತರ ಸೈಟ್‌ಗಳಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದ್ದಲ್ಲಿ Chromium ನಿಮ್ಮ ಪಾಸವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
@@ -510,6 +543,7 @@
 <translation id="3447661539832366887">ಈ ಸಾಧನದ ಮಾಲೀಕರು ಡೈನೊಸಾರ್ ಆಟವನ್ನು ಆಫ್ ಮಾಡಿದ್ದಾರೆ.</translation>
 <translation id="3447884698081792621">ಪ್ರಮಾಣಪತ್ರವನ್ನು ತೋರಿಸಿ (<ph name="ISSUER" /> ಇವರಿಂದ ನೀಡಲಾಗಿದೆ)</translation>
 <translation id="3452404311384756672">ವಿರಾಮವನ್ನು ಪಡೆಯಿರಿ:</translation>
+<translation id="3453962258458347894">ಮರುಪ್ರಯತ್ನಗಳ ಸಂಖ್ಯೆ</translation>
 <translation id="3456231139987291353">Number-11 (Envelope)</translation>
 <translation id="3461824795358126837">ಹೈಲೈಟರ್</translation>
 <translation id="3462200631372590220">ಸುಧಾರಿತ ಆಯ್ಕೆಮಾಡಿ</translation>
@@ -517,15 +551,20 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" />, ಪ್ರಸ್ತುತ ತೆರೆದಿದೆ, ತೆರೆದಿರುವ ಟ್ಯಾಬ್‌ಗೆ ಬದಲಾಯಿಸಲು, Tab ಒತ್ತಿ, ನಂತರ Enter ಒತ್ತಿರಿ</translation>
 <translation id="3479552764303398839">ಈಗ ಬೇಡ</translation>
 <translation id="3484560055331845446">ನಿಮ್ಮ Google ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು. ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಈಗಲೇ ಬದಲಾಯಿಸುವಂತೆ Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ.</translation>
+<translation id="3487845404393360112">ಟ್ರೇ 4</translation>
 <translation id="3495081129428749620">ಪುಟದಲ್ಲಿ ಹುಡುಕಿ
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ ಏಕೆಂದರೆ, ಅದೇ ಕಾರ್ಯನೀತಿಯ ಗುಂಪಿನ ಮತ್ತೊಂದು ಕಾರ್ಯನೀತಿಯು ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="3513704683820682405">ವರ್ಧಿತ ವಾಸ್ತವತೆ</translation>
+<translation id="3518941727116570328">ಹಲವಾರು ಆಬ್ಜೆಕ್ಟ್‌ಗಳ ನಿರ್ವಹಣೆ</translation>
 <translation id="3528171143076753409">ಸರ್ವರ್‌ನ ಪ್ರಮಾಣಪತ್ರ ನಂಬಲರ್ಹವಾಗಿಲ್ಲ.</translation>
 <translation id="3528485271872257980">ಗಾಢ ಕಂದು</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{ಸಿಂಕ್ ಮಾಡಿದ ಸಾಧನಗಳಲ್ಲಿ ಕನಿಷ್ಠ 1 ಐಟಂ}=1{1 ಐಟಂ (ಮತ್ತು ಸಿಂಕ್ ಮಾಡಿದ ಸಾಧನಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಐಟಂಗಳು)}one{# ಐಟಂಗಳು (ಮತ್ತು ಸಿಂಕ್ ಮಾಡಿದ ಸಾಧನಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಐಟಂಗಳು)}other{# ಐಟಂಗಳು (ಮತ್ತು ಸಿಂಕ್ ಮಾಡಿದ ಸಾಧನಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಐಟಂಗಳು)}}</translation>
+<translation id="3531780078352352885">ಜಾಬ್ ಶೀಟ್‌ಗಳು</translation>
+<translation id="3533328374079021623">ಮೇಲ್‌ಬಾಕ್ಸ್ 5</translation>
 <translation id="3539171420378717834">ಈ ಸಾಧನದಲ್ಲಿ ಈ ಕಾರ್ಡ್‌ನ ನಕಲನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ</translation>
 <translation id="3553513561058684206">ನಿಮಗಾಗಿ</translation>
+<translation id="3558573058928565255">ದಿನದ ಸಮಯ</translation>
 <translation id="3566021033012934673">ನಿಮ್ಮ ಸಂಪರ್ಕವು ಖಾಸಗಿಯಲ್ಲ</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635"><ph name="SITE" /> ನಲ್ಲಿ ಎಂಬೆಡ್ ಮಾಡಲಾದ ಪುಟವು ಹೀಗೆ ಹೇಳುತ್ತದೆ</translation>
@@ -534,8 +573,10 @@
 <translation id="3583757800736429874">&amp;ಸರಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation>
 <translation id="3584299510153766161">ಕೆಳಭಾಗದಲ್ಲಿ ಎರಡು ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
 <translation id="3586931643579894722">ವಿವರಗಳನ್ನು ಮರೆಮಾಡಿ</translation>
+<translation id="3587738293690942763">ಮಧ್ಯಮ</translation>
 <translation id="3592413004129370115">Italian (Envelope)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">ಫೀಡ್ ಓರಿಯಂಟೇಶನ್</translation>
 <translation id="3614103345592970299">ಗಾತ್ರ 2</translation>
 <translation id="361438452008624280">ಪಟ್ಟಿ ನಮೂದು "<ph name="LANGUAGE_ID" />": ಅಪರಿಚಿತ ಭಾಷೆ ಅಥವಾ ಬೆಂಬಲವಿಲ್ಲದ ಭಾಷೆ.</translation>
 <translation id="3615877443314183785">ಮಾನ್ಯವಾದ ಅವಧಿ-ಮುಕ್ತಾಯ ದಿನಾಂಕವನ್ನು ನಮೂದಿಸಿ</translation>
@@ -543,6 +584,7 @@
 <translation id="362276910939193118">ಪೂರ್ಣ ಇತಿಹಾಸ ತೋರಿಸಿ</translation>
 <translation id="3630155396527302611">ಒಂದು ವೇಳೆ ನೆಟ್‌ವರ್ಕ್ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುವ ಒಂದು ಪ್ರೊಗ್ರಾಂನಂತೆ ಇದನ್ನು ಈಗಾಗಲೇ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದ್ದರೆ, ಅದನ್ನು ಪಟ್ಟಿಯಿಂದ ತೆಗೆಯಲು ಮತ್ತು ಪುನಃ ಅದನ್ನು ಸೇರಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="3631244953324577188">ಬಯೋಮೆಟ್ರಿಕ್ಸ್</translation>
+<translation id="3634530185120165534">ಟ್ರೇ 5</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">ಊರ್ಜಿತಗೊಳಿಸುವಿಕೆಯು ಯಶಸ್ವಿಯಾಗಿದೆ</translation>
 <translation id="3655670868607891010">ಇದು ನಿಮಗೆ ಪದೇ ಪದೇ ಎದುರಾಗುತ್ತಿದ್ದರೆ, <ph name="HELP_LINK" /> ಇವುಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -576,16 +618,21 @@
 <translation id="3760561303380396507">CVC ಬದಲಿಗೆ Windows Hello ಬಳಸುವಿರಾ?</translation>
 <translation id="3761718714832595332">ಸ್ಥಿತಿಯನ್ನು ಮರೆಮಾಡಿ</translation>
 <translation id="3765032636089507299">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಪುಟವು ನಿರ್ಮಾಣ ಹಂತದಲ್ಲಿದೆ.</translation>
+<translation id="3765588406864124894">ಮೇಲ್‌ಬಾಕ್ಸ್ 9</translation>
 <translation id="3778403066972421603">ಈ ಕಾರ್ಡ್‌ ಅನ್ನು ನಿಮ್ಮ Google ಖಾತೆ ಮತ್ತು ಈ ಸಾಧನದಲ್ಲಿ ಉಳಿಸಲು ಬಯಸುವಿರಾ?</translation>
+<translation id="3780694243617746492">ಔಟ್‌ಪುಟ್ ಬಿನ್</translation>
 <translation id="3781428340399460090">ಗಾಢ ಗುಲಾಬಿ</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569">ಅವಧಿ-ಮುಕ್ತಾಯ <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="3789155188480882154">ಗಾತ್ರ 16</translation>
 <translation id="3797522431967816232">Prc3 (Envelope)</translation>
+<translation id="3799805948399000906">ವಿನಂತಿಸಲಾದ ಫಾಂಟ್</translation>
+<translation id="3807366285948165054">ಚಿತ್ರ X ಶಿಫ್ಟ್</translation>
 <translation id="3807873520724684969">ಹಾನಿಕಾರಕ ವಿಷಯವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="3808375843007691220">ಎಚ್ಚರಿಕೆ: ಪ್ರಾಯೋಗಿಕ ವೈಶಿಷ್ಟ್ಯಗಳು ಮುಂದೆ ಬರಲಿವೆ!</translation>
 <translation id="3810973564298564668">ನಿರ್ವಹಿಸು</translation>
 <translation id="382518646247711829">ನೀವು ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಬಳಸಿದರೆ...</translation>
+<translation id="3827112369919217609">ಪರಿಪೂರ್ಣ</translation>
 <translation id="3828924085048779000">ಖಾಲಿ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ.</translation>
 <translation id="3831915413245941253">ಹೆಚ್ಚುವರಿ ಕಾರ್ಯವಿಧಾನಗಳಿಗಾಗಿ <ph name="ENROLLMENT_DOMAIN" /> ವಿಸ್ತರಣೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದೆ. ವಿಸ್ತರಣೆಗಳು ನಿಮ್ಮ ಕೆಲವು ಡೇಟಾಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತವೆ.</translation>
 <translation id="3832522519263485449">ಎಡಭಾಗದಲ್ಲಿ ಅನೇಕ ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
@@ -594,6 +641,7 @@
 <translation id="3884278016824448484">ಸಂಘರ್ಷಗೊಳ್ಳುತ್ತಿರುವ ಸಾಧನ ಗುರುತಿಸುವಿಕೆ</translation>
 <translation id="3885155851504623709">ಪಾರಿಷ್</translation>
 <translation id="388632593194507180">ನಿಗಾ ಇಡುತ್ತಿರುವುದನ್ನು ಪತ್ತೆಹಚ್ಚಲಾಗಿದೆ</translation>
+<translation id="3886948180919384617">ಸ್ಟ್ಯಾಕರ್ 3</translation>
 <translation id="3890664840433101773">ಇಮೇಲ್ ಸೇರಿಸಿ</translation>
 <translation id="3897092660631435901">ಮೆನು</translation>
 <translation id="3901925938762663762">ಕಾರ್ಡ್ ಅವಧಿಯು ಮುಗಿದಿದೆ</translation>
@@ -628,7 +676,9 @@
 <translation id="4075941231477579656">ಸ್ಪರ್ಶ ID</translation>
 <translation id="4079302484614802869">ಪ್ರಾಕ್ಸಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು .pac ಸ್ಕ್ರಿಪ್ಟ್ URL ಬಳಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ, ಹೊಂದಿಸಿದ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್‌ಗಳಲ್ಲ.</translation>
 <translation id="4082393374666368382">ಸೆಟ್ಟಿಂಗ್‌ಗಳು - ನಿರ್ವಹಣೆ</translation>
+<translation id="4088981014127559358">ಅಂಚು 1 ಚಿತ್ರ Y ಶಿಫ್ಟ್</translation>
 <translation id="4098354747657067197">ವಂಚನೆಯ ಸೈಟ್ ಮುಂದಿದೆ</translation>
+<translation id="4101413244023615925">ಪಠ್ಯ ಮತ್ತು ಗ್ರಾಫಿಕ್</translation>
 <translation id="4103249731201008433">ಸಾಧನದ ಸರಣಿಯ ಸಂಖ್ಯೆ ಅಮಾನ್ಯವಾಗಿದೆ</translation>
 <translation id="4103763322291513355">ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರು ವಿಧಿಸಿರುವ ಕಪ್ಪುಪಟ್ಟಿಯ URLಗಳು ಮತ್ತು ಇತರ ನೀತಿಗಳನ್ನು ವೀಕ್ಷಿಸಲು &lt;strong&gt;chrome://policy&lt;/strong&gt; ಗೆ ಭೇಟಿ ನೀಡಿ.</translation>
 <translation id="4108231218301530806">ಮುಂದಿನ ಬಾರಿ ಈ ಕಾರ್ಡ್ ಪರಿಶೀಲಿಸಲು ಫಿಂಗರ್‌ ಪ್ರಿಂಟ್ ಬಳಸಿ.</translation>
@@ -641,6 +691,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 ಇತರೆ}one{# ಇತರೆ}other{# ಇತರೆ}}</translation>
 <translation id="4130226655945681476">ನೆಟ್‌ವರ್ಕ್ ಕೇಬಲ್‌ಗಳು, ಮೊಡೆಮ್ ಮತ್ತು ರೂಟರ್ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="413544239732274901">ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation>
+<translation id="4142935452406587478">ಟ್ರೇ 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಬಳಸಿ (ಪತ್ತೆ ಮಾಡಿ)</translation>
 <translation id="4159784952369912983">ನೇರಳೆ</translation>
@@ -683,6 +734,7 @@
 <translation id="4258748452823770588">ತಪ್ಪಾದ ಸಹಿ</translation>
 <translation id="4261046003697461417">ಸಂರಕ್ಷಿತ ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಟಿಪ್ಪಣಿ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="4265872034478892965">ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಅನುಮತಿಸಲಾಗಿದೆ</translation>
+<translation id="4270541775497538019">ಸ್ಟ್ಯಾಕರ್ 6</translation>
 <translation id="4275830172053184480">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="4277028893293644418">ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ</translation>
 <translation id="4279811152705618813">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು <ph name="ENROLLMENT_DOMAIN" /> ಡೊಮೇನ್ ನಿರ್ವಹಿಸುತ್ತಿದೆ</translation>
@@ -698,6 +750,7 @@
 <translation id="4318566738941496689">ನಿಮ್ಮ ಸಾಧನದ ಹೆಸರು ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ವಿಳಾಸ</translation>
 <translation id="4325863107915753736">ಲೇಖನ ಕಂಡುಬರಲಿಲ್ಲ</translation>
 <translation id="4326324639298822553">ನಿಮ್ಮ ಮುಕ್ತಾಯ ದಿನಾಂಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation>
+<translation id="4331519897422864041">ಸ್ಟ್ಯಾಕರ್ 5</translation>
 <translation id="4331708818696583467">ಸುರಕ್ಷಿತವಲ್ಲ</translation>
 <translation id="4340982228985273705">ಈ ಕಂಪ್ಯೂಟರ್‌ ಅನ್ನು ಎಂಟರ್‌ಪ್ರೈಸ್ ನಿರ್ವಹಣೆ ಮಾಡುತ್ತಿದೆ ಎಂದು ಪತ್ತೆಹಚ್ಚಲಾಗಿಲ್ಲ, ಆದ್ದರಿಂದ ಕಾರ್ಯನೀತಿಯು Chrome ವೆಬ್‌ ಸ್ಟೋರ್‌ನಲ್ಲಿ ಹೋಸ್ಟ್ ಮಾಡಲಾದ ವಿಸ್ತರಣೆಗಳನ್ನು ಮಾತ್ರ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು. Chrome ವೆಬ್‌ ಸ್ಟೋರ್‌ ಅಪ್‌ಡೇಟ್‌ URL "<ph name="CWS_UPDATE_URL" />" ಆಗಿರುತ್ತದೆ.</translation>
 <translation id="4346197816712207223">ಸ್ವೀಕೃತ ಕ್ರೆಡಿಟ್‌ ಕಾರ್ಡ್‌ಗಳು</translation>
@@ -713,6 +766,7 @@
 <translation id="4372948949327679948">ನಿರೀಕ್ಷಿತ <ph name="VALUE_TYPE" /> ಮೌಲ್ಯ.</translation>
 <translation id="4377125064752653719">ನೀವು <ph name="DOMAIN" /> ಅನ್ನು ತಲುಪಲು ಪ್ರಯತ್ನಿಸಿದಿರಿ, ಆದರೆ ಸರ್ವರ್ ನೀಡಿದ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಅದರ ನೀಡುವವರು ಹಿಂತೆಗೆದುಕೊಂಡಿದ್ದಾರೆ. ಇದರರ್ಥ ಸರ್ವರ್ ನೀಡಿದ ಸುರಕ್ಷತೆ ರುಜುವಾತುಗಳನ್ನು ಖಂಡಿತವಾಗಿ ನಂಬಲಾಗುವುದಿಲ್ಲ. ನೀವು ಆಕ್ರಮಣಕಾರರೊಂದಿಗೆ ಸಂವಹಿಸುತ್ತಿರಬಹುದು.</translation>
 <translation id="4378154925671717803">ಫೋನ್</translation>
+<translation id="4390472908992056574">ಅಂಚು</translation>
 <translation id="4406896451731180161">ಹುಡುಕಾಟದ ಫಲಿತಾಂಶಗಳು</translation>
 <translation id="4408413947728134509"><ph name="NUM_COOKIES" /> ಕುಕೀಗಳು</translation>
 <translation id="4415426530740016218">ಪಿಕಪ್ ವಿಳಾಸ</translation>
@@ -739,6 +793,7 @@
 <translation id="4522570452068850558">ವಿವರಗಳು</translation>
 <translation id="4524138615196389145">ಇನ್ನು ಮುಂದೆ WebAuthn ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಿ</translation>
 <translation id="4524805452350978254">ಕಾರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="4542971377163063093">ಟ್ರೇ 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ಫ್ಲ್ಯಾಶ್‌</translation>
 <translation id="4558551763791394412">ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -754,6 +809,7 @@
 <translation id="4628948037717959914">ಫೋಟೋ</translation>
 <translation id="4635654612248442824"><ph name="ORIGIN" /> ಸೈಟ್ ತನ್ನ ಎಲ್ಲಾ ವಿನಂತಿಗಳಿಗೆ ಮೂಲ ಕಾರ್ಯನೀತಿಯೊಂದನ್ನು ಅನ್ವಯಿಸಲು ವಿನಂತಿಸಿದೆ, ಆದರೆ ಈ ನೀತಿಯನ್ನು ಪ್ರಸ್ತುತ ಅನ್ವಯಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="464342062220857295">ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹುಡುಕಿ</translation>
+<translation id="4644670975240021822">ಹಿಮ್ಮುಖ ಆರ್ಡರ್ ಮುಖ ಕೆಳಗೆ</translation>
 <translation id="4646534391647090355">ನನ್ನನ್ನು ಈಗ ಅಲ್ಲಿಗೆ ಕರೆದೊಯ್ಯಿರಿ</translation>
 <translation id="4658638640878098064">ಮೇಲಿನ ಎಡಭಾಗದಲ್ಲಿ ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="4668929960204016307">,</translation>
@@ -762,6 +818,7 @@
 <translation id="4690462567478992370">ಅಮಾನ್ಯ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು ನಿಲ್ಲಿಸಿ</translation>
 <translation id="4691835149146451662">Architecture-A (Envelope)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">ಅಂಚು</translation>
 <translation id="4708268264240856090">ನಿಮ್ಮ ಸಂಪರ್ಕಕ್ಕೆ ಅಡ್ಡಿಯಾಗಿದೆ</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />Windows ನೆಟ್‌ವರ್ಕ್ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ಸ್ ರನ್ ಮಾಡಲಾಗುತ್ತಿದೆ<ph name="END_LINK" /></translation>
@@ -779,9 +836,11 @@
 <translation id="4764776831041365478"><ph name="URL" /> ನಲ್ಲಿರುವ ವೆಬ್‌ಪುಟವು ತಾತ್ಕಾಲಿಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು ಅಥವಾ ಅದನ್ನು ಶಾಶ್ವತವಾಗಿ ಹೊಸ ವೆಬ್ ವಿಳಾಸಕ್ಕೆ ಸರಿಸಲಾಗಿರಬಹುದು.</translation>
 <translation id="4766713847338118463">ಕೆಳಭಾಗದಲ್ಲಿ ಎರಡು ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="4771973620359291008">ಅಪರಿಚಿತ ದೋಷವೊಂದು ಎದುರಾಗಿದೆ.</translation>
+<translation id="4780366598804516005">ಮೇಲ್‌ಬಾಕ್ಸ್ 1</translation>
 <translation id="4780900888022378816">ನಿಮ್ಮ ಸಾಧನವನ್ನು <ph name="ENROLLMENT_DOMAIN" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ ಮತ್ತು ನಿಮ್ಮ ಖಾತೆಯನ್ನು <ph name="ACCOUNT_DOMAIN" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="4785689107224900852">ಈ ಟ್ಯಾಬ್‌ಗೆ ಬದಲಾಯಿಸಿ</translation>
 <translation id="4791134497475588553">ಇನ್‍‍ಸ್ಟಾಲ್ ಮಾಡಿರುವ Linux ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಅವುಗಳನ್ನು ಕೊನೆಯದಾಗಿ ಬಳಸಿದ ಸಮಯ</translation>
+<translation id="4796594887379589189">ಕೆಲಸದ ಖಾತೆ ಐಡಿ</translation>
 <translation id="4798078619018708837">ನಿಮ್ಮ ಕಾರ್ಡ್‌ ವಿವರಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು <ph name="CREDIT_CARD" /> ಗೆ ಸಂಬಂಧಿಸಿದ ಅವಧಿ ಮುಕ್ತಾಯದ ದಿನಾಂಕ ಮತ್ತು CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಖಚಿತಪಡಿಸಿದ ನಂತರ, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿನ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
 <translation id="4800132727771399293">ನಿಮ್ಮ ಮುಕ್ತಾಯದ ದಿನಾಂಕ ಮತ್ತು CVC ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="480334179571489655">ಮೂಲ ಕಾರ್ಯನೀತಿಯ ದೋಷ</translation>
@@ -789,6 +848,7 @@
 <translation id="4807049035289105102">ನಿಮಗೆ ಸದ್ಯಕ್ಕೆ <ph name="SITE" /> ವೆಬ್‌ಸೈಟ್‌‌ಗೆ ಭೇಟಿ ನೀಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಏಕೆಂದರೆ, ಈ ವೆಬ್‌ಸೈಟ್‌‌ Google Chrome ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗದಂಥ ರುಜುವಾತುಗಳನ್ನು ರವಾನಿಸಿದೆ. ನೆಟ್‌ವರ್ಕ್ ದೋಷಗಳು ಮತ್ತು ಆಕ್ರಮಣಗಳು ತಾತ್ಕಾಲಿಕವಾಗಿರುತ್ತವೆ. ಹೀಗಾಗಿ ಈ ಪುಟವು ಬಹುಶಃ ನಂತರ ಕಾರ್ಯ ನಿರ್ವಹಿಸಬಹುದು.</translation>
 <translation id="4813512666221746211">ನೆಟ್‌ವರ್ಕ್  ದೋಷ</translation>
 <translation id="4816492930507672669">ಪುಟಕ್ಕೆ ಹೊಂದಿಸು</translation>
+<translation id="484462545196658690">ಆಟೋ</translation>
 <translation id="4850886885716139402">ವೀಕ್ಷಣೆ</translation>
 <translation id="4854362297993841467">ಈ ವಿತರಣೆಯ ವಿಧಾನ ಲಭ್ಯವಿಲ್ಲ. ಬೇರೊಂದು ವಿಧಾನವನ್ನು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="4876188919622883022">ಸರಳೀಕೃತ ವೀಕ್ಷಣೆ</translation>
@@ -798,6 +858,7 @@
 <translation id="4879491255372875719">ಸ್ವಯಂಚಾಲಿತ (ಡಿಫಾಲ್ಟ್)</translation>
 <translation id="4880827082731008257">ಹುಡುಕಾಟ ಇತಿಹಾಸ</translation>
 <translation id="4881695831933465202">ತೆರೆ</translation>
+<translation id="4892518386797173871">ಹಿಂಬದಿ</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">ಉಳಿಸಿ...</translation>
 <translation id="4913987521957242411">ಮೇಲಿನ ಎಡಭಾಗದಲ್ಲಿ ತೂತು ಮಾಡಿ</translation>
@@ -807,6 +868,7 @@
 <translation id="4926049483395192435">ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕಾಗಿದೆ.</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> ಹೀಗೆ ಹೇಳುತ್ತದೆ</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">ದೊಡ್ಡ ಸಾಮರ್ಥ್ಯ</translation>
 <translation id="4943703118917034429">ವರ್ಚುವಲ್ ರಿಯಾಲಿಟಿ</translation>
 <translation id="4943872375798546930">ಯಾವುದೇ ಫಲಿತಾಂಶಗಳಿಲ್ಲ</translation>
 <translation id="4950898438188848926">ಟ್ಯಾಬ್ ಬದಲಿಸುವ ಬಟನ್, ತೆರೆದಿರುವ ಟ್ಯಾಬ್, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /> ಗೆ ಬದಲಾಯಿಸಲು Enter ಒತ್ತಿರಿ</translation>
@@ -839,8 +901,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1 ಬಳಕೆಯಲ್ಲಿದೆ)}one{(# ಬಳಕೆಯಲ್ಲಿದೆ)}other{(# ಬಳಕೆಯಲ್ಲಿದೆ)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />ಪ್ರಾಕ್ಸಿ ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">ಮೇಲ್‌ಬಾಕ್ಸ್ 4</translation>
 <translation id="5087286274860437796">ಈ ಸಮಯದಲ್ಲಿ ಸರ್ವರ್‌ನ ಪ್ರಮಾಣಪತ್ರ ಮಾನ್ಯವಾಗಿಲ್ಲ.</translation>
 <translation id="5087580092889165836">ಕಾರ್ಡ್ ಸೇರಿಸಿ</translation>
+<translation id="5088142053160410913">ಆಪರೇಟರ್‌ಗೆ ಸಂದೇಶ</translation>
 <translation id="5089810972385038852">ರಾಜ್ಯ</translation>
 <translation id="5093232627742069661">ಝೆಡ್ ಮಾದರಿಯಲ್ಲಿ ಮಡಿಸಿ</translation>
 <translation id="5094747076828555589">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರವು Chromium ಮೂಲಕ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿಲ್ಲ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation>
@@ -851,15 +915,18 @@
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-ಬಿಟ್)</translation>
 <translation id="5121469660360593280">Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆ ಮೂಲಕ ಫ್ಲ್ಯಾಗ್ ಮಾಡಲಾದ ಭದ್ರತಾ ಈವೆಂಟ್‌ಗಳ ಕುರಿತ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ. ನೀವು ಭೇಟಿ ನೀಡುವ ಪುಟಗಳ URL ಗಳು, ಫೈಲ್ ಹೆಸರುಗಳು ಅಥವಾ ಮೆಟಾಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನ ಮತ್ತು Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ನೀವು ಬಳಸುವ ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಇದು ಒಳಗೊಂಡಿರಬಹುದು.</translation>
+<translation id="5123063207673082822">ವಾರಾಂತ್ಯ</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">ನಿಮ್ಮ ಕಾರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="5135404736266831032">ವಿಳಾಸಗಳನ್ನು ನಿರ್ವಹಿಸಿ...</translation>
 <translation id="5138227688689900538">ಕಡಿಮೆ ತೋರಿಸಿ</translation>
 <translation id="5141240743006678641">ನಿಮ್ಮ Google ರುಜುವಾತುಗಳ ಜೊತೆಗೆ ಸಿಂಕ್ ಮಾಡಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್‌ ಮಾಡಿ</translation>
 <translation id="5145883236150621069">ನೀತಿ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ದೋಷದ ಕೋಡ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ</translation>
+<translation id="5148809049217731050">ಮುಖ ಮೇಲಕ್ಕೆ</translation>
 <translation id="515292512908731282">C4 (Envelope)</translation>
 <translation id="5158275234811857234">ಕವರ್</translation>
 <translation id="5159010409087891077">ಪುಟವನ್ನು ಹೊಸ ಅದೃಶ್ಯ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ (⇧⌘N)</translation>
+<translation id="5161506081086828129">ಸ್ಟ್ಯಾಕರ್ 9</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> ಗೆ ಸಂಬಂಧಿಸಿದ CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಖಚಿತಪಡಿಸಿದ ನಂತರ, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿನ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
 <translation id="5169827969064885044">ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು ಅಥವಾ ಗುರುತು ಕಳ್ಳತನಕ್ಕೆ ಒಳಗಾಗಬಹುದು. ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಇದೀಗ ಬದಲಾಯಿಸುವಂತೆ Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="5170017743895942767">Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆ</translation>
@@ -880,6 +947,7 @@
 <translation id="5250209940322997802">"ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ"</translation>
 <translation id="5251803541071282808">ಕ್ಲೌಡ್</translation>
 <translation id="5252000469029418751">C7 (Envelope)</translation>
+<translation id="5254043433801397071">ಪ್ರಿಂಟ್ ವಿಷಯವನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">ಪಾವತಿ ಪೂರ್ಣಗೊಂಡಿದೆ</translation>
 <translation id="5266128565379329178">ಮೇಲ್ಭಾಗದಲ್ಲಿ ಬೈಂಡ್ ಮಾಡಿ</translation>
@@ -893,6 +961,7 @@
 <translation id="5287240709317226393">ಕುಕೀಸ್ ಅನ್ನು ತೋರಿಸಿ</translation>
 <translation id="5287456746628258573">ಈ ಸೈಟ್ ಹಳೆಯ ಸುರಕ್ಷತಾ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಈ ಸೈಟ್‌ಗೆ ಕಳುಹಿಸಿದಾಗ ಅದನ್ನು (ಉದಾಹರಣೆಗೆ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಅಥವಾ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸಂಖ್ಯೆಗಳು) ಬಹಿರಂಗಪಡಿಸಬಹುದು.</translation>
 <translation id="5288108484102287882">ಕಾರ್ಯನೀತಿ ಮೌಲ್ಯಗಳ ಮೌಲ್ಯೀಕರಣ ಪ್ರಕ್ರಿಯೆಯು ಎಚ್ಚರಿಕೆಯ ಸಂದೇಶಗಳನ್ನು ತೋರಿಸುತ್ತಿದೆ</translation>
+<translation id="5289384342738547352">ಹಲವಾರು ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳ ನಿರ್ವಹಣೆ</translation>
 <translation id="5295292838686006428">ಯಾವುದೋ ಸೈಟ್ ಅಥವಾ ಆ್ಯಪ್‌ನಲ್ಲಿನ ಡೇಟಾ ಉಲ್ಲಂಘನೆಯು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬಹಿರಂಗಪಡಿಸಿದೆ. ನಿಮ್ಮ ಉಳಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ತಕ್ಷಣ ಪರಿಶೀಲಿಸಬೇಕೆಂದು Chrome ಶಿಫಾರಸು ಮಾಡಿದೆ.</translation>
 <translation id="5299298092464848405">ನೀತಿಯ ಪಾರ್ಸಿಂಗ್‌ನಲ್ಲಿ ದೋಷ</translation>
 <translation id="5300589172476337783">ಪ್ರದರ್ಶಿಸಿ</translation>
@@ -917,10 +986,12 @@
 <translation id="5396631636586785122">ಬಲಭಾಗದ ಅಂಚನ್ನು ಹೊಲಿಯಿರಿ</translation>
 <translation id="5400836586163650660">ಬೂದು</translation>
 <translation id="540969355065856584">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಈ ಸಮಯದಲ್ಲಿ ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರವು ಮಾನ್ಯವಾಗಿಲ್ಲ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation>
+<translation id="541416427766103491">ಸ್ಟ್ಯಾಕರ್ 4</translation>
 <translation id="5421136146218899937">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ...</translation>
 <translation id="5430298929874300616">ಬುಕ್‌ಮಾರ್ಕ್‌ ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="5431657950005405462">ನಿಮ್ಮ ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />" ನಲ್ಲಿ ಸ್ಕೀಮಾ ಮೌಲ್ವೀಕರಣ ದೋಷ: <ph name="ERROR" /></translation>
+<translation id="5443468954631487277">ಹಿಮ್ಮುಖ ಆರ್ಡರ್ ಮುಖ ಮೇಲಕ್ಕೆ</translation>
 <translation id="5452270690849572955">ಈ <ph name="HOST_NAME" /> ಪುಟ ಕಂಡುಬರುವುದಿಲ್ಲ</translation>
 <translation id="5455374756549232013">ತಪ್ಪಾದ ನೀತಿಯ ಸಮಯಸ್ಟ್ಯಾಂಪ್</translation>
 <translation id="5457113250005438886">ಅಮಾನ್ಯ</translation>
@@ -942,7 +1013,9 @@
 <translation id="552553974213252141">ಪಠ್ಯವನ್ನು ಸರಿಯಾಗಿ ಪ್ರತ್ಯೇಕಿಸಲಾಗಿದೆಯೇ?</translation>
 <translation id="55293785478302737">ಅಂಚನ್ನು ಹೊಲಿಯಿರಿ</translation>
 <translation id="553484882784876924">Prc6 (Envelope)</translation>
+<translation id="5539243836947087108">ರಾಫ್ಟ್</translation>
 <translation id="5540224163453853">ವಿನಂತಿಸಿದ ಲೇಖನವನ್ನು ಹುಡುಕಲು ಸಾಧವಾಗಲಿಲ್ಲ.</translation>
+<translation id="5541086400771735334">ಮೇಲ್‌ಬಾಕ್ಸ್ 7</translation>
 <translation id="5541546772353173584">ಇಮೇಲ್ ಸೇರಿಸಿ</translation>
 <translation id="5545756402275714221">ನಿಮಗಾಗಿ ಲೇಖನಗಳು</translation>
 <translation id="5552137475244467770">Chrome, ನಿಯತಕಾಲಿಕವಾಗಿ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಪ್ರಕಟಿಸಲಾದ ಪಟ್ಟಿಗಳಿಗೆ ಹೋಲಿಸಿ ಪರಿಶೀಲಿಸುತ್ತದೆ. ಪರಿಶೀಲಿಸುವಾಗ, ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಬಳಕೆದಾರರ ಹೆಸರುಗಳನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು Google ಸೇರಿದಂತೆ ಯಾರಿಂದಲೂ ಓದಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
@@ -967,10 +1040,13 @@
 <translation id="5632627355679805402">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="TIME" /> ಸಮಯಕ್ಕೆ ನಿಮ್ಮ <ph name="BEGIN_LINK" />Google ಪಾಸ್‌ವರ್ಡ್<ph name="END_LINK" /> ನೊಂದಿಗೆ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ನಮೂದಿಸಿ.</translation>
 <translation id="5633066919399395251"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನ ದಾಳಿಕೋರರು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಇಲ್ಲವೇ ಅಳಿಸಲು ಅಪಾಯಕಾರಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು. <ph name="BEGIN_LEARN_MORE_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">ವಂಚನೀಯ ವಿಷಯವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
+<translation id="5644090287519800334">ಅಂಚು 1 ಚಿತ್ರ X ಶಿಫ್ಟ್</translation>
+<translation id="5645854190134202180">ಎರಡನೇ ಶಿಫ್ಟ್</translation>
 <translation id="5659593005791499971">ಇಮೇಲ್</translation>
 <translation id="5663614846592581799">9x11 (Envelope)</translation>
 <translation id="5663955426505430495">ಈ ಸಾಧನದ ನಿರ್ವಾಹಕರು ಹೆಚ್ಚುವರಿ ಕಾರ್ಯವಿಧಾನಗಳಿಗಾಗಿ ವಿಸ್ತರಣೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದಾರೆ. ವಿಸ್ತರಣೆಗಳು ನಿಮ್ಮ ಕೆಲವು ಡೇಟಾಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತವೆ.</translation>
 <translation id="5675650730144413517">ಈ ಪುಟ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ</translation>
+<translation id="568292603005599551">ಚಿತ್ರ X ಸ್ಥಿತಿ</translation>
 <translation id="5684874026226664614">ಓಹ್. ಈ ಪುಟವನ್ನು ಅನುವಾದಿಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="5685654322157854305">ಶಿಪ್ಪಿಂಗ್ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="5689199277474810259">JSON ಗೆ ರಫ್ತು ಮಾಡಿ</translation>
@@ -988,6 +1064,7 @@
 <translation id="5763042198335101085">ಮಾನ್ಯವಾದ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="5763703224595565476">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಬ್ರೌಸರ್‌ನಲ್ಲಿ Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ. Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆಯು ನಿಮ್ಮ ಕೆಲವು ಡೇಟಾಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="5765072501007116331">ವಿತರಣೆಯ ವಿಧಾನಗಳು ಹಾಗೂ ಆವಶ್ಯಕತೆಗಳನ್ನು ನೋಡಲು, ಒಂದು ವಿಳಾಸವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</translation>
+<translation id="5776313857861697733">ಆದ್ಯತೆ</translation>
 <translation id="5778550464785688721">MIDI ಸಾಧನಗಳು ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣ</translation>
 <translation id="5781136890105823427">ಪ್ರಾಯೋಗಿಕವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="578305955206182703">ಕಿತ್ತಳೆ ಹಳದಿ</translation>
@@ -1008,6 +1085,7 @@
 <translation id="5855253129151731373">ಈ ಸೈಟ್‌ನ ಹೋಸ್ಟ್ ಹೆಸರು <ph name="LOOKALIKE_DOMAIN" /> ಗೆ ಹೋಲುತ್ತಿದೆ. ಡೊಮೇನ್‌ ಹೆಸರಿಗೆ ಸಣ್ಣ ಪ್ರಮಾಣದ ಅಥವಾ ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದ ರೀತಿಯಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡುವ ಮೂಲಕ ದಾಳಿಕೋರರು ಕೆಲವೊಮ್ಮೆ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಅನುಕರಣೆ ಮಾಡುತ್ತಾರೆ.
 
     ಇದನ್ನು ದೋಷದಿಂದಾಗಿ ತೋರಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ಭಾವಿಸುವುದಾದರೆ, ದಯವಿಟ್ಟು https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals ಪುಟಕ್ಕೆ ಭೇಟಿ ನೀಡಿ.</translation>
+<translation id="5862579898803147654">ಸ್ಟ್ಯಾಕರ್ 8</translation>
 <translation id="5863847714970149516">ಮುಂದಿನ ಪುಟವು ನಿಮಗೆ ಶುಲ್ಕ ವಿಧಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು</translation>
 <translation id="5866257070973731571">ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="5866898949289125849">ನೀವು, ಡೆವಲಪರ್ ಪರಿಕರಗಳ ಪುಟವನ್ನು ವೀಕ್ಷಿಸುತ್ತಿದ್ದೀರಿ</translation>
@@ -1020,6 +1098,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (ಸಿಂಕ್‌ ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="59174027418879706">ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">ಆನ್</translation>
 <translation id="5921639886840618607">Google ಖಾತೆಯಲ್ಲಿ ಕಾರ್ಡ್ ಅನ್ನು ಉಳಿಸಬೇಕೇ?</translation>
 <translation id="5922853866070715753">ಬಹುತೇಕ ಮುಗಿದಿದೆ</translation>
 <translation id="5932224571077948991">ಅತಿಕ್ರಮಣಕಾರಿಯಾಗಿರುವ ಅಥವಾ ತಪ್ಪುದಾರಿಗೆಳೆಯುವ ಜಾಹೀರಾತುಗಳನ್ನು ಸೈಟ್ ತೋರಿಸುತ್ತದೆ</translation>
@@ -1030,11 +1109,13 @@
 <translation id="5975083100439434680">ಝೂಮ್ ಔಟ್</translation>
 <translation id="5979084224081478209">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
+<translation id="5984570616552610254">ಚೇಂಬರ್ ತೇವಾಂಶ</translation>
 <translation id="598637245381783098">ಪಾವತಿ ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="5989320800837274978">ಹೊಂದಿಸಿದ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್‌ಗಳು ಆಗಲಿ ಅಥವಾ .pac ಸ್ಕ್ರಿಪ್ಟ್ URL ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿಲ್ಲ.</translation>
 <translation id="5990559369517809815">ಸರ್ವರ್‌ಗಳ ವಿನಂತಿಗಳನ್ನು ವಿಸ್ತರಣೆಯಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="5992691462791905444">ಇಂಜಿನಿಯರಿಂಗ್ ಝೆಡ್ ಮಾದರಿಯಲ್ಲಿ ಮಡಿಸಿ</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' ಗಾಗಿ <ph name="RESULT_COUNT" /> ಫಲಿತಾಂಶಗಳು</translation>
+<translation id="6008122969617370890">N-ಇಂದ-1 ಆರ್ಡರ್</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="6015796118275082299">ವರ್ಷ</translation>
@@ -1044,15 +1125,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (ಸಿಂಕ್‌ ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="6027201098523975773">ಹೆಸರು ನಮೂದಿಸಿ</translation>
 <translation id="603068602130820122">ಬಲಭಾಗದಲ್ಲಿ ಎರಡು ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
+<translation id="6032524144326295339">ಮೇಲ್‌ಬಾಕ್ಸ್ 2</translation>
 <translation id="6032955021262906325">ಎಡಗಡೆ ಬೈಂಡ್ ಮಾಡಿ</translation>
 <translation id="6034000775414344507">ತಿಳಿ ಬೂದು</translation>
 <translation id="6034283069659657473">10x14 (Envelope)</translation>
 <translation id="6034514109191629503">ಅಕಾರ್ಡಿಯನ್ ಮಾದರಿಯಲ್ಲಿ ಮಡಿಸಿ</translation>
 <translation id="6039846035001940113">ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ಸೈಟ್ ಮಾಲೀಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
+<translation id="6041777658117377052">ಚೇಂಬರ್ ತಾಪಮಾನ</translation>
 <translation id="6044573915096792553">ಗಾತ್ರ 12</translation>
+<translation id="6045164183059402045">ಅಳವಡಿಕೆ ಟೆಂಪ್ಲೇಟ್</translation>
 <translation id="6047233362582046994">ನಿಮ್ಮ ಸುರಕ್ಷತೆ ಅಪಾಯಗಳು ನಿಮಗೆ ಅರ್ಥವಾಗಿದ್ದರೆ, ಅಪಾಯಕಾರಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದಕ್ಕೂ ಮೊದಲು ನೀವು <ph name="BEGIN_LINK" />ಈ ಸೈಟ್‌ಗೆ ಭೇಟಿ<ph name="END_LINK" /> ನೀಡಬಹುದು.</translation>
 <translation id="6047927260846328439">ಈ ಕಂಟೆಂಟ್‌ ಸಾಫ್ಟ್‌ವೇರ್ ಸ್ಥಾಪಿಸುವಂತೆ ಅಥವಾ ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ಬಹಿರಂಗಪಡಿಸುವಂತೆ  ನಿಮ್ಮನ್ನು ಮೋಸಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು. <ph name="BEGIN_LINK" />ಹೇಗಿದ್ದರೂ ತೋರಿಸಿ<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">ಪುಟ ವಿತರಣೆ</translation>
 <translation id="6051221802930200923">ನೀವು ಸದ್ಯಕ್ಕೆ <ph name="SITE" /> ಗೆ ಭೇಟಿ ನೀಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಏಕೆಂದರೆ, ವೆಬ್‌ಸೈಟ್ ಪ್ರಮಾಣಪತ್ರ ಪಿನ್ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸುತ್ತದೆ. ನೆಟ್‌ವರ್ಕ್ ದೋಷಗಳು ಮತ್ತು ಆಕ್ರಮಣಗಳು ತಾತ್ಕಾಲಿಕವಾಗಿರುತ್ತವೆ, ಹೀಗಾಗಿ ಈ ಪುಟವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಕಾರ್ಯ ನಿರ್ವಹಿಸಬಹುದು.</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿಯೂ ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ಬಳಸಬೇಕೇ?</translation>
@@ -1072,6 +1157,7 @@
 <translation id="6157877588268064908">ಶಿಪ್ಪಿಂಗ್ ವಿಧಾನಗಳು ಹಾಗೂ ಆವಶ್ಯಕತೆಗಳನ್ನು ನೋಡಲು, ಒಂದು ವಿಳಾಸವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="6165508094623778733">ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation>
 <translation id="6177128806592000436">ಈ ಸೈಟ್‌ಗೆ ನಿಮ್ಮ ಸಂಪರ್ಕವು ಸುರಕ್ಷಿತವಾಗಿಲ್ಲ</translation>
+<translation id="6180316780098470077">ಮರುಪ್ರಯತ್ನದ ಮಧ್ಯಂತರ</translation>
 <translation id="6196640612572343990">ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="6203231073485539293">ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="6218753634732582820">Chromium ನಿಂದ ವಿಳಾಸವನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?</translation>
@@ -1080,6 +1166,7 @@
 <translation id="6234122620015464377">ಪ್ರತಿ ಡಾಕ್ಯುಮೆಂಟ್ ನಂತರ ಟ್ರಿಮ್ ಮಾಡಿ</translation>
 <translation id="6240447795304464094">Google Pay ಲೋಗೋ</translation>
 <translation id="6241121617266208201">ಸಲಹೆಗಳನ್ನು ಮರೆಮಾಡಿ</translation>
+<translation id="624499991300733384">ಪ್ರಿಂಟ್ ಸಂಯೋಜಕ ಸೇವೆ</translation>
 <translation id="6251924700383757765">ಗೌಪ್ಯತಾ ನೀತಿ</translation>
 <translation id="6254436959401408446">ಈ ಪುಟವನ್ನು ತೆರೆಯಲು ಸಾಕಷ್ಟು ಮೆಮೊರಿ ಇಲ್ಲ</translation>
 <translation id="625755898061068298">ಈ ಸೈಟ್‌ಗೆ ನೀವು ಸುರಕ್ಷತೆ ಎಚ್ಚರಿಕೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಆಯ್ಕೆ ಮಾಡಿರುವಿರಿ.</translation>
@@ -1166,6 +1253,7 @@
 <translation id="6604181099783169992">ಚಲನೆ ಅಥವಾ ಬೆಳಕಿನ ಸೆನ್ಸರ್‌ಗಳು</translation>
 <translation id="6609880536175561541">Prc7 (Envelope)</translation>
 <translation id="6612358246767739896">ಸಂರಕ್ಷಿಸಿದ ವಿಷಯ</translation>
+<translation id="6615297766614333076">ಸ್ಟ್ಯಾಕರ್ 2</translation>
 <translation id="6624427990725312378">ಸಂಪರ್ಕ ಮಾಹಿತಿ</translation>
 <translation id="6626291197371920147">ಮಾನ್ಯವಾದ ಕಾರ್ಡ್ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> ಹುಡುಕಾಟ</translation>
@@ -1181,6 +1269,8 @@
 <translation id="6670613747977017428">ಸುರಕ್ಷತೆಗೆ ಹಿಂತಿರುಗಿ.</translation>
 <translation id="6671697161687535275">Chromium ನಿಂದ ಫಾರ್ಮ್ ಸಲಹೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?</translation>
 <translation id="6685834062052613830">ಸೈನ್‌ ಔಟ್‌ ಮಾಡಿ ಹಾಗೂ ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಿ</translation>
+<translation id="6687335167692595844">ವಿನಂತಿಸಲಾದ ಫಾಂಟ್ ಗಾತ್ರ</translation>
+<translation id="6689249931105087298">ಕಪ್ಪು ಬಿಂದು ಕಂಪ್ರೆಶ್ಶನ್‌ಗೆ ಸಂಬಂಧಿಸಿದ</translation>
 <translation id="6689271823431384964">ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿರುವ ಕಾರಣದಿಂದಾಗಿ, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಲು Chrome ಅವಕಾಶ ನೀಡುತ್ತಿದೆ. ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನೀವು ಈ ವರ್ತನೆಯನ್ನು ಬದಲಿಸಬಹುದು. ಕಾರ್ಡ್ ಹೋಲ್ಡರ್ ಹೆಸರು ನಿಮ್ಮ ಖಾತೆಯಿಂದ ಬರುತ್ತದೆ.</translation>
 <translation id="6704582573942289642">ಇದು ಸರಿಯಾದ ಸೈಟ್ ಆಗಿದೆಯೇ?</translation>
 <translation id="6710213216561001401">ಹಿಂದೆ</translation>
@@ -1226,6 +1316,7 @@
 <translation id="6964255747740675745">ನೆಟ್‌ವರ್ಕ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ. (ಅಮಾನ್ಯ JSON).</translation>
 <translation id="6965382102122355670">ಸರಿ</translation>
 <translation id="6965978654500191972">ಸಾಧನ</translation>
+<translation id="696703987787944103">ಗ್ರಹಿಕೆ</translation>
 <translation id="6970216967273061347">ಜಿಲ್ಲೆ</translation>
 <translation id="6973656660372572881">ಹೊಂದಿಸಿದ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್‌ಗಳು ಮತ್ತು .pac ಸ್ಕ್ರಿಪ್ಟ್ URL ಎರಡನ್ನೂ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.</translation>
 <translation id="6973932557599545801">ಕ್ಷಮಿಸಿ, ನನ್ನಿಂದ ಸಹಾಯ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ, ನಿಮ್ಮ ವಿವೇಚನೆಗೆ ತಕ್ಕಂತೆ ಮುಂದುವರಿಸಿ.</translation>
@@ -1247,6 +1338,7 @@
 <translation id="7075452647191940183">ವಿನಂತಿಯು ತೀರಾ ದೊಡ್ಡದಾಗಿದೆ</translation>
 <translation id="7079718277001814089">ಈ ಸೈಟ್ ಮಾಲ್‌‌ವೇರ್ ಹೊಂದಿದೆ</translation>
 <translation id="7081308185095828845">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ</translation>
+<translation id="7083258188081898530">ಟ್ರೇ 9</translation>
 <translation id="7087282848513945231">ರಾಷ್ಟ್ರ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> ಗಾಗಿ Google ಹುಡುಕಾಟ ನಡೆಸಿ</translation>
 <translation id="7108338896283013870">ಮರೆಮಾಡಿ</translation>
@@ -1258,6 +1350,7 @@
 <translation id="7135130955892390533">ಕಾರ್ಯನೀತಿ ಸ್ಥಿತಿಯನ್ನು ತೋರಿಸಿ</translation>
 <translation id="7138472120740807366">ವಿತರಣೆ ವಿಧಾನ</translation>
 <translation id="7139724024395191329">ಎಮಿರೇಟ್</translation>
+<translation id="714064300541049402">ಅಂಚು 2 ಚಿತ್ರ X ಶಿಫ್ಟ್</translation>
 <translation id="7152423860607593928">Number-14 (Envelope)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ಇನ್ನಷ್ಟು}one{<ph name="PAYMENT_METHOD_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ಇನ್ನಷ್ಟು}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ಇನ್ನಷ್ಟು}}</translation>
 <translation id="7153618581592392745">ನಸು ಕೆನ್ನೀಲಿ</translation>
@@ -1276,6 +1369,7 @@
 <translation id="721197778055552897">ಈ ತೊಂದರೆಯ ಬಗ್ಗೆ <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" />.</translation>
 <translation id="7219179957768738017">ಸಂಪರ್ಕವು <ph name="SSL_VERSION" /> ಅನ್ನು ಬಳಸುತ್ತದೆ.</translation>
 <translation id="7220786058474068424">ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation>
+<translation id="7233592378249864828">ಪ್ರಿಂಟ್ ದೃಢೀಕರಣ ಶೀಟ್</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">ಮುಂದಿರುವ ಸೈಟ್‌ನಲ್ಲಿ ಮಾಲ್‌ವೇರ್ ಇದೆ</translation>
 <translation id="724975217298816891">ನಿಮ್ಮ ಕಾರ್ಡ್‌ ವಿವರಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು <ph name="CREDIT_CARD" /> ಗೆ ಮುಕ್ತಾಯ ದಿನಾಂಕ ಮತ್ತು CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಒಮ್ಮೆ ಖಚಿತಪಡಿಸಿದರೆ, ನಿಮ್ಮ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
@@ -1285,6 +1379,7 @@
 <translation id="725866823122871198">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ (<ph name="DATE_AND_TIME" />) ತಪ್ಪಾಗಿರುವುದರಿಂದ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಗೆ ಖಾಸಗಿ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
 <translation id="7260504762447901703">ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ</translation>
 <translation id="7275334191706090484">ನಿರ್ವಹಿಸಿದ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
+<translation id="7292031607255951991">ಸ್ವೀಕೃತದಾರರ ಹೆಸರು</translation>
 <translation id="7298195798382681320">ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="7300012071106347854">ಕೋಬಾಲ್ಟ್ ನೀಲಿ</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1361,6 +1456,7 @@
 <translation id="7569983096843329377">ಕಪ್ಪು</translation>
 <translation id="7575207903026901870">ಸಲಹೆ ಬಟನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ, ಸಲಹೆಯನ್ನು ತೆಗೆದುಹಾಕಲು Enter ಅನ್ನು ಒತ್ತಿರಿ</translation>
 <translation id="7578104083680115302">Google ನೊಂದಿಗೆ ನೀವು ಉಳಿಸಲಾದ ಕಾರ್ಡ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಾಧನಗಳಾದ್ಯಂತ ಸೈಟ್‌ಗಳು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ತ್ವರಿತವಾಗಿ ಪಾವತಿಸಿ.</translation>
+<translation id="7581199239021537589">ಅಂಚು 2 ಚಿತ್ರ Y ಶಿಫ್ಟ್</translation>
 <translation id="7592362899630581445">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವು ಹೆಸರಿನ ನಿರ್ಬಂಧನೆಗಳನ್ನು ಉಲ್ಲಂಘಿಸುತ್ತದೆ.</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" /> ಗಿಂತ ಕಡಿಮೆ</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> ಗೆ ಪ್ರಸ್ತುತ ಈ ವಿನಂತಿಯನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation>
@@ -1368,10 +1464,13 @@
 <translation id="7610193165460212391">ಮೌಲ್ಯವು ವ್ಯಾಪ್ತಿಯಿಂದ <ph name="VALUE" /> ಹೊರಗಿದೆ.</translation>
 <translation id="7613889955535752492">ಅವಧಿ ಮೀರುವ ಸಮಯ: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">ನಿಮ್ಮ Google ಖಾತೆಯ ಪಾಸ್‌ವರ್ಡ್‌ನ ಬೇರೆ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ನೀವು ಈಗಾಗಲೇ ಹೊಂದಿರುವಿರಿ. ದಯವಿಟ್ಟು  ಕೆಳಗೆ ಇದನ್ನು ನಮೂದಿಸಿ.</translation>
+<translation id="7619838219691048931">ಕೊನೆಯ ಶೀಟ್</translation>
+<translation id="762844065391966283">ಒಂದು ಬಾರಿಗೆ ಒಂದು</translation>
 <translation id="7633909222644580952">ಕಾರ್ಯಕ್ಷಮತೆಯ ಡೇಟಾ ಮತ್ತು ಕ್ರ್ಯಾಶ್ ವರದಿಗಳು</translation>
 <translation id="7637571805876720304">Chromium ನಿಂದ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ತೆಗೆದುಹಾಕುವುದೇ?</translation>
 <translation id="7638605456503525968">ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ಗಳು</translation>
 <translation id="7639968568612851608">ಕಡು ಬೂದು</translation>
+<translation id="7647206758853451655">ಪ್ರಿಂಟ್ ಗುಣಮಟ್ಟ</translation>
 <translation id="7653957176542370971">ಪಾವತಿ ಹ್ಯಾಂಡ್‌ಲರ್ ಶೀಟ್ ಅನ್ನು ಮುಚ್ಚಿದೆ</translation>
 <translation id="765676359832457558">ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರೆಮಾಡು...</translation>
 <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation>
@@ -1380,10 +1479,13 @@
 <translation id="7667346355482952095">ಹಿಂತಿರುಗಿಸಲಾದ ನೀತಿಯ ಟೋಕನ್‌ ಖಾಲಿ ಇದೆ ಅಥವಾ ಪ್ರಸ್ತುತ ಟೋಕನ್‌ಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ</translation>
 <translation id="7668654391829183341">ಅಪರಿಚಿತ ಸಾಧನ</translation>
 <translation id="7669271284792375604">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್‌ ಅನುಭವವನ್ನು ಹಾನಿಮಾಡಲು ಸ್ಥಾಪಿಸಲಾಗುವ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ನಿಮ್ಮನ್ನು ವಂಚಿಸಲು ಆಕ್ರಮಣಕಾರರು ಈ ಸೈಟ್‌ ಮೇಲೆ ದಾಳಿ ಮಾಡಬಹುದು (ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಮುಖಪುಟವನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ನೀವು ಭೇಟಿ ನೀಡುವ ಸೈಟ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚಿನ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ).</translation>
+<translation id="7673278391011283842">ಮೇಲ್‌ಬಾಕ್ಸ್ 6</translation>
 <translation id="7676643023259824263">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್ ಪಠ್ಯಕ್ಕಾಗಿ ಹುಡುಕಿ, <ph name="TEXT" /></translation>
 <translation id="7681101578153515023">ಹುಡುಕಾಟ ಎಂಜಿನ್ ಅನ್ನು ಬದಲಿಸಿ</translation>
 <translation id="7682287625158474539">ಶಿಪ್ಪಿಂಗ್</translation>
 <translation id="7687186412095877299">ಉಳಿಸಲಾದ ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪಾವತಿ ಫಾರ್ಮ್‌ಗಳನ್ನು ಭರ್ತಿ ಮಾಡುತ್ತದೆ</translation>
+<translation id="7687305263118037187">ಮರುಪ್ರಯತ್ನದ ಅವಧಿ ಮೀರಿದೆ</translation>
+<translation id="7693583928066320343">ಸ್ವೀಕರಿಸಲಾದ ಪುಟದ ಆರ್ಡರ್</translation>
 <translation id="7697066736081121494">Prc8 (Envelope)</translation>
 <translation id="769721561045429135">ಸದ್ಯಕ್ಕೆ, ಈ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದಾದ ಕಾರ್ಡ್‌ಗಳನ್ನು ಮಾತ್ರವೇ ನೀವು ಹೊಂದಿದ್ದೀರಿ. ಕಾರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಮುಂದುವರಿಸಿ ಕ್ಲಿಕ್ ಮಾಡಿ.</translation>
 <translation id="7699293099605015246">ಲೇಖನಗಳು ಸದ್ಯಕ್ಕೆ ಲಭ್ಯವಿಲ್ಲ</translation>
@@ -1402,7 +1504,9 @@
 <translation id="7761701407923456692">ಸರ್ವರ್‌ನ ಪ್ರಮಾಣಪತ್ರವು URL ಗೆ ಸರಿ ಹೊಂದುವುದಿಲ್ಲ.</translation>
 <translation id="7763386264682878361">ಪಾವತಿ ಮ್ಯಾನಿಫೆಸ್ಟ್ ವಿಶ್ಲೇಷಕರು</translation>
 <translation id="7764225426217299476">ವಿಳಾಸ ಸೇರಿಸಿ</translation>
+<translation id="7766518757692125295">ಸ್ಕರ್ಟ್</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
+<translation id="7773005668374414287">ಒಂದೇ ಆರ್ಡರ್ ಮುಖ ಮೇಲಕ್ಕೆ</translation>
 <translation id="777702478322588152">ಪ್ರಿಫೆಕ್ಚರ್‌‌</translation>
 <translation id="7791196057686275387">ಬೇಲ್</translation>
 <translation id="7791543448312431591">ಸೇರಿಸು</translation>
@@ -1420,9 +1524,11 @@
 <translation id="785549533363645510">ಆದರೆ, ನೀವು ಅದೃಶ್ಯರಾಗಿರುವುದಿಲ್ಲ. ಅಜ್ಞಾತವಾಗಿ ಹೋಗುವುದರಿಂದ ನಿಮ್ಮ ಉದ್ಯೋಗದಾತರು, ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸೇವಾ ಪೂರೈಕೆದಾರರು ಇಲ್ಲವೇ ನೀವು ಭೇಟಿ ನೀಡುವ ವೆಬ್‌ಸೈಟ್‌ಗಳಿಂದ ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಮರೆ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">ಸೈಟ್‌ ಅನ್ನು ತೊರೆಯುವುದೇ?</translation>
+<translation id="7865448901209910068">ಉತ್ತಮ ವೇಗ</translation>
 <translation id="7878562273885520351">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಸುಲಭವಾಗಿ ಪತ್ತೆ ಮಾಡಬಹುದು</translation>
 <translation id="7882421473871500483">ಕಂದು</translation>
 <translation id="7887683347370398519">ನಿಮ್ಮ CVC ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation>
+<translation id="7888575728750733395">ಪ್ರಿಂಟ್ ಸಲ್ಲಿಕೆ ಉದ್ದೇಶ</translation>
 <translation id="7904208859782148177">C3 (Envelope)</translation>
 <translation id="7932579305932748336">ಹಚ್ಚು</translation>
 <translation id="79338296614623784">ಮಾನ್ಯವಾದ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ</translation>
@@ -1437,6 +1543,8 @@
 <translation id="7953569069500808819">ಮೇಲ್ಭಾಗದ ಅಂಚನ್ನು ಹೊಲಿಯಿರಿ</translation>
 <translation id="7956713633345437162">ಮೊಬೈಲ್ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
 <translation id="7961015016161918242">ಎಂದಿಗೂ ಇಲ್ಲ</translation>
+<translation id="7966803981046576691">ಕೆಲಸದ ಖಾತೆ ಪ್ರಕಾರ</translation>
+<translation id="7977538094055660992">ಔಟ್‌ಪುಟ್ ಸಾಧನ</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">ಬೈಂಡ್ ಮಾಡಿ</translation>
 <translation id="7995512525968007366">ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿಲ್ಲ</translation>
@@ -1494,6 +1602,7 @@
 <translation id="8221250263817408492">ನೀವು ಈಗಷ್ಟೇ ವಂಚನೆ ಮಾಡುವ ಸೈಟ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ. <ph name="WEBSITE_1" /> ಹಾಗೂ ಈ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸುವ ಇತರ ಸೈಟ್‌ಗಳಲ್ಲಿ ಈಗಲೇ ಬದಲಾಯಿಸಲು Chromium ನಿಮಗೆ ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="8225771182978767009">ಈ ಕಂಪ್ಯೂಟರ್ ಹೊಂದಿಸಿರುವ ವ್ಯಕ್ತಿಯು ಈ ಸೈಟ್ ನಿರ್ಬಂಧಿಸಲು ಆಯ್ಕೆಮಾಡಿದ್ದಾರೆ.</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">ಪ್ಲ್ಯಾಟ್‌ಫಾರ್ಮ್ ತಾಪಮಾನ</translation>
 <translation id="8238581221633243064">ಪುಟವನ್ನು ಹೊಸ ಅದೃಶ್ಯ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="8241707690549784388">ನೀವು ಎದುರು ನೋಡುತ್ತಿರುವ ಪುಟ ನೀವು ನಮೂದಿಸಿದ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿದೆ. ಆ ಪುಟಕ್ಕೆ ಹಿಂದಿರುಗುವುದರಿಂದ ನೀವು ಮಾಡಿದ ಯಾವುದೇ ಕ್ರಿಯೆ ಪುನರಾವರ್ತಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ನೀವು ಮುಂದುವರಿಸಲು ಬಯಸುತ್ತೀರಾ?</translation>
 <translation id="8241712895048303527">ಈ ಸೈಟ್‌ನಲ್ಲಿ ನಿರ್ಬಂಧಿಸಿ</translation>
@@ -1505,6 +1614,7 @@
 <translation id="8261506727792406068">ಅಳಿಸಿ</translation>
 <translation id="8262952874573525464">ಕೆಳಭಾಗದ ಅಂಚನ್ನು ಹೊಲಿಯಿರಿ</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> ನಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
+<translation id="8269242089528251720">ಪ್ರತ್ಯೇಕ ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳು/ಸಂಯೋಜಿಸಿದ ಪ್ರತಿಗಳು</translation>
 <translation id="8269981117540303696">ಈಗ ನೀವು ಖಾಸಗಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಬಹುದು. ಈ ಸಾಧನವನ್ನು ಬಳಸುವ ಬೇರೆ ಯಾರಿಗೂ ನಿಮ್ಮ ಚಟುವಟಿಕೆ ಕಾಣಿಸುವುದಿಲ್ಲ. ಆದರೂ, ಡೌನ್‌ಲೋಡ್‌ಗಳು ಮತ್ತು ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು ಉಳಿದಿರುತ್ತವೆ.</translation>
 <translation id="8277900682056760511">ಪಾವತಿ ಹ್ಯಾಂಡ್‌ಲರ್ ಶೀಟ್ ಅನ್ನು ತೆರೆಯಲಾಗಿದೆ</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1518,6 +1628,7 @@
 <translation id="8307358339886459768">Small-Photo</translation>
 <translation id="8308427013383895095">ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕದಲ್ಲಿನ ಸಮಸ್ಯೆಯಿಂದಾಗಿ ಭಾಷಾಂತರವು ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="831207732689920588">ಈ ಪುಟವು ಅನುಮಾನಾಸ್ಪದವಾಗಿದೆ (Chrome ನಿಂದ ಫ್ಲ್ಯಾಗ್ ಮಾಡಲಾಗಿದೆ).</translation>
+<translation id="831997045666694187">ಸಂಜೆ</translation>
 <translation id="8332188693563227489"><ph name="HOST_NAME" /> ಗೆ ಪ್ರವೇಶವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ</translation>
 <translation id="833262891116910667">ಹೈಲೈಟ್ ಮಾಡಿ</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1540,12 +1651,14 @@
 <translation id="8428213095426709021">ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="8433057134996913067">ಇದು ನಿಮ್ಮನ್ನು ಹೆಚ್ಚಿನ ವೆಬ್‌ಸೈಟ್‌ಗಳಿಂದ ಸೈನ್‌ ಔಟ್‌ ಮಾಡುತ್ತದೆ.</translation>
 <translation id="8437238597147034694">&amp;ಸರಿಸುವುದನ್ನು ರದ್ದುಗೊಳಿಸಿ</translation>
+<translation id="8457125768502047971">ಅನಿರ್ದಿಷ್ಟ</translation>
 <translation id="8461694314515752532">ನಿಮ್ಮ ಸ್ವಂತ ಸಿಂಕ್ ಪಾಸ್‌ಫ್ರೇಸ್‌ ಬಳಸಿಕೊಂಡು ಸಿಂಕ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿ</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್}one{# ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್‌ಗಳು}other{# ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್‌ಗಳು}}</translation>
 <translation id="8473863474539038330">ವಿಳಾಸಗಳು ಮತ್ತು ಇನ್ನಷ್ಟು</translation>
 <translation id="8479754468255770962">ಕೆಳಗಿನ ಎಡಭಾಗದಲ್ಲಿ ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="8483780878231876732">ನಿಮ್ಮ Google ಖಾತೆಯಿಂದ ಕಾರ್ಡ್‌ಗಳನ್ನು ಬಳಸಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="8488350697529856933">ಇದಕ್ಕೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ</translation>
+<translation id="8490137692873530638">ಸ್ಟ್ಯಾಕರ್ 10</translation>
 <translation id="8498891568109133222">ಪ್ರತಿಕ್ರಿಯಿಸಲು <ph name="HOST_NAME" /> ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಂಡಿದೆ.</translation>
 <translation id="8503559462189395349">Chrome ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
 <translation id="8503813439785031346">ಬಳಕೆದಾರರಹೆಸರು</translation>
@@ -1556,11 +1669,13 @@
 <translation id="8553075262323480129">ಪುಟದ ಭಾಷೆಯನ್ನು ಗುರುತಿಸಲು ಅಸಾಧ್ಯವಾದ ಕಾರಣ ಭಾಷಾಂತರವು ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="8557066899867184262">ನಿಮ್ಮ ಕಾರ್ಡ್ ಹಿಂಬದಿಯಲ್ಲಿ CVC ಇರುತ್ತದೆ.</translation>
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಗೆ ಖಾಸಗಿ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ನಿಮ್ಮ ಸಾಧನದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ (<ph name="DATE_AND_TIME" />) ತಪ್ಪಾಗಿದೆ.</translation>
+<translation id="8564182942834072828">ಪ್ರತ್ಯೇಕ ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳು/ಸಂಯೋಜಿಸದ ಪ್ರತಿಗಳು</translation>
 <translation id="8564985650692024650">ನೀವು ಇತರ ಸೈಟ್‌ಗಳಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದ್ದಲ್ಲಿ ನಿಮ್ಮ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ಪಾಸವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" /> ಗೆ ಪುಟವನ್ನು ಭಾಷಾಂತರಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="8574899947864779331">ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಲು ಟಚ್ ID ಬಳಸಿ</translation>
 <translation id="858637041960032120">ಫೋನ್ ಸಂ. ಸೇರಿಸಿ
 </translation>
+<translation id="8589998999637048520">ಅತ್ಯುತ್ತಮ ಗುಣಮಟ್ಟ</translation>
 <translation id="860043288473659153">ಕಾರ್ಡ್‌ಹೋಲ್ಡರ್ ಹೆಸರು</translation>
 <translation id="8616822740383114808">ಈ ಸೆಟ್ಟಿಂಗ್‌ ಅನ್ನು "<ph name="ENFORCING_SETTING" />" ನಿಂದ "<ph name="SETTINGS_PAGE" />" ನಲ್ಲಿ ಜಾರಿಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="861775596732816396">ಗಾತ್ರ 4</translation>
@@ -1568,10 +1683,13 @@
 <translation id="8625384913736129811">ಈ ಕಾರ್ಡ್ ಅನ್ನು ಈ ಸಾಧನದಲ್ಲಿ ಉಳಿಸಿ</translation>
 <translation id="8647750283161643317">ಎಲ್ಲವನ್ನೂ ಡೀಫಾಲ್ಟ್‌ಗೆ ಮರುಹೊಂದಿಸಿ</translation>
 <translation id="8663226718884576429">ಆರ್ಡರ್ ಸಾರಾಂಶ, <ph name="TOTAL_LABEL" />, ಹೆಚ್ಚಿನ ವಿವರಗಳು</translation>
+<translation id="867224526087042813">ಸಹಿ</translation>
+<translation id="8676424191133491403">ಯಾವುದೇ ವಿಳಂಬವಿಲ್ಲ</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, ಉತ್ತರ, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054"><ph name="PAGE" /> ನಲ್ಲಿ ವೆಬ್‌ಪುಟವನ್ನು ಈ ಕಾರಣದಿಂದ ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">ಲಭ್ಯವಿದೆ</translation>
+<translation id="868922510921656628">ಪ್ರತಿ ಸೆಟ್‌ಗೆ ಪುಟಗಳು</translation>
 <translation id="869891660844655955">ಅವಧಿ ಮುಗಿಯುವ ದಿನಾಂಕ</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" /> ಗೆ ನಿಮ್ಮ ಸಂಪರ್ಕವು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಆಗಿಲ್ಲ.</translation>
 <translation id="8718314106902482036">ಪಾವತಿ ಪೂರ್ಣಗೊಂಡಿಲ್ಲ</translation>
@@ -1603,8 +1721,10 @@
 <translation id="8866928039507595380">ಮಡಿಸಿ</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">ಇತ್ತೀಚೆಗೆ ಮುಚ್ಚಿರುವುದು</translation>
+<translation id="8870494189203302833">ಒಂದೇ ಆರ್ಡರ್ ಮುಖ ಕೆಳಗೆ</translation>
 <translation id="8874824191258364635">ಮಾನ್ಯವಾದ ಕಾರ್ಡ್ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="8891727572606052622">ಅಮಾನ್ಯವಾದ ಪ್ರಾಕ್ಸಿ ಮೋಡ್.</translation>
+<translation id="8894794286471754040">ಉದ್ದದ ಅಂಚು ಮೊದಲು</translation>
 <translation id="8903921497873541725">ಝೂಮ್ ಇನ್</translation>
 <translation id="890485472659500557">Engineering-C</translation>
 <translation id="890493561996401738">ಸಲಹೆ ಬಟನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ, ತೆಗೆದುಹಾಕಲು Enter ಅನ್ನು ಒತ್ತಿರಿ, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1653,6 +1773,7 @@
 <translation id="9080712759204168376">ಆರ್ಡರ್ ಸಾರಾಂಶ</translation>
 <translation id="9089260154716455634">ಬಿಡುವಿನ ಅವಧಿಯ ಕಾರ್ಯನೀತಿ:</translation>
 <translation id="9095388113577226029">ಇನ್ನಷ್ಟು ಭಾಷೆಗಳು...</translation>
+<translation id="9101630580131696064">ಟ್ರೇ 1</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> ಸಾಮಾನ್ಯವಾಗಿ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಸಂರಕ್ಷಿಸಲು ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಪ್ರಯೋಜನವನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ Chromium <ph name="SITE" /> ವೆಬ್‌ಸೈಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ಆ ವೆಬ್‌ಸೈಟ್‌‌ ಅಸಹಜ ಮತ್ತು ತಪ್ಪು ರುಜುವಾತುಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿದೆ. ದಾಳಿಕೋರರು <ph name="SITE" /> ರೂಪದಲ್ಲಿ ಸೋಗು ಹಾಕಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಾಗ ಅಥವಾ ವೈ-ಫೈ ಸೈನ್-ಇನ್ ಪರದೆಯು ಸಂಪರ್ಕಕ್ಕೆ ಅಡ್ಡಿಯುಂಟು ಮಾಡಿದಾಗ ಇದು ಕಂಡುಬರಬಹುದು. ಯಾವುದೇ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುವ ಮೊದಲೇ Chromium ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿರುವ ಕಾರಣ, ನಿಮ್ಮ ಮಾಹಿತಿ ಈಗಲೂ ಸುರಕ್ಷಿತವಾಗಿದೆ.</translation>
 <translation id="9106062320799175032">ಬಿಲ್ಲಿಂಗ್ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="9114524666733003316">ಕಾರ್ಡ್‌ ದೃಢೀಕರಿಸಲಾಗುತ್ತಿದೆ...</translation>
@@ -1668,6 +1789,7 @@
 <translation id="9169664750068251925">ಈ ಸೈಟ್ ಅನ್ನು ಯಾವಾಗಲೂ ನಿರ್ಬಂಧಿಸು</translation>
 <translation id="9170848237812810038">&amp;ರದ್ದುಮಾಡು</translation>
 <translation id="9171296965991013597">ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ತ್ಯಜಿಸಬೇಕೆ?</translation>
+<translation id="9173282814238175921">ಏಕೈಕ ಡಾಕ್ಯುಮೆಂಟ್/ಹೊಸ ಶೀಟ್</translation>
 <translation id="917450738466192189">ಸರ್ವರ್‌ನ ಪ್ರಮಾಣಪತ್ರವು ಅಮಾನ್ಯವಾಗಿದೆ.</translation>
 <translation id="9174917557437862841">ಟ್ಯಾಬ್ ಬದಲಿಸುವ ಬಟನ್, ಈ ಟ್ಯಾಬ್‌ಗೆ ಬದಲಾಯಿಸಲು Enter ಒತ್ತಿರಿ</translation>
 <translation id="9183302530794969518">Google ಡಾಕ್ಸ್‌</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index 2a40971..e49388f1 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">Азыр эмес</translation>
 <translation id="1010200102790553230">Барак кийинчерээк жүктөлсүн</translation>
 <translation id="1015730422737071372">Кошумча маалымат берүү</translation>
+<translation id="1019413721762100891">Өчүк</translation>
 <translation id="1021110881106174305">Кабыл алынган карточкалар</translation>
 <translation id="1021753677514347426">Бул маселе түзмөгүңүзгө орнотулган тастыктамадан улам келип чыгышы мүмкүн. Ал тастыктама тармактарга көз салып, ортодон кармап калуусу менен белгилүү. Аны Chromium ишенимдүү тастыктама катары караштырбайт. Мындай тастыктамаларды мектептин же уюмдун тармактарында көзөмөлдөөнүн мыйзамдуу жолдору бар. Сиз эч нерсе кыла албаганыңыз менен, Chromium бул маселе тууралуу кабарыңыздын болушун туура көрдү. Көзөмөлдөө Интернетке туташкан бардык серепчилерде жана колдонмолордо жүргүзүлөт.</translation>
 <translation id="1032854598605920125">Сааттын жебеси боюнча айландыруу</translation>
 <translation id="1036348656032585052">Өчүрүү</translation>
 <translation id="1038842779957582377">белгисиз ат</translation>
+<translation id="1041998700806130099">Жумуш барагынын билдирүүсү</translation>
 <translation id="1050038467049342496">Башка колдонмолорду жабуу</translation>
 <translation id="1055184225775184556">Кошууну &amp;жасабоо</translation>
 <translation id="1056898198331236512">Эскертүү</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">Эч качан сакталбайт</translation>
 <translation id="1062160989074299343">Prc10 (Конверт)</translation>
 <translation id="106701514854093668">Иштактадагы кыстармалар</translation>
+<translation id="1070901266639972381">Түн</translation>
 <translation id="1074497978438210769">Коопсуз эмес</translation>
 <translation id="1080116354587839789">Терезенин туурасына чактоо</translation>
 <translation id="1086953900555227778">Index-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">Сызсөздү өзгөртүү</translation>
 <translation id="1096545575934602868">Бул талаага киргизилген маанилердин саны <ph name="MAX_ITEMS_LIMIT" /> ашпашы керек. Ашыкча маанилер жоюлат.</translation>
 <translation id="109743633954054152">Сырсөздөрдү Chrome'дун жөндөөлөрүнөн башкаруу</translation>
+<translation id="1101672080107056897">Ката аракет</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> тилин ар дайым которуу</translation>
 <translation id="1107591249535594099">Эгер белгиленсе, форманы тезирээк толтуруу үчүн Chrome картаңыздын көчүрмөсүн ушул түзмөккө сактайт.</translation>
 <translation id="1110994991967754504"><ph name="PERMISSION_NAME" /> уруксатын тандоо</translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">Окуу тизмеси</translation>
 <translation id="1264126396475825575">Ката жөнүндө кабар <ph name="CRASH_TIME" /> алынган (азырынча жүктөлүп бериле элек же көз жаздымда калтырылган)</translation>
 <translation id="1270502636509132238">Алып кетүү ыкмасы</translation>
+<translation id="1281476433249504884">6-төшөгүч</translation>
 <translation id="1285320974508926690">Бул сайт эч качан которулбасын</translation>
 <translation id="1285400217480592994">Сиз Chrome'дон жүктөп алган же ага жүктөп берген файлдарды текшерүү.</translation>
 <translation id="1292701964462482250">"Компьютериңизде иштеп жаткан программа Chrome’дун Интернетке коопсуз туташуусуна тоскоол болуп жатат" (Windows компьютерлери үчүн гана)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">Жогорку жагын үч жолу илмек менен бекитүү</translation>
 <translation id="1413809658975081374">Купуялуулук катасы</translation>
 <translation id="1426410128494586442">Ооба</translation>
+<translation id="1428146450423315676">7-төшөгүч</translation>
 <translation id="1430915738399379752">Басып чыгаруу</translation>
 <translation id="1442386063175183758">Оң бүктөлүшүн чаптоо</translation>
 <translation id="1442987760062738829">Тешүү</translation>
@@ -130,6 +136,7 @@
 <translation id="1521655867290435174">Google Sheets</translation>
 <translation id="1527263332363067270">Туташуу күтүлүүдө…</translation>
 <translation id="1529521330346880926">10x15 (Конверт)</translation>
+<translation id="1529789484829130889">8-түпкүч</translation>
 <translation id="1530707389502320859">Сиз баш баккыңыз келген сайт жасалма окшойт. Чабуулчулар кээ бир учурларда URL'дерге кичинекей, көзгө көрүнбөгөн өзгөртүүлөрдү киргизип, сайттарды туурашат.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">Бул баракча мындай дейт:</translation>
@@ -156,6 +163,7 @@
 <translation id="1639239467298939599">Жүктөлүүдө</translation>
 <translation id="1640180200866533862">Колдонуучунун саясаттары</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />Сайттын башкы бетине кирип<ph name="END_LINK" /> көрүңүз.</translation>
+<translation id="1641976391427233992">Чыгаруу төмөнкү убакытка чейин кечиктирилсин:</translation>
 <translation id="1644574205037202324">Таржымал</translation>
 <translation id="1645368109819982629">Колдоого алынбаган протокол</translation>
 <translation id="1652415888492971589">JIS B8 (64mm x 91mm)</translation>
@@ -164,12 +172,15 @@
 <translation id="1663943134801823270">Карточкалар жана даректер Chrome’дон алынган. Аларды <ph name="BEGIN_LINK" />Жөндөөлөрдөн<ph name="END_LINK" /> башкарсаңыз болот.</translation>
 <translation id="1671391448414634642">Мындан кийин <ph name="SOURCE_LANGUAGE" /> тилиндеги барактар <ph name="TARGET_LANGUAGE" /> тилине которулат.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> сайты маалыматыңызды коргоо үчүн адатта шифрлөөнү колдонот. Google Chrome бул жолу <ph name="SITE" /> сайтына туташууга аракет кылганда, вебсайт адаттан тышкары жана туура эмес эсептик дайындарды жөнөттү. Бул чабуулчу өзүн <ph name="SITE" /> катары көрсөткөнгө аракет кылып жатканда же Wi-Fi'дын кирүү экраны туташууну үзгүлтүккө учуратканда орун алышы мүмкүн. Google Chrome дайындар алмашылганга чейин туташууну үзүп койгондуктан, маалыматыңыздын коопсуздугу бузулган жок.</translation>
+<translation id="1682696192498422849">Биринчи туурасы боюнча</translation>
 <translation id="168841957122794586">Сервердин тастыктамасында чабал криптографиялык ачкыч камтылган.</translation>
 <translation id="1697532407822776718">Баары даяр!</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Бул сервер <ph name="DOMAIN" /> экенин далилдей алган жок. Анын коопсуздук тастыктамасы эртең күчүнө кирет. Мындай көйгөй сервердин туура эмес конфигурацияланышы менен шартталышы мүмкүн же кимдир-бирөө ортодон дайындарыңызды кармап калганга аракет кылып жатат.}other{Бул сервер <ph name="DOMAIN" /> экенин далилдей алган жок. Анын коопсуздук тастыктамасы # күндөн кийин күчүнө кирет. Мындай көйгөй сервердин туура эмес конфигурацияланышы менен шартталышы мүмкүн же кимдир-бирөө ортодон дайындарыңызды кармап калганга аракет кылып жатат.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1713628304598226412">2-түпкүч</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">3-электрондук каттар кутусу</translation>
 <translation id="1718029547804390981">Документ өтө чоң, андыктан Аннотация режиминде түзөтүүгө болбойт.</translation>
 <translation id="1721424275792716183">* Бул талаа милдеттүү түрдө толтурулушу керек</translation>
 <translation id="1727741090716970331">Жарактуу карточканын номерин кошуу</translation>
@@ -183,7 +194,9 @@
 <translation id="1743520634839655729">Кийинки жолу тезирээк төлөө үчүн картаңызды, аты-жөнүңүздү жана эсептешүү дарегин Google аккаунтуңузга жана ушул түзмөгүңүзгө сактап коюңуз.</translation>
 <translation id="1743570585616704562">Таанылган жок</translation>
 <translation id="1745880797583122200">Серепчиңиз башкарылып жатат</translation>
+<translation id="1746113442205726301">Y сүрөтүн жылдыруу</translation>
 <translation id="17513872634828108">Ачык өтмөктөр</translation>
+<translation id="1752021286346845558">8-электрондук каттар кутусу</translation>
 <translation id="1753706481035618306">Беттин номери</translation>
 <translation id="1763864636252898013">Бул сервер <ph name="DOMAIN" /> экендигин далилдей алган жок; себеби түзмөгүңүздүн иш тутуму анын коопсуздук тастыктамасына ишенбейт. Мындай көйгөй туура эмес конфигурация менен шартталышы мүмкүн же туташууңузга чабуулчу кийлигишип жатат.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Windows аркылуу Тармак мүчүлүштүгүн аныктоону иштетип көрүңүз<ph name="END_LINK" />.</translation>
@@ -193,6 +206,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">Карта ээсинин аты-жөнү</translation>
+<translation id="1807528111851433570">Баштоо барагы</translation>
 <translation id="1821930232296380041">Сурам же сурам параметрлери жараксыз</translation>
 <translation id="1822540298136254167">Сиз баш баккан вебсайттар жана аларда өткөргөн убакыт</translation>
 <translation id="1826516787628120939">Текшерүүдө</translation>
@@ -221,6 +235,7 @@
 <translation id="1973335181906896915">Сериялоо катасы</translation>
 <translation id="1974060860693918893">Өркүндөтүлгөн</translation>
 <translation id="1974883374937189061"><ph name="BEGIN_WHITEPAPER_LINK" />Баш баккан айрым сайттарыңыздын URL'дерин, тутум тууралуу чектелген маалыматты жана барактагы айрым мазмунду<ph name="END_WHITEPAPER_LINK" /> Google'га жөнөтүү менен Chrome'дун коопсуздугун күчтөтүүгө жардам бериңиз. <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">10-электрондук каттар кутусу</translation>
 <translation id="1978555033938440688">Орнотулган программанын версиясы</translation>
 <translation id="1981206234434200693">Chrome'дун серептөө дайындарын тазалоо</translation>
 <translation id="1992331125980284532">JIS B3 (364mm x 515mm)</translation>
@@ -230,6 +245,7 @@
 <translation id="2025186561304664664">Прокси автоконфигурацияланат деп коюлду.</translation>
 <translation id="2030481566774242610"><ph name="LINK" /> ушуну айтайын дедиңиз беле?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Прокси менен брандмауэрди текшерип көрүңүз<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">7-түпкүч</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> тилиндеги барактар которулбайт.</translation>
 <translation id="2053553514270667976">Почта индекси</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 сунуш}other{# сунуш}}</translation>
@@ -242,6 +258,7 @@
 <translation id="2096368010154057602">Бөлүм</translation>
 <translation id="2099652385553570808">Сол жагын үч жолу илмек менен бекитүү</translation>
 <translation id="2102134110707549001">Татаал сырсөз сунушталсын…</translation>
+<translation id="2107021941795971877">Басып чыгарууну колдоо</translation>
 <translation id="2108755909498034140">Компьютериңизди өчүрүп-күйгүзүңүз</translation>
 <translation id="2111256659903765347">Super-A</translation>
 <translation id="2113977810652731515">Карта</translation>
@@ -266,6 +283,7 @@
 <translation id="2187317261103489799">Аныктоо (демейки)</translation>
 <translation id="2188375229972301266">Төмөнкү жагын бир нече жолу тешүү</translation>
 <translation id="2202020181578195191">Мөөнөтү аяктоочу жылды туура киргизиңиз</translation>
+<translation id="22081806969704220">3-түпкүч</translation>
 <translation id="2212735316055980242">Саясат табылган жок</translation>
 <translation id="2213606439339815911">Жазуулар алынууда…</translation>
 <translation id="2215727959747642672">Файл түзөтүү</translation>
@@ -283,6 +301,7 @@
 <translation id="2263079731045660823">Chrome'дун жөндөөлөрүнө өтүп, автотолтурууда колдонулган насыя картасынын маалыматын жаңыртыңыз</translation>
 <translation id="2267047181501709434">Аныктыгыңыз текшерилүүдө...</translation>
 <translation id="2270484714375784793">Телефон номери</translation>
+<translation id="2276057643614339130">Басып чыгаруу негизи</translation>
 <translation id="2277103315734023688">Алдыга түрдүрүү</translation>
 <translation id="2283340219607151381">Даректерди сактоо жана автоматтык түрдө толтуруу</translation>
 <translation id="2288422996159078444">Сиз терген сөздөрдүн, көргөн барактардын же башка аракеттердин баары каралып турат. Ал эми сайттагы мазмундар сизге кабарланбастан өзгөртүлүшү мүмкүн.</translation>
@@ -322,6 +341,7 @@
 <translation id="2465655957518002998">Жеткирүү ыкмасын тандоо</translation>
 <translation id="2465688316154986572">Илмек</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />Тармак мүчүлүштүгүн аныктоону иштетиңиз<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">1–N ирети</translation>
 <translation id="2473195200299095979">Бул бетти которуңуз</translation>
 <translation id="2479410451996844060">Издөө URL жараксыз.</translation>
 <translation id="2482878487686419369">Билдирмелер</translation>
@@ -340,6 +360,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{жана дагы 1}other{жана дагы #}}</translation>
 <translation id="2536110899380797252">Дарегин кошуу</translation>
 <translation id="2539524384386349900">Аныктоо</translation>
+<translation id="2544644783021658368">Жалгыз документ</translation>
 <translation id="254947805923345898">Саясаттын мааниси туура эмес көрсөтүлдү.</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> сайты жараксыз жооп жөнөттү.</translation>
 <translation id="2556876185419854533">Түзөтүүнү &amp;жасабоо</translation>
@@ -374,8 +395,10 @@
 <translation id="2676271551327853224">Roc-8K</translation>
 <translation id="2677748264148917807">Чыгуу</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">Туура формат</translation>
 <translation id="2691924980723297736">Коопсуздук эскертүүсү</translation>
 <translation id="2699302886720511147">Кабыл алынган карточкалар</translation>
+<translation id="2701514975700770343">Алдыңкы бетин ылдый каратып</translation>
 <translation id="2702801445560668637">Окуу тизмеси</translation>
 <translation id="2704283930420550640">Маани форматка дал келбейт.</translation>
 <translation id="2705137772291741111">Бул сайттын сакталган (кештелген) көчүрмөсү окулбай койду.</translation>
@@ -395,12 +418,15 @@
 <translation id="2742870351467570537">Тандалган нерселерди алып салуу</translation>
 <translation id="277133753123645258">Жөнөтүү ыкмасы</translation>
 <translation id="277499241957683684">Түзмөк жаздыруусу жок</translation>
+<translation id="2775884851269838147">Басылып чыга турган биринчи барак</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">Туташуу баштапкы абалга келтирилди.</translation>
 <translation id="2792012897584536778">Бул түзмөктүн администраторлору коопсуздук тастыктамаларын сиз кирген вебсайттардагы мазмунду көрө алгыдай кылып жөндөштү.</translation>
 <translation id="2799020568854403057">Алдыдагы сайтта зыянкеч колдонмолор камтылган</translation>
 <translation id="2799223571221894425">Кайра ишке киргизүү</translation>
 <translation id="2803306138276472711">Google Коопсуз Серепчи жакында <ph name="SITE" /> сайтынан <ph name="BEGIN_LINK" />кесепеттүү программа<ph name="END_LINK" /> тапты. Кээде коопсуз вебсайттар кесепеттүү программалардан жабыркап калышат.</translation>
+<translation id="2807052079800581569">Y сүрөтүнүн абалы</translation>
+<translation id="2809804249696361569">Эки барак тең</translation>
 <translation id="2824775600643448204">Дарек жана издөө тилкеси</translation>
 <translation id="2826760142808435982">Бул туташуу <ph name="CIPHER" /> аркылуу шифрленип, аныктыгы текшерилген жана муну <ph name="KX" /> алмаштыруу механизми катары колдонот.</translation>
 <translation id="2835170189407361413">Форманы тазалоо</translation>
@@ -415,6 +441,7 @@
 <translation id="290376772003165898">Барак <ph name="LANGUAGE" /> тилинде эмес бекен?</translation>
 <translation id="2909946352844186028">Тармак өзгөрүлгөн окшойт.</translation>
 <translation id="2910133103376701357">Түзмөгүңүз жана аккаунтуңуз <ph name="ENROLLMENT_DOMAIN" /> тарабынан башкарылууда.</translation>
+<translation id="2911973620368911614">Тапшырманы аткаруучунун идентификатору</translation>
 <translation id="2916038427272391327">Башка программаларды жабыңыз</translation>
 <translation id="2922350208395188000">Сервердин тастыктамасы текшерилбей жатат.</translation>
 <translation id="2925673989565098301">Жеткирүү ыкмасы</translation>
@@ -424,6 +451,7 @@
 <translation id="2934466151127459956">Government-Letter</translation>
 <translation id="2941952326391522266">Бул сервер <ph name="DOMAIN" /> экендигин далилдей алган жок; себеби анын коопсуздук тастыктамасы бул жерден <ph name="DOMAIN2" /> алынган. Мындай көйгөй туура эмес конфигурация менен шартталышы мүмкүн же туташууңузга чабуулчу кийлигишип жатат.</translation>
 <translation id="2948083400971632585">Жөндөөлөр бетинен туташат деп конфигурацияланган бардык проксилерди өчүрүп койсоңуз болот.</translation>
+<translation id="2951588413176968965">Электрондук каттар кутум</translation>
 <translation id="295526156371527179">Эскертүү: Бул саясат белгиленгендей сөздүк катары бириктирилген жок, себеби ал сөздүк эмес.</translation>
 <translation id="2955913368246107853">Издөө тилкесин жабуу</translation>
 <translation id="2969319727213777354">Коопсуз туташууну орнотуу үчүн, саатыңыз туура коюлушу керек. Себеби вебсайттардын аныктыгын текшере турган тастыктамалар белгилүү бир убакыт аралыгында гана жарактуу болот. Түзмөгүңүздүн сааты туура эмес болгондуктан, Google Chrome бул тастыктамаларды текшере албайт.</translation>
@@ -438,6 +466,7 @@
 <translation id="2991174974383378012">Вебсайттар менен бөлүшүлүүдө</translation>
 <translation id="2991571918955627853">Азыр <ph name="SITE" /> сайтына кире албайсыз, анткени вебсайт HSTS протоколун иштетип жатат. Тармак каталары жана чабуулдар адатта убактылуу көйгөй болгондуктан, бул барак кийинчерээк иштеп калышы мүмкүн.</translation>
 <translation id="2996674880327704673">Google сунуштайт</translation>
+<translation id="3002501248619246229">Киргизүү түпкүчүнүн медиасын текшерүү</translation>
 <translation id="3005723025932146533">Сакталган көчүрмөнү көрсөтүү</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> карточкаңыздын CVC кодун киргизиңиз. Текшерилгенден кийин карточкаңыздын маалыматы бул сайтта көрүнөт.</translation>
 <translation id="3010559122411665027">Тизмедеги жазуу "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -450,12 +479,14 @@
 <translation id="3060227939791841287">C9 (Конверт)</translation>
 <translation id="3061707000357573562">Оңдоо кызматы</translation>
 <translation id="3064966200440839136">Тышкы колдонмо аркылуу төлөө үчүн жашыруун режимден чыкканы жатасыз. Уланта берелиби?</translation>
+<translation id="3080254622891793721">Графика</translation>
 <translation id="3086579638707268289">Интернеттеги аракеттериңиз көзөмөлдөнүүдө</translation>
 <translation id="3087734570205094154">Аягы</translation>
 <translation id="3095940652251934233">Билдирүү</translation>
 <translation id="3096100844101284527">Алып кете турган жердин дарегин кошуу</translation>
 <translation id="3105172416063519923">Менчик объектисинин ID:</translation>
 <translation id="3109728660330352905">Бул баракты көрүүгө уруксатыңыз жок.</translation>
+<translation id="3113284927548439113">Үчүнчү смена</translation>
 <translation id="3116158981186517402">Ламинациялоо</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />Туташуу мүчүлүштүгүн аныктоону иштетип көрүңүз<ph name="END_LINK" />.</translation>
@@ -480,6 +511,7 @@
 <translation id="3209034400446768650">Барак төлөм өндүрүшү мүмкүн</translation>
 <translation id="3212581601480735796"><ph name="HOSTNAME" /> сайтындагы аракеттериңиз көзөмөлдөнүүдө</translation>
 <translation id="3215092763954878852">WebAuthn'ди колдонуу мүмкүн эмес</translation>
+<translation id="3218181027817787318">Окшош</translation>
 <translation id="3225919329040284222">Сервер кыналган күтүүлөргө дал келбеген тастыктама тапшырды. Бул күтүүлөр сиздин коопсуздугуңузду камсыз кылган ишенимдүү вебсайттарда камтылган.</translation>
 <translation id="3226128629678568754">Барактын жүктөлүшүнө талап кылынган дайындарды кайра тапшыруу үчүн кайра жүктөө баскычын басыңыз.</translation>
 <translation id="3227137524299004712">Микрофон</translation>
@@ -514,6 +546,7 @@
 <translation id="3399952811970034796">Жеткирүү дареги</translation>
 <translation id="3422248202833853650">Эстутумду бошотуу үчүн башка программаларды жаап көрүңүз.</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> сайты учурда жеткиликсиз.</translation>
+<translation id="3423742043356668186">Тутум белгиленди</translation>
 <translation id="3427092606871434483">Уруксат берүү (демейки)</translation>
 <translation id="3427342743765426898">Түзөтүүнү &amp;кайталоо</translation>
 <translation id="342781501876943858">Сырсөзүңүздү башка сайттарда колдонгон болсоңуз, Chromium аны өзгөртүүнү сунуштайт.</translation>
@@ -523,6 +556,7 @@
 <translation id="3447661539832366887">Бул түзмөктүн ээси динозавр оюнун өчүрүп койду.</translation>
 <translation id="3447884698081792621">Тастыктаманы көрсөтүү (чыгарган тарап: <ph name="ISSUER" />)</translation>
 <translation id="3452404311384756672">Алуу аралыгы:</translation>
+<translation id="3453962258458347894">Кайталоолордун саны</translation>
 <translation id="3456231139987291353">Number-11 (Конверт)</translation>
 <translation id="3461824795358126837">Бөлүп көрсөткүч</translation>
 <translation id="3462200631372590220">Өркүндөтүлгөндөрдү жашыруу</translation>
@@ -530,14 +564,19 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" />, учурда ачылып турат. Ачык өтмөккө өтүү үчүн, өтмөктү, андан соң "Enter" баскычын басыңыз</translation>
 <translation id="3479552764303398839">Азыр эмес</translation>
 <translation id="3484560055331845446">Кимдир бирөө Google аккаунтуңузга кирип алган окшойт. Chrome сырсөзүңүздү азыр өзгөртүүнү сунуштайт. Аккаунтуңузга кайра киришиңиз керек болот.</translation>
+<translation id="3487845404393360112">4-түпкүч</translation>
 <translation id="3495081129428749620"><ph name="PAGE_TITLE" /> барагынан табуу</translation>
 <translation id="3512163584740124171">Ушул эле саясаттар тобундагы башка саясаттын мааниси артыкчылыктуу болгондуктан, бул саясат этибарга алынбайт.</translation>
 <translation id="3513704683820682405">Кошумчаланган чындык</translation>
+<translation id="3518941727116570328">Бир нече объектти тейлөө</translation>
 <translation id="3528171143076753409">Сервердин тастыктамасы ишенимдүү эмес.</translation>
 <translation id="3528485271872257980">Күңүрт күрөң</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{Шайкештештирилген түзмөктөрдө кеминде 1 нерсе бар}=1{1 нерсе (жана шайкештештирилген түзмөктөрдө андан көп)}other{# нерсе (жана шайкештештирилген түзмөктөрдө андан көп)}}</translation>
+<translation id="3531780078352352885">Жумуш барактары</translation>
+<translation id="3533328374079021623">5-электрондук каттар кутусу</translation>
 <translation id="3539171420378717834">Бул картанын көчүрмөсү ушул түзмөктө сакталсын</translation>
 <translation id="3553513561058684206">Сизге</translation>
+<translation id="3558573058928565255">Күндүз</translation>
 <translation id="3566021033012934673">Туташууңуз купуя эмес</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635"><ph name="SITE" /> сайтында кыстарылган баракча мындай дейт:</translation>
@@ -546,8 +585,10 @@
 <translation id="3583757800736429874">Жылдырууну &amp;кайталоо</translation>
 <translation id="3584299510153766161">Төмөн жагын бир нече жолу тешүү</translation>
 <translation id="3586931643579894722">Чоо-жайын жашыруу</translation>
+<translation id="3587738293690942763">Орто</translation>
 <translation id="3592413004129370115">Italian (Конверт)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">Түрмөктүн багыты</translation>
 <translation id="3614103345592970299">Өлчөмү: 2</translation>
 <translation id="361438452008624280">Тизмедеги жазуу "<ph name="LANGUAGE_ID" />": Белгисиз же колдоого алынбаган тил.</translation>
 <translation id="3615877443314183785">Мөөнөтү аяктоочу күндү туура киргизиңиз</translation>
@@ -556,6 +597,7 @@
 <translation id="3630155396527302611">Эгер ал тармакка кире алган программа катары мурунтан эле тизмеленген
       болсо, аны тизмеден алып салып, кайра кошуп көрүңүз.</translation>
 <translation id="3631244953324577188">Биометрика</translation>
+<translation id="3634530185120165534">5-түпкүч</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">Жарактуулугу ийгиликтүү текшерилди</translation>
 <translation id="3655670868607891010">Эгер бул нерсе улам-улам көрүнө берсе, буларды <ph name="HELP_LINK" /> байкап көрүңүз.</translation>
@@ -594,16 +636,21 @@
 <translation id="3760561303380396507">CVC'нин ордуна Windows Hello колдонулсунбу?</translation>
 <translation id="3761718714832595332">Абалын жашыруу</translation>
 <translation id="3765032636089507299">Коопсуз серептөө барагы оңдолууда.</translation>
+<translation id="3765588406864124894">9-электрондук каттар кутусу</translation>
 <translation id="3778403066972421603">Бул карточка Google каттоо эсебиңизде жана ушул түзмөктө сакталсынбы?</translation>
+<translation id="3780694243617746492">Чыгаруу түпкүчү</translation>
 <translation id="3781428340399460090">Ачык кызгылтым</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /> мөөнөтү аяктайт</translation>
 <translation id="3789155188480882154">Өлчөмү: 16</translation>
 <translation id="3797522431967816232">Prc3 (Конверт)</translation>
+<translation id="3799805948399000906">Арип суралды</translation>
+<translation id="3807366285948165054">X сүрөтүн жылдыруу</translation>
 <translation id="3807873520724684969">Зыянкеч мазмун бөгөттөлдү.</translation>
 <translation id="3808375843007691220">Эскертүү: Функциялар сынамык режимде иштейт!</translation>
 <translation id="3810973564298564668">Башкаруу</translation>
 <translation id="382518646247711829">Эгер прокси сервериңизди колдонсоңуз…</translation>
+<translation id="3827112369919217609">Абсолют</translation>
 <translation id="3828924085048779000">Купуя сөз айкашын бош калтырууга болбойт.</translation>
 <translation id="3831915413245941253">Кошумча функцияларды иштетүү үчүн <ph name="ENROLLMENT_DOMAIN" /> домени керектүү кеңейтүүлөрдү орнотту. Кеңейтүүлөрдүн айрым дайындарыңызга кирүү мүмкүнчүлүгү бар.</translation>
 <translation id="3832522519263485449">Сол жагын бир нече жолу тешүү</translation>
@@ -612,6 +659,7 @@
 <translation id="3884278016824448484">Түзмөктүн далдаштыргычтары дал келбей кагылышууда</translation>
 <translation id="3885155851504623709">Пэриш</translation>
 <translation id="388632593194507180">Көзөмөлдөө аныкталды</translation>
+<translation id="3886948180919384617">3-төшөгүч</translation>
 <translation id="3890664840433101773">Электрондук почта дарегин кошуу</translation>
 <translation id="3897092660631435901">Меню</translation>
 <translation id="3901925938762663762">Картанын мөөнөтү бүткөн</translation>
@@ -646,7 +694,9 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">Прокси конфигурациясы боюнча бекитилген прокси серверлери эмес, .pac скрипт URL'и колдонулат.</translation>
 <translation id="4082393374666368382">Жөндөөлөр – Башкаруу</translation>
+<translation id="4088981014127559358">1-тараптын Y сүрөтүн жылдыруу</translation>
 <translation id="4098354747657067197">Алдыда жалган сайт</translation>
+<translation id="4101413244023615925">Текст жана графика</translation>
 <translation id="4103249731201008433">Түзмөктүн сериялык номери жараксыз</translation>
 <translation id="4103763322291513355">Кара тизмедеги URL'дерди жана тутум администраторуңуз ишке киргизген саясаттарды көрүү үчүн, &lt;strong&gt;chrome://policy&lt;/strong&gt; дарегине кириңиз.</translation>
 <translation id="4108231218301530806">Кийинки жолу бул картаны ырастоо үчүн манжа изин колдонуңуз.</translation>
@@ -659,6 +709,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{дагы 1}other{дагы #}}</translation>
 <translation id="4130226655945681476">Тармак кабелин, модемди же роутерди текшерип көрүңүз</translation>
 <translation id="413544239732274901">Кеңири маалымат</translation>
+<translation id="4142935452406587478">10-түпкүч</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">Глобалдык демейки (аныктоону) колдонуу</translation>
 <translation id="4159784952369912983">Кызгылт көгүш</translation>
@@ -701,6 +752,7 @@
 <translation id="4258748452823770588">Начар колтамга</translation>
 <translation id="4261046003697461417">Корголгон документтерде Аннотация режими иштебейт</translation>
 <translation id="4265872034478892965">Администраторуңуз уруксат берген</translation>
+<translation id="4270541775497538019">6-төшөгүч</translation>
 <translation id="4275830172053184480">Түзмөктү өчүрүп күйгүзүү</translation>
 <translation id="4277028893293644418">Сырсөздү өзгөртүү</translation>
 <translation id="4279811152705618813"><ph name="DEVICE_TYPE" /> түзмөгүңүз <ph name="ENROLLMENT_DOMAIN" /> тарабынан башкарылууда</translation>
@@ -716,6 +768,7 @@
 <translation id="4318566738941496689">Түзмөгүңүздүн аты жана тармактын дареги</translation>
 <translation id="4325863107915753736">Макала табылбай койду</translation>
 <translation id="4326324639298822553">Мөөнөтү аяктоочу күндү текшерип, кайра аракет кылыңыз</translation>
+<translation id="4331519897422864041">5-төшөгүч</translation>
 <translation id="4331708818696583467">Коопсуз эмес</translation>
 <translation id="4340982228985273705">Бул компьютер ишкана тарабынан башкарылбаганы аныкталды, андыктан саясат Chrome Желе дүкөнүндө жайгашкан кеңейтүүлөрдү гана автоматтык түрдө орното алат. Chrome Желе дүкөнүн жаңыртуучу URL: "<ph name="CWS_UPDATE_URL" />".</translation>
 <translation id="4346197816712207223">Кабыл алынган насыя карточкалары</translation>
@@ -731,6 +784,7 @@
 <translation id="4372948949327679948">Күтүлгөн <ph name="VALUE_TYPE" /> мааниси.</translation>
 <translation id="4377125064752653719"><ph name="DOMAIN" /> жетүүгө аракет кылдыңыз, бирок сервердин тастыктамасын аны чыгарган жак жокко чыгарды. Демек, сервердин далдаштырма дайындарына таптакыр ишенбешиңиз керек, себеби ал зыянкеч чабуулчу болушу да мүмкүн.</translation>
 <translation id="4378154925671717803">Телефон</translation>
+<translation id="4390472908992056574">Кыр</translation>
 <translation id="4406896451731180161">издөө натыйжалары</translation>
 <translation id="4408413947728134509"><ph name="NUM_COOKIES" /> куки</translation>
 <translation id="4415426530740016218">Алып кете турган жердин дарегин тандоо</translation>
@@ -757,6 +811,7 @@
 <translation id="4522570452068850558">Чоо-жайлары</translation>
 <translation id="4524138615196389145">Мындан ары WebAuthn функциясын колдонуп карталарды тезирээк ырастаңыз</translation>
 <translation id="4524805452350978254">Карталарды башкаруу</translation>
+<translation id="4542971377163063093">6-түпкүч</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Жарк этме</translation>
 <translation id="4558551763791394412">Кеңейтүүлөрүңүздү өчүрүп көрүңүз.</translation>
@@ -773,6 +828,7 @@
 <translation id="4635654612248442824"><ph name="ORIGIN" /> сайты бардык кирүү сурамдары үчүн баштапкы саясаты
     колдонулсун деп суранды, бирок бул саясатты учурда колдонууга болбойт.</translation>
 <translation id="464342062220857295">Функцияларды издөө</translation>
+<translation id="4644670975240021822">Тескери иретте алдыңкы бетин ылдый каратып</translation>
 <translation id="4646534391647090355">Азыр көрсөтүлсүн</translation>
 <translation id="4658638640878098064">Жогорку сол жагын илмек менен бекитүү</translation>
 <translation id="4668929960204016307">,</translation>
@@ -781,6 +837,7 @@
 <translation id="4690462567478992370">Жараксыз тастыктаманы колдонууну токтотуу</translation>
 <translation id="4691835149146451662">Architecture-A (Конверт)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">Каптал</translation>
 <translation id="4708268264240856090">Туташууңуз үзгүлтүккө учурады</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />Windows Тармак мүчүлүштүгүн аныктоону иштетиңиз<ph name="END_LINK" /></translation>
@@ -798,9 +855,11 @@
 <translation id="4764776831041365478"><ph name="URL" /> дарегиндеги веб-баракча убактылуу иштебейт же жаңы веб дарекке биротоло көчүрүлгөн окшойт.</translation>
 <translation id="4766713847338118463">Төмөн жагын эки жолу илмек менен бекитүү</translation>
 <translation id="4771973620359291008">Белгисиз ката кетти.</translation>
+<translation id="4780366598804516005">1-электрондук каттар кутусу</translation>
 <translation id="4780900888022378816">Түзмөгүңүздү <ph name="ENROLLMENT_DOMAIN" /> жана аккаунтуңузду <ph name="ACCOUNT_DOMAIN" /> башкарууда.</translation>
 <translation id="4785689107224900852">Бул өтмөккө которулуу</translation>
 <translation id="4791134497475588553">Орнотулган Linux колдонмолору жана алар акыркы жолу качан колдонулган</translation>
+<translation id="4796594887379589189">Тапшырманын идентификатору</translation>
 <translation id="4798078619018708837">Картаңыздын реквизиттерин жаңыртуу үчүн, <ph name="CREDIT_CARD" /> картаңыздын жарамдуулук мөөнөтүн жана CVC кодун киргизиңиз. Сиз ырастагандан кийин, Google аккаунтуңуздагы картанын реквизиттери бул сайтка жөнөтүлөт.</translation>
 <translation id="4800132727771399293">Мөөнөтү бүтчү күндү жана CVC'иңизди текшерип, кайра аракет кылыңыз</translation>
 <translation id="480334179571489655">Түпнуска саясат катасы</translation>
@@ -808,6 +867,7 @@
 <translation id="4807049035289105102">Азыр <ph name="SITE" /> сайтына кире албайсыз, анткени вебсайт Google Chrome иштете албаган шифрленген эсептик дайындарды жөнөттү. Тармак каталары жана чабуулдар адатта убактылуу көйгөй болгондуктан, бул барак кийинчерээк иштеп калышы мүмкүн.</translation>
 <translation id="4813512666221746211">Тармактык ката</translation>
 <translation id="4816492930507672669">Баракка чактоо</translation>
+<translation id="484462545196658690">Авто</translation>
 <translation id="4850886885716139402">Көрүнүш</translation>
 <translation id="4854362297993841467">Жеткирүүнүн мындай ыкмасы мүмкүн эмес. Башка ыкмасын байкап көрүңүз.</translation>
 <translation id="4876188919622883022">Жөнөкөйлөштүрүлгөн көрүнүш</translation>
@@ -817,6 +877,7 @@
 <translation id="4879491255372875719">Автоматтык (демейки)</translation>
 <translation id="4880827082731008257">Издөө таржымалы</translation>
 <translation id="4881695831933465202">Ачуу</translation>
+<translation id="4892518386797173871">Арткы</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">Сактоо…</translation>
 <translation id="4913987521957242411">Жогорку сол жагын тешүү</translation>
@@ -826,6 +887,7 @@
 <translation id="4926049483395192435">Белгилениши керек.</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> мындай дейт:</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">Сыйымдуулугу чоң</translation>
 <translation id="4943703118917034429">Виртуалдык чындык</translation>
 <translation id="4943872375798546930">Натыйжалар жок</translation>
 <translation id="4950898438188848926">Өтмөктү которуштуруу баскычы. Ачык өтмөккө өтүү үчүн, "Enter" баскычын басыңыз, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -858,8 +920,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1 колдонулууда)}other{(# колдонулууда)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />Прокси дарегин текшерип көрүңүз<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">4-электрондук каттар кутусу</translation>
 <translation id="5087286274860437796">Азыркы учурда сервердин тастыктамасы жарактуу эмес.</translation>
 <translation id="5087580092889165836">Карточка кошуу</translation>
+<translation id="5088142053160410913">Операторго билдирүү</translation>
 <translation id="5089810972385038852">Штат</translation>
 <translation id="5093232627742069661">Z формасында бүктөө</translation>
 <translation id="5094747076828555589">Бул сервер <ph name="DOMAIN" /> экендигин далилдей алган жок; себеби Chromium коопсуздук тастыктамасына ишенбейт. Мындай көйгөй туура эмес конфигурация менен шартталышы мүмкүн же туташууңузга чабуулчу кийлигишип жатат.</translation>
@@ -870,15 +934,18 @@
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 бит)</translation>
 <translation id="5121469660360593280">Chrome Enterprise User Protect аркылуу белгиленген коопсуздук иш-чаралары тууралуу дайындарды Администраторуңуз менен бөлүшүү. Анда сиз ачкан барактардын URL даректери, файлдардын аталыштары же метадайындар, түзмөгүңүзгө жана Chrome'го кирүүдө колдонгон колдонуучунун аты бар.</translation>
+<translation id="5123063207673082822">Дем алыш</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Картаны ырастаңыз</translation>
 <translation id="5135404736266831032">Даректерди башкаруу...</translation>
 <translation id="5138227688689900538">Азыраак көрсөтүү</translation>
 <translation id="5141240743006678641">Шайкештештирилген сырсөздөрдү Google далдаштырма дайындары менен шифрлеңиз</translation>
 <translation id="5145883236150621069">Саясат жообунда ката коду бар</translation>
+<translation id="5148809049217731050">Өйдө каратып</translation>
 <translation id="515292512908731282">C4 (Конверт)</translation>
 <translation id="5158275234811857234">Мукаба</translation>
 <translation id="5159010409087891077">Баракчаны жаңы жашыруун терезеде ачуу (⇧⌘N)</translation>
+<translation id="5161506081086828129">9-төшөгүч</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> картаңыздын CVC кодун киргизиңиз. Сиз ырастагандан кийин, Google аккаунтуңуздагы картанын реквизиттери бул сайтка жөнөтүлөт.</translation>
 <translation id="5169827969064885044">Кимдир бирөө сиздин жеке дайындарыңызга же уюмуңуздун аккаунтуна кирип алган окшойт. Chrome сырсөзүңүздү азыр өзгөртүүнү сунуштайт.</translation>
 <translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
@@ -899,6 +966,7 @@
 <translation id="5250209940322997802">"Тармакка туташуу"</translation>
 <translation id="5251803541071282808">Булут</translation>
 <translation id="5252000469029418751">C7 (Конверт)</translation>
+<translation id="5254043433801397071">Басып чыгаруу мазмунун оптималдаштыруу</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">Төлөм аткарылды</translation>
 <translation id="5266128565379329178">Жогорку жагын байлоо</translation>
@@ -912,6 +980,7 @@
 <translation id="5287240709317226393">Кукилерди көрсөтүү</translation>
 <translation id="5287456746628258573">Бул сайт эскирген коопсуздук конфигурациясын колдонуп жатат. Маалыматыңыз (мисалы, сырсөздөр же насыя карталарынын номерлер) ушул сайтка жөнөтүлгөндө ачык көрүнүп калышы мүмкүн.</translation>
 <translation id="5288108484102287882">Саясатта коюлган маанилерди ырастоодо эскертүүлөр берилди</translation>
+<translation id="5289384342738547352">Бир нече документти тейлөө</translation>
 <translation id="5295292838686006428">Сайттагы же колдонмодогу сырсөзүңүздү кимдир-бирөө билип алды. Сакталган сырсөздөрүңүздү текшерип коюңуз.</translation>
 <translation id="5299298092464848405">Саясатты талдоо катасы</translation>
 <translation id="5300589172476337783">Көрсөтүү</translation>
@@ -936,10 +1005,12 @@
 <translation id="5396631636586785122">Оң четин жамоо</translation>
 <translation id="5400836586163650660">Боз</translation>
 <translation id="540969355065856584">Бул сервер <ph name="DOMAIN" /> экендигин далилдей алган жок; азыркы учурда анын коопсуздук тастыктамасы жарактуу эмес. Бул туура эмес конфигурациялоодон болушу мүмкүн же чабуулчу туташууңузга тоскоол болууда.</translation>
+<translation id="541416427766103491">4-төшөгүч</translation>
 <translation id="5421136146218899937">Серептөө дайындарын тазалап салуу…</translation>
 <translation id="5430298929874300616">Кыстарманы алып салуу</translation>
 <translation id="5431657950005405462">Файлыңыз табылган жок</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />": <ph name="ERROR" /> схемалык текшерүү катасы</translation>
+<translation id="5443468954631487277">Тескери иретте алдыңкы бетин өйдө каратып</translation>
 <translation id="5452270690849572955">Бул <ph name="HOST_NAME" /> барагын табуу мүмкүн эмес</translation>
 <translation id="5455374756549232013">Начар саясаттын убакыт белгиси</translation>
 <translation id="5457113250005438886">Жараксыз</translation>
@@ -961,7 +1032,9 @@
 <translation id="552553974213252141">Текст туура чыгарылып алындыбы?</translation>
 <translation id="55293785478302737">Четин жамоо</translation>
 <translation id="553484882784876924">Prc6 (Конверт)</translation>
+<translation id="5539243836947087108">Сал</translation>
 <translation id="5540224163453853">Суралган макала табылган жок.</translation>
+<translation id="5541086400771735334">7-электрондук каттар кутусу</translation>
 <translation id="5541546772353173584">Электрондук почта дарегин кошуу</translation>
 <translation id="5545756402275714221">Сизге ылайыктуу макалалар</translation>
 <translation id="5552137475244467770">Chrome Интернетке жарыяланган тизмелерден сырсөздөрүңүздү маал-маалы менен текшерип турат. Мындай учурда сырсөздөрүңүз менен колдонуучу аттарыңыз шифрленет. Аларды эч ким, анын ичинде Google да окуй албайт.</translation>
@@ -986,10 +1059,13 @@
 <translation id="5632627355679805402">Дайын-даректериңиз <ph name="BEGIN_LINK" />Google сырсөзүңүз<ph name="END_LINK" /> менен <ph name="TIME" /> шифрленген. Шайкештирип баштоо үчүн, сырсөзүңүздү киргизиңиз.</translation>
 <translation id="5633066919399395251">Учурда <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> сайтындагы чабуулчулар компьютериңизге кооптуу программаларды орнотууга жана маалыматыңызды (мисалы, сүрөттөр, сырсөздөр, билдирүүлөр жана насыя карточкалары) уурдап же жок кылууга аракет кылышы мүмкүн. <ph name="BEGIN_LEARN_MORE_LINK" />Кеңири маалымат<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">Адаштыруучу мазмун бөгөттөлдү.</translation>
+<translation id="5644090287519800334">1-тараптын X сүрөтүн жылдыруу</translation>
+<translation id="5645854190134202180">Экинчи смена</translation>
 <translation id="5659593005791499971">Электрондук почта</translation>
 <translation id="5663614846592581799">9x11 (Конверт)</translation>
 <translation id="5663955426505430495">Бул түзмөктүн администратору кошумча функцияларды иштетүү үчүн керектүү кеңейтүүлөрдү орнотту. Кеңейтүүлөрдүн айрым дайындарыңызга кирүү мүмкүнчүлүгү бар.</translation>
 <translation id="5675650730144413517">Бул баракча иштебей жатат</translation>
+<translation id="568292603005599551">X сүрөтүнүн абалы</translation>
 <translation id="5684874026226664614">Ой, бул бет которулган жок.</translation>
 <translation id="5685654322157854305">Жеткирүү дарегин көрсөтүү</translation>
 <translation id="5689199277474810259">JSON'го экспорттоо</translation>
@@ -1007,6 +1083,7 @@
 <translation id="5763042198335101085">Жарактуу электрондук почта дарегин киргизиңиз</translation>
 <translation id="5763703224595565476">Администраторуңуз Chrome Enterprise User Protect кызматын серепчиңизден иштетти. Chrome Enterprise User Protect кызматынын айрым дайындарыңызга кирүүгө мүмкүнчүлүгү бар.</translation>
 <translation id="5765072501007116331">Жеткирүү ыкмаларын жана талаптарын көрүү үчүн дарегин тандаңыз</translation>
+<translation id="5776313857861697733">Маанилүүлүгү</translation>
 <translation id="5778550464785688721">MIDI түзмөктөрүн толук көзөмөлдөө</translation>
 <translation id="5781136890105823427">Тажрыйба иштетилди</translation>
 <translation id="578305955206182703">Кочкул сары</translation>
@@ -1027,6 +1104,7 @@
 <translation id="5855253129151731373">Бул сайттагы түйүндүн аталышы <ph name="LOOKALIKE_DOMAIN" /> сайтына окшош көрүнүшү мүмкүн. Чабуулчулар кээ бир учурларда домендин аталышына кичинекей, көзгө көрүнбөгөн өзгөртүүлөрдү киргизип, сайттарды туурашат.
 
     Эгер бул жаңылыш көрсөтүлүп жатат деп ойлосоңуз, https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals баракчасына баш багыңыз.</translation>
+<translation id="5862579898803147654">8-төшөгүч</translation>
 <translation id="5863847714970149516">Кийинки баракка өтсөңүз, акы алынышы мүмкүн</translation>
 <translation id="5866257070973731571">Телефон номерин кошуу</translation>
 <translation id="5866898949289125849">Иштеп чыгуучунун куралдар барагын көрүп жатасыз</translation>
@@ -1039,6 +1117,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (шайкештирилген)</translation>
 <translation id="59174027418879706">Иштетилген</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">Күйүк</translation>
 <translation id="5921639886840618607">Карта Google аккаунтуңузда сакталсынбы?</translation>
 <translation id="5922853866070715753">Бүткөнү калды</translation>
 <translation id="5932224571077948991">Сайт тажатма же адаштыруучу жарнамаларды көрсөтүп жатат</translation>
@@ -1049,11 +1128,13 @@
 <translation id="5975083100439434680">Кичирейтүү</translation>
 <translation id="5979084224081478209">Сырсөздөрдү текшерүү</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
+<translation id="5984570616552610254">Камерадагы нымдуулук</translation>
 <translation id="598637245381783098">Төлөм колдонмосу ачылбай жатат</translation>
 <translation id="5989320800837274978">Бекитилген прокси серверлер да, .pac скрипттин URL'и да көрсөтүлгөн жок.</translation>
 <translation id="5990559369517809815">Серверге жөнөтүлгөн сурамдар кеңейтүү тарабынан бөгөттөлдү.</translation>
 <translation id="5992691462791905444">Инженердик Z формасында бүктөө</translation>
 <translation id="6000758707621254961">"<ph name="SEARCH_TEXT" />" сурамы боюнча <ph name="RESULT_COUNT" /> жыйынтык табылды</translation>
+<translation id="6008122969617370890">N–1 ирети</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Сырсөздөрүңүздү текшериңиз</translation>
 <translation id="6015796118275082299">Жыл</translation>
@@ -1063,15 +1144,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (шайкештирилген)</translation>
 <translation id="6027201098523975773">Аты-жөнүн киргизиңиз</translation>
 <translation id="603068602130820122">Оң жагын эки илмек менен бекитүү</translation>
+<translation id="6032524144326295339">2-электрондук каттар кутусу</translation>
 <translation id="6032955021262906325">Сол жагынан байлоо</translation>
 <translation id="6034000775414344507">Ачык боз</translation>
 <translation id="6034283069659657473">10x14 (Конверт)</translation>
 <translation id="6034514109191629503">Аккордион формасында бүктөө</translation>
 <translation id="6039846035001940113">Эгер маселе чечилбесе, сайттын ээсине кайрылыңыз.</translation>
 <translation id="6040143037577758943">Жабуу</translation>
+<translation id="6041777658117377052">Камеранын температурасы</translation>
 <translation id="6044573915096792553">Өлчөмү: 12</translation>
+<translation id="6045164183059402045">Вёрстканын үлгүсү</translation>
 <translation id="6047233362582046994">Эгер коопсуздугуңузга кандай коркунуч келтирилип жаткандыгын жакшы түшүнсөңүз, зыянкеч колдонмолор алынып салынаардан мурун, <ph name="BEGIN_LINK" />бул сайтка кирип көрсөңүз<ph name="END_LINK" /> болот.</translation>
 <translation id="6047927260846328439">Бул баракка кирсеңиз, зыянкеч программа орнотулуп же жеке маалыматыңыз уурдалышы мүмкүн. <ph name="BEGIN_LINK" />Баары бир уланта берем<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">Баракты жеткирүү</translation>
 <translation id="6051221802930200923">Вебсайт тастыктама бекиткичин колдонуп жаткандыктан азыр <ph name="SITE" /> сайтына өтө албайсыз. Адатта тармактагы каталар жана чабуулдар убактылуу көрүнүш болгондуктан, бул баракча кийинчерээк иштеп калышы мүмкүн.</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">Карталарыңыз бардык түзмөктөрүңүздө колдонулсунбу?</translation>
@@ -1092,6 +1177,7 @@
 <translation id="6157877588268064908">Жөнөтүү ыкмаларын жана талаптарын көрүү үчүн дарегин тандаңыз</translation>
 <translation id="6165508094623778733">Кошумча маалымат</translation>
 <translation id="6177128806592000436">Бул сайтка туташуу коопсуз эмес</translation>
+<translation id="6180316780098470077">Кайталоолордун интервалы</translation>
 <translation id="6196640612572343990">Үчүнчү жактын кукилери бөгөттөлсүн</translation>
 <translation id="6203231073485539293">Интернет туташууңузду текшериңиз</translation>
 <translation id="6218753634732582820">Дарек Chromium'дан алынып салынсынбы?</translation>
@@ -1100,6 +1186,7 @@
 <translation id="6234122620015464377">Ар бир документтен кийин кыркуу</translation>
 <translation id="6240447795304464094">Google Pay логотиби</translation>
 <translation id="6241121617266208201">Сунуштарды жашыруу</translation>
+<translation id="624499991300733384">Басып чыгарууну курамалоо кызматы</translation>
 <translation id="6251924700383757765">Купуялуулук саясаты</translation>
 <translation id="6254436959401408446">Бул баракчаны ачууга эстутум жетишсиз</translation>
 <translation id="625755898061068298">Сиз бул сайт үчүн коопсуздук эскертүүлөрү өчүрүлсүн деп тандагансыз.</translation>
@@ -1186,6 +1273,7 @@
 <translation id="6604181099783169992">Кыймыл же жарык сенсорлору</translation>
 <translation id="6609880536175561541">Prc7 (Конверт)</translation>
 <translation id="6612358246767739896">Корголгон мазмун</translation>
+<translation id="6615297766614333076">2-төшөгүч</translation>
 <translation id="6624427990725312378">Байланыш маалыматы</translation>
 <translation id="6626291197371920147">Жарактуу карточканын номерин кошуңуз</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> Издөө</translation>
@@ -1201,6 +1289,8 @@
 <translation id="6670613747977017428">Коопсуздукка кайтуу.</translation>
 <translation id="6671697161687535275">Форма сунушу Chromium'дан алынып салынсынбы?</translation>
 <translation id="6685834062052613830">Каттоо эсебинен чыгып, жөндөөнү аягына чыгарыңыз</translation>
+<translation id="6687335167692595844">Ариптин өлчөмү суралды</translation>
+<translation id="6689249931105087298">Кара чекит кысуусуна тийиштүү</translation>
 <translation id="6689271823431384964">Аккаунтуңузга кирип турганыңыздан улам, Chrome карталарыңызды Google аккаунтуңузга сактап коюуну сунуштап жатат. Бул параметрди жөндөөлөргө өтүп, өзгөртүп койсоңуз болот. Картанын ээси – аккаунттун ээси болуп эсептелет.</translation>
 <translation id="6704582573942289642">Бул сайт туурабы?</translation>
 <translation id="6710213216561001401">Мурунку</translation>
@@ -1246,6 +1336,7 @@
 <translation id="6964255747740675745">Тармак конфигурациясы талданбай калды (JSON файлы жараксыз).</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6965978654500191972">Түзмөк</translation>
+<translation id="696703987787944103">Кабыл алуучу</translation>
 <translation id="6970216967273061347">Район</translation>
 <translation id="6973656660372572881">Туруктуу прокси серверлери да, .pac скрипт URL да белгиленген.</translation>
 <translation id="6973932557599545801">Кечиресиз, мен жардам бере албайм, өзүңүз улантыңыз.</translation>
@@ -1267,6 +1358,7 @@
 <translation id="7075452647191940183">Сурамдын көлөмү өтө чоң</translation>
 <translation id="7079718277001814089">Бул сайтта кесепеттүү программа бар</translation>
 <translation id="7081308185095828845">Бул функция түзмөгүңүздө иштебейт</translation>
+<translation id="7083258188081898530">9-түпкүч</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Google'дан <ph name="LINK" /> дегенди издеңиз</translation>
 <translation id="7108338896283013870">Жашыруу</translation>
@@ -1278,6 +1370,7 @@
 <translation id="7135130955892390533">Абалын көрсөтүү</translation>
 <translation id="7138472120740807366">Жеткирүү ыкмасы</translation>
 <translation id="7139724024395191329">Эмират</translation>
+<translation id="714064300541049402">2-тараптын X сүрөтүн жылдыруу</translation>
 <translation id="7152423860607593928">Number-14 (Конверт)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> жана дагы <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ыкма}other{<ph name="PAYMENT_METHOD_PREVIEW" /> жана дагы <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ыкма}}</translation>
 <translation id="7153618581592392745">Ач сыя</translation>
@@ -1296,6 +1389,7 @@
 <translation id="721197778055552897">Бул көйгөй жөнүндө <ph name="BEGIN_LINK" />Көбүрөөк билүү<ph name="END_LINK" />.</translation>
 <translation id="7219179957768738017">Туташуу <ph name="SSL_VERSION" /> колдонот.</translation>
 <translation id="7220786058474068424">Иштелүүдө</translation>
+<translation id="7233592378249864828">Басып чыгарууну ырастоо барагы</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">Алдыдагы сайтта кесепеттүү программа камтылган</translation>
 <translation id="724975217298816891">Карточкаңыздын маалыматын жаңыртуу үчүн <ph name="CREDIT_CARD" /> мөөнөтү аяктоочу күндү жана CVC кодун киргизиңиз. Текшерилгенден кийин карточкаңыздын маалыматы бул сайтка жөнөтүлөт.</translation>
@@ -1305,6 +1399,7 @@
 <translation id="725866823122871198">Компьютериңиздин күнү жана убакыты (<ph name="DATE_AND_TIME" />) туура эмес болгондуктан <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> менен купуя туташуу мүмкүн болбой жатат.</translation>
 <translation id="7260504762447901703">Мүмкүнчүлүктү жоюу</translation>
 <translation id="7275334191706090484">Башкарылган кыстармалар</translation>
+<translation id="7292031607255951991">Алуучунун аты</translation>
 <translation id="7298195798382681320">Сунушталат</translation>
 <translation id="7300012071106347854">Кочкул көк</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1382,6 +1477,7 @@
 <translation id="7569983096843329377">Кара</translation>
 <translation id="7575207903026901870">"Сунушту өчүрүү" баскычы. Сунушту өчүрүү үчүн "Enter" баскычын басыңыз</translation>
 <translation id="7578104083680115302">Сайттарда жана колдонмолордо сатып алган нерселердин акысын Google'га сакталган карточкаларыңыз аркылуу төлөңүз. Мындай мүмкүнчүлүк бардык түзмөктөрүңүздө иштейт.</translation>
+<translation id="7581199239021537589">2-тараптын Y сүрөтүн жылдыруу</translation>
 <translation id="7592362899630581445">Сервердин тастыктамасы ысым чектөөлөрүн бузууда.</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" /> азыраак</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> учурда бул өтүнүчтү аткара албайт.</translation>
@@ -1389,10 +1485,13 @@
 <translation id="7610193165460212391">Маани <ph name="VALUE" /> аралыгынан чыгып кетти.</translation>
 <translation id="7613889955535752492">Мөөнөтү бүтөт: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">Дайындарыңызды Google Каттоо эсебиңиздин башка версиясынын сырсөзүн колдонуп шифрлеп коюптурсуз. Аны төмөнкүгө киргизиңиз.</translation>
+<translation id="7619838219691048931">Акыркы барак</translation>
+<translation id="762844065391966283">Бир-бирден</translation>
 <translation id="7633909222644580952">Майнаптуулук дайындары жана ката жөнүндө кабарлоолор</translation>
 <translation id="7637571805876720304">Насыя картасы Chromium'дан алынып салынсынбы?</translation>
 <translation id="7638605456503525968">Сериялык порттор</translation>
 <translation id="7639968568612851608">Темгил боз</translation>
+<translation id="7647206758853451655">Басып чыгаруу сапаты</translation>
 <translation id="7653957176542370971">Төлөм иштетүүчү барак жабылды</translation>
 <translation id="765676359832457558">Өркүндөтүлгөн жөндөөлөрдү жашыруу…</translation>
 <translation id="7658239707568436148">Жокко чыгаруу</translation>
@@ -1401,10 +1500,13 @@
 <translation id="7667346355482952095">Кайтарылган саясат энбелгиси бош же учурдагы энбелгиге дал келбейт</translation>
 <translation id="7668654391829183341">Белгисиз түзмөк</translation>
 <translation id="7669271284792375604">Бул сайттагы бүлдүргүчтөр сизди алдап, серептөө тажрыйбаңызга зыян келтирүүчү программаларды орнотууга аракет кылышы мүмкүн (мисалы, башкы бетиңизди өзгөртүп же кирген сайттарыңызда кошумча жарнамаларды көрсөтүү менен).</translation>
+<translation id="7673278391011283842">6-электрондук каттар кутусу</translation>
 <translation id="7676643023259824263">Алмашуу буфериндеги текстти издөө, <ph name="TEXT" /></translation>
 <translation id="7681101578153515023">Издөө каражатын өзгөртүү</translation>
 <translation id="7682287625158474539">Жөнөтүү</translation>
 <translation id="7687186412095877299">Сакталган төлөм ыкмаларыңыз менен төлөм формаларын толтурат</translation>
+<translation id="7687305263118037187">Кайталоонун күтүү мөөнөтү</translation>
+<translation id="7693583928066320343">Барактын ирети алынды</translation>
 <translation id="7697066736081121494">Prc8 (Конверт)</translation>
 <translation id="769721561045429135">Учурда карталарыңызды ушул түзмөктө гана колдонууга болот. Карталарды карап чыгуу үчүн "Улантуу" дегенди басыңыз.</translation>
 <translation id="7699293099605015246">Учурда макалалар жок</translation>
@@ -1423,7 +1525,9 @@
 <translation id="7761701407923456692">Сервердин тастыктамасы URL'ге дал келбейт.</translation>
 <translation id="7763386264682878361">Төлөм манифестин талдоочу</translation>
 <translation id="7764225426217299476">Дарек кошуу</translation>
+<translation id="7766518757692125295">Юбка</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
+<translation id="7773005668374414287">Ошол эле иретте алдыңкы бетин өйдө каратып</translation>
 <translation id="777702478322588152">Префектура</translation>
 <translation id="7791196057686275387">Таңуу</translation>
 <translation id="7791543448312431591">Кошуу</translation>
@@ -1441,9 +1545,11 @@
 <translation id="785549533363645510">Ошентсе да, сиз көрүнбөй калбайсыз. Жашыруун серептөө аракеттериңизди иш берүүчүңүздөн, интернет кызматын камсыздоочудан же каралган вебсайттардан жашыра албайсыз.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">Сайттан чыгасызбы?</translation>
+<translation id="7865448901209910068">Мыкты ылдамдык</translation>
 <translation id="7878562273885520351">Сырсөзүңүздү башка адамдар бузуп кирген окшойт</translation>
 <translation id="7882421473871500483">Күрөң</translation>
 <translation id="7887683347370398519">CVC'иңизди текшерип, кайра аракет кылыңыз</translation>
+<translation id="7888575728750733395">Басып чыгаруу аралыгы</translation>
 <translation id="7904208859782148177">C3 (Конверт)</translation>
 <translation id="7932579305932748336">Пальто</translation>
 <translation id="79338296614623784">Жарактуу телефон номерин киргизиңиз</translation>
@@ -1458,6 +1564,8 @@
 <translation id="7953569069500808819">Жогорку четин жамоо</translation>
 <translation id="7956713633345437162">Мобилдик кыстармалар</translation>
 <translation id="7961015016161918242">Эч качан</translation>
+<translation id="7966803981046576691">Тапшырманын түрү</translation>
+<translation id="7977538094055660992">Чыгаруу түзмөгү</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">Байлоо</translation>
 <translation id="7995512525968007366">Белгиленген эмес</translation>
@@ -1515,6 +1623,7 @@
 <translation id="8221250263817408492">Сырсөзүңүздү жаңы эле адаштыруучу сайтта киргиздиңиз. Chromium ушул сырсөздү колдонгон <ph name="WEBSITE_1" /> жана башка сайттарга өтүп, аны азыр өзгөртүүнү сунуштайт.</translation>
 <translation id="8225771182978767009">Бул компьютерди жөндөгөн адам ушул сайтты бөгөттөп салган.</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">Платформанын температурасы</translation>
 <translation id="8238581221633243064">Баракчаны жаңы жашыруун өтмөктө ачуу</translation>
 <translation id="8241707690549784388">Изделип жаткан бет сиз жазган маалыматты колдонгон. Ал бетке кайтып барсаңыз, жасалган аракеттердин бардыгы кайталанышы мүмкүн. Улантасызбы?</translation>
 <translation id="8241712895048303527">Бул сайтта бөгөттөлсүн</translation>
@@ -1526,6 +1635,7 @@
 <translation id="8261506727792406068">Жок кылуу</translation>
 <translation id="8262952874573525464">Төмөнкү четин жамоо</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> катары кирүүдө</translation>
+<translation id="8269242089528251720">Өзүнчө документ/Иреттелген көчүрмөлөр</translation>
 <translation id="8269981117540303696">Жашыруун режимдеги аракеттериңиз ушул түзмөктүн башка колдонуучуларына көрүнбөйт. Бирок жүктөп алынган файлдар жана кыстармалар сакталып кала берет.</translation>
 <translation id="8277900682056760511">Төлөм иштетүүчү барак ачылды</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1539,6 +1649,7 @@
 <translation id="8307358339886459768">Small-Photo</translation>
 <translation id="8308427013383895095">Тармактык туташууда көйгөй келип чыккандыктан которулбай калды.</translation>
 <translation id="831207732689920588">Бул шектүү баракча (Chrome белгиледи).</translation>
+<translation id="831997045666694187">Кече</translation>
 <translation id="8332188693563227489"><ph name="HOST_NAME" /> сайтына кирүү мүмкүнчүлүгү четке кагылды</translation>
 <translation id="833262891116910667">Бөлүп көрсөтүү</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1561,12 +1672,14 @@
 <translation id="8428213095426709021">Жөндөөлөр</translation>
 <translation id="8433057134996913067">Ушуну менен көпчүлүк вебсайттардын каттоо эсебинен чыгарыласыз.</translation>
 <translation id="8437238597147034694">Жылдырууну &amp;жасабоо</translation>
+<translation id="8457125768502047971">Белгисиз</translation>
 <translation id="8461694314515752532">Шайкештирилген дайындарды өзүңүздүн шайкештирүүчү купуя сөз айкашыңыз менен шифрлеңиз</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 насыя карта}other{# насыя карта}}</translation>
 <translation id="8473863474539038330">Даректер жана башкалар</translation>
 <translation id="8479754468255770962">Төмөнкү сол жагын илмек менен бекитүү</translation>
 <translation id="8483780878231876732">Google аккаунтуңуздагы насыя карточкаларын колдонуу үчүн Chrome'го кириңиз</translation>
 <translation id="8488350697529856933">Төмөнкүгө колдонулат</translation>
+<translation id="8490137692873530638">10-төшөгүч</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> өтө узактан кийин жооп берди.</translation>
 <translation id="8503559462189395349">Chrome сырсөздөрү</translation>
 <translation id="8503813439785031346">Колдонуучунун ысымы</translation>
@@ -1577,10 +1690,12 @@
 <translation id="8553075262323480129">Баракчанын тили аныкталбагандыктан, которулбай калды.</translation>
 <translation id="8557066899867184262">CVC карточкаңыздын артында жайгашкан.</translation>
 <translation id="8559762987265718583">Түзмөгүңүздүн күнү жана убакыты (<ph name="DATE_AND_TIME" />) туура эмес болгондуктан, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> менен купуя туташуу мүмкүн болбой жатат.</translation>
+<translation id="8564182942834072828">Өзүнчө документ/Иреттелбеген көчүрмөлөр</translation>
 <translation id="8564985650692024650"><ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> сырсөзүңүздү башка сайттарда колдонгон болсоңуз, Chromium аны өзгөртүүнү сунуштайт.</translation>
 <translation id="8571890674111243710">Бет <ph name="LANGUAGE" /> тилине которулууда…</translation>
 <translation id="8574899947864779331">Карталарды тезирээк ырастоо үчүн Touch ID функциясын колдонуу</translation>
 <translation id="858637041960032120">Телефон номерин кошуу</translation>
+<translation id="8589998999637048520">Мыкты сапат</translation>
 <translation id="860043288473659153">Карта ээсинин аты</translation>
 <translation id="8616822740383114808">Бул жөндөө "<ph name="SETTINGS_PAGE" />" барагында "<ph name="ENFORCING_SETTING" />" тарабынан коюлду</translation>
 <translation id="861775596732816396">Өлчөмү: 4</translation>
@@ -1588,10 +1703,13 @@
 <translation id="8625384913736129811">Бул карточка ушул түзмөктө сакталсын</translation>
 <translation id="8647750283161643317">Баарын демейкиге кайтаруу</translation>
 <translation id="8663226718884576429">Буйрутма тууралуу маалымат, <ph name="TOTAL_LABEL" />, Толук маалымат</translation>
+<translation id="867224526087042813">Колтамга</translation>
+<translation id="8676424191133491403">Дароо</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, жооп, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054"><ph name="PAGE" /> дарегиндеги веб-баракча жүктөлбөй койду, анткени:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">Бош</translation>
+<translation id="868922510921656628">Бир топтомдогу барактар</translation>
 <translation id="869891660844655955">Мөөнөтү аяктай турган күн</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" /> менен туташуу аракетиңиз шифрленген эмес.</translation>
 <translation id="8718314106902482036">Төлөм аягына чыккан жок</translation>
@@ -1623,8 +1741,10 @@
 <translation id="8866928039507595380">Бүктөө</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">Жакында жабылган</translation>
+<translation id="8870494189203302833">Ошол эле иретте алдыңкы бетин ылдый каратып</translation>
 <translation id="8874824191258364635">Жарактуу карточканын номерин киргизиңиз</translation>
 <translation id="8891727572606052622">Жараксыз прокси режими.</translation>
+<translation id="8894794286471754040">Биринчи узундугу боюнча</translation>
 <translation id="8903921497873541725">Чоңойтуу</translation>
 <translation id="890485472659500557">Engineering-C</translation>
 <translation id="890493561996401738">"Сунушту өчүрүү" баскычы. Өчүрүү үчүн "Enter" баскычын басыңыз, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1673,6 +1793,7 @@
 <translation id="9080712759204168376">Буйрутма тууралуу маалымат</translation>
 <translation id="9089260154716455634">Саясат иштебей турган убакыт:</translation>
 <translation id="9095388113577226029">Дагы тилдер...</translation>
+<translation id="9101630580131696064">1-түпкүч</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> сайты маалыматыңызды коргоо үчүн адатта шифрлөөнү колдонот. Chromium бул жолу <ph name="SITE" /> сайтына туташууга аракет кылганда, вебсайт адаттан тышкары жана туура эмес эсептик дайындарды жөнөттү. Бул чабуулчу өзүн <ph name="SITE" /> катары көрсөткөнгө аракет кылып жатканда же Wi-Fi'дын кирүү экраны туташууну үзгүлтүккө учуратканда орун алышы мүмкүн. Chromium дайындар алмашылганга чейин туташууну үзүп койгондуктан, маалыматыңыздын коопсуздугу бузулган жок.</translation>
 <translation id="9106062320799175032">Төлөмдүн дарегин кошуу</translation>
 <translation id="9114524666733003316">Карта текшерилүүдө…</translation>
@@ -1688,6 +1809,7 @@
 <translation id="9169664750068251925">Бул сайтта ар дайым бөгөттөлсүн</translation>
 <translation id="9170848237812810038">&amp;Кайтаруу</translation>
 <translation id="9171296965991013597">Колдонмодон чыгасызбы?</translation>
+<translation id="9173282814238175921">Жалгыз документ/Жаңы барак</translation>
 <translation id="917450738466192189">Сервер тастыктамасы жараксыз.</translation>
 <translation id="9174917557437862841">"Өтмөктү которуштургуч" баскычы. Бул өтмөккө которулуу үчүн, "Enter" баскычын басыңыз.</translation>
 <translation id="9183302530794969518">Google Docs</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index 64df78b..fea3a1b 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -258,7 +258,7 @@
 <translation id="2096368010154057602">വകുപ്പ്</translation>
 <translation id="2099652385553570808">ഇടതുവശത്ത് മൂന്ന് തവണ സ്‌റ്റേപ്പിൾ ചെയ്യുക</translation>
 <translation id="2102134110707549001">ശക്തമായ പാസ്‌വേഡ് നിർദ്ദേശിക്കുക…</translation>
-<translation id="2107021941795971877">പ്രിന്റ് പിന്തുണ</translation>
+<translation id="2107021941795971877">പ്രിന്റ് സപ്പോർട്ടുകൾ</translation>
 <translation id="2108755909498034140">നിങ്ങളുടെ കമ്പ്യൂട്ടർ റീസ്‌റ്റാർട്ട് ചെയ്യുക</translation>
 <translation id="2111256659903765347">സൂപ്പർ-A</translation>
 <translation id="2113977810652731515">കാർഡ്</translation>
@@ -415,7 +415,7 @@
 <translation id="2799020568854403057">നിങ്ങൾ പോകുന്ന സൈറ്റിൽ ദോഷകരമായ ആപ്പുകളുണ്ട്</translation>
 <translation id="2799223571221894425">വീണ്ടും സമാരംഭിക്കുക</translation>
 <translation id="2803306138276472711"><ph name="SITE" /> എന്നതിൽ Google സുരക്ഷിത ബ്രൗസിംഗ് ഈയിടെ <ph name="BEGIN_LINK" />മാൽവെയർ കണ്ടെത്തി<ph name="END_LINK" />. സാധാരണ നിലയിൽ സുരക്ഷിതമായ വെബ്സൈറ്റുകളിൽ ചിലപ്പോൾ മാൽവെയർ ഉണ്ടായേക്കാം.</translation>
-<translation id="2807052079800581569">Y ചിത്രത്തിന്റെ സ്ഥാനം</translation>
+<translation id="2807052079800581569">ചിത്രം Y സ്ഥാനം</translation>
 <translation id="2809804249696361569">രണ്ട് ഷീറ്റും</translation>
 <translation id="2824775600643448204">വിലാസവും തിരയൽ ബാറും</translation>
 <translation id="2826760142808435982"><ph name="CIPHER" /> ഉപയോഗിച്ച് കണക്ഷൻ എൻക്രിപ്‌റ്റുചെയ്‌ത് പ്രാമാണീകരിക്കുന്നു, ഒപ്പം പ്രധാന എക്‌സേഞ്ച് മെക്കാനിസമായി <ph name="KX" /> ഉപയോഗിക്കുന്നു.</translation>
@@ -476,7 +476,7 @@
 <translation id="3096100844101284527">പിക്കപ്പ് വിലാസം ചേർക്കുക</translation>
 <translation id="3105172416063519923">അസറ്റ് ഐഡി:</translation>
 <translation id="3109728660330352905">നിങ്ങൾക്ക് ഈ പേജ് കാണാനുള്ള അംഗീകാരമില്ല.</translation>
-<translation id="3113284927548439113">മൂന്നാമത്തെ ഷീറ്റ്</translation>
+<translation id="3113284927548439113">മൂന്നാമത്തെ ഷിഫ്റ്റ്</translation>
 <translation id="3116158981186517402">ലാമിനേറ്റ് ചെയ്യൂ</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />കണക്‌റ്റിവിറ്റി ഡയഗണോസ്‌റ്റിക്‌സ് റൺ ചെയ്‌തുനോക്കൂ<ph name="END_LINK" />.</translation>
@@ -545,7 +545,7 @@
 <translation id="3447661539832366887">ഈ ഉപകരണത്തിന്റെ ഉടമ ദിനോസർ ഗെയിം ഓഫാക്കി.</translation>
 <translation id="3447884698081792621">സർട്ടിഫിക്കറ്റ് (<ph name="ISSUER" /> ഇഷ്യൂ ചെയ്‌തത്) കാണിക്കുക</translation>
 <translation id="3452404311384756672">ഇടവേള ലഭ്യമാക്കുക:</translation>
-<translation id="3453962258458347894">വീണ്ടും ശ്രമിച്ചതിന്റെ എണ്ണം</translation>
+<translation id="3453962258458347894">ശ്രമങ്ങളുടെ എണ്ണം</translation>
 <translation id="3456231139987291353">നമ്പർ-11 (എന്‍‌വലപ്പ്)</translation>
 <translation id="3461824795358126837">ഹൈലൈറ്റർ</translation>
 <translation id="3462200631372590220">വിപുലമായവ മറയ്ക്കുക</translation>
@@ -1161,7 +1161,7 @@
 <translation id="6157877588268064908">ഷിപ്പിംഗ് രീതികളും ആവശ്യകതകളും കാണാൻ ഒരു വിലാസം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="6165508094623778733">കൂടുതലറിയുക</translation>
 <translation id="6177128806592000436">ഈ സൈറ്റിലേക്കുള്ള നിങ്ങളുടെ കണക്ഷൻ സുരക്ഷിതമല്ല</translation>
-<translation id="6180316780098470077">വീണ്ടും ശ്രമിച്ചതിന്റെ ഇടവേള</translation>
+<translation id="6180316780098470077">വീണ്ടും ശ്രമിക്കുന്നതിനുള്ള ഇടവേള</translation>
 <translation id="6196640612572343990">മൂന്നാം കക്ഷി കുക്കികള്‍ ബ്ലോക്കുചെയ്യുക</translation>
 <translation id="6203231073485539293">നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക</translation>
 <translation id="6218753634732582820">Chromium-ത്തിൽ നിന്ന് വിലാസം നീക്കംചെയ്യണോ?</translation>
@@ -1274,7 +1274,7 @@
 <translation id="6671697161687535275">Chromium-ത്തിൽ നിന്ന് ഫോം നിർദ്ദേശം നീക്കംചെയ്യണോ?</translation>
 <translation id="6685834062052613830">സൈൻ ഔട്ട് ചെയ്‌ത്, സജ്ജമാക്കൽ പൂർത്തിയാക്കുക</translation>
 <translation id="6687335167692595844">അഭ്യർത്ഥിച്ച ഫോണ്ട് വലുപ്പം</translation>
-<translation id="6689249931105087298">ബ്ലാക്ക് പോയിന്റ് കംപ്രഷന് അനുസരിച്ച്</translation>
+<translation id="6689249931105087298">ബ്ലാക്ക് പോയിന്റ് കംപ്രഷനോട് കൂടിയ റിലേറ്റീവ്</translation>
 <translation id="6689271823431384964">നിങ്ങൾ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നതിനാലാണ് നിങ്ങളുടെ Google അക്കൗണ്ടിൽ കാർഡുകൾ സംരക്ഷിക്കാമെന്ന് Chrome വാഗ്‌ദാനം ചെയ്യുന്നത്. ക്രമീകരണത്തിൽ ഈ രീതി മാറ്റാനാകും. കാർഡുടമയുടെ പേര് നിങ്ങളുടെ അക്കൗണ്ടിൽ നിന്നുമാണ് വന്നത്.</translation>
 <translation id="6704582573942289642">ഇത് ശരിയായ സൈറ്റാണോ?</translation>
 <translation id="6710213216561001401">മുമ്പത്തേത്</translation>
@@ -1617,7 +1617,7 @@
 <translation id="8261506727792406068">ഇല്ലാതാക്കുക</translation>
 <translation id="8262952874573525464">താഴെ അരിക് കൂട്ടിച്ചേർക്കൽ</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> എന്നയാളായി സൈൻ ഇൻ ചെയ്യുന്നു</translation>
-<translation id="8269242089528251720">പ്രത്യേക ഡോക്യുമെന്റുകൾ/ക്രമത്തിലുള്ള പകർപ്പുകൾ</translation>
+<translation id="8269242089528251720">വെവ്വേറെ ഡോക്യുമെന്റുകൾ/ക്രമത്തിലുള്ള പകർപ്പുകൾ</translation>
 <translation id="8269981117540303696">നിങ്ങൾക്ക് ഇപ്പോൾ സ്വകാര്യമായി ബ്രൗസ് ചെയ്യാം, ഈ ഉപകരണം ഉപയോഗിക്കുന്ന മറ്റ് ആളുകൾ നിങ്ങളുടെ പ്രവൃത്തി കാണില്ല. എന്നിരുന്നാലും, ഡൗൺലോഡുകളും ബുക്ക്‌മാർക്കുകളും സംരക്ഷിക്കപ്പെടും.</translation>
 <translation id="8277900682056760511">പേയ്മെന്റ് കൈകാര്യം ചെയ്യുന്ന ഷീറ്റ് തുറന്നിരിക്കുന്നു</translation>
 <translation id="8281084378435768645">വലിയ-ഫോട്ടോ</translation>
@@ -1672,7 +1672,7 @@
 <translation id="8553075262323480129">പേജിന്‍റെ ഭാഷ നിര്‍‌ണ്ണയിക്കാന്‍‌ കഴിയാത്തതിനാല്‍‌ വിവര്‍‌ത്തനം പരാജയപ്പെട്ടു.</translation>
 <translation id="8557066899867184262">കാർഡിന് പിന്നിലാണ് CVC രേഖപ്പെടുത്തിയിരിക്കുന്നത്.</translation>
 <translation id="8559762987265718583">നിങ്ങളുടെ ഉപകരണത്തിന്റെ തീയതിയും സമയവും (<ph name="DATE_AND_TIME" />) തെറ്റായതിനാൽ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> എന്നതിലേക്കുള്ള സ്വകാര്യ കണക്ഷൻ സ്ഥാപിക്കാനാവില്ല.</translation>
-<translation id="8564182942834072828">പ്രത്യേക ഡോക്യുമെന്റുകൾ/ക്രമത്തിലല്ലാത്ത പകർപ്പുകൾ</translation>
+<translation id="8564182942834072828">വെവ്വേറെ ഡോക്യുമെന്റുകൾ/ക്രമത്തിലല്ലാത്ത പകർപ്പുകൾ</translation>
 <translation id="8564985650692024650">മറ്റ് സൈറ്റുകളിൽ നിങ്ങൾ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> പാസ്‌വേഡ് പുനരുപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ, അത് റീസെറ്റ് ചെയ്യാൻ Chromium ശുപാർ‌ശ ചെയ്യുന്നു.</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" /> ലേക്ക് പേജ് വിവര്‍‌ത്തനം ചെയ്യുന്നു...</translation>
 <translation id="8574899947864779331">കാർഡുകൾ വേഗത്തിൽ സ്ഥിരീകരിക്കാൻ ടച്ച് ഐഡി ഉപയോഗിക്കുക</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index ebe646c..9d7d3f3 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">सध्या नाही</translation>
 <translation id="1010200102790553230">पेज नंतर लोड करा</translation>
 <translation id="1015730422737071372">अतिरिक्त तपशील प्रदान करा</translation>
+<translation id="1019413721762100891">बंद करा</translation>
 <translation id="1021110881106174305">स्वीकारलेली कार्ड</translation>
 <translation id="1021753677514347426">तुम्ही किंवा इतर कोणीतरी तुमच्या डिव्हाइसवर इंस्टॉल केलेल्या सर्टिफिकेटमुळे ही समस्या येते. हे सर्टिफिकेट नेटवर्कचे नियंत्रण करण्यासाठी आणि व्यत्यय आणण्यासाठी वापरले जाते आणि Chromium ला यावर विश्वास नाही. दरम्यान नियंत्रण करण्यासाठी काही कायदेशीर प्रकरणे अस्तित्त्वात आहेत, जसे की शाळा किंवा कंपनीच्या नेटवर्कवर, तुम्ही हे थांबवू शकत नसलात तरीही तुम्हाला याची जाणीव आहे याची Chromium ला खात्री करायची आहे. वेबचा ॲक्सेस असणाऱ्या कोणत्याही ब्राउझर किंवा ॲप्लिकेशनचे नियंत्रण केले जाऊ शकते.</translation>
 <translation id="1032854598605920125">घड्याळाच्या दिशेने फिरवा</translation>
 <translation id="1036348656032585052">बंद करा</translation>
 <translation id="1038842779957582377">अज्ञात नाव</translation>
+<translation id="1041998700806130099">जॉब पत्रकाचा मेसेज</translation>
 <translation id="1050038467049342496">अन्य ॲप्स बंद करा</translation>
 <translation id="1055184225775184556">&amp;जोडा पूर्ववत करा</translation>
 <translation id="1056898198331236512">चेतावणी</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">कधीही सेव्ह न केलेले</translation>
 <translation id="1062160989074299343">Prc10 (Envelope)Prc10 (Envelope)</translation>
 <translation id="106701514854093668">डेस्‍कटॉप बुकमार्क</translation>
+<translation id="1070901266639972381">रात्रीपर्यंत</translation>
 <translation id="1074497978438210769">सुरक्षित नाही</translation>
 <translation id="1080116354587839789">रूंदीत फिट करा</translation>
 <translation id="1086953900555227778">Index-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">पासवर्ड बदला</translation>
 <translation id="1096545575934602868">या भागात <ph name="MAX_ITEMS_LIMIT" /> पेक्षा जास्त नोंदी असू शकत नाहीत. उरलेल्या सर्व नोंदी काढून टाकल्या जातील.</translation>
 <translation id="109743633954054152">Chrome सेटिंग्जमध्ये पासवर्ड व्यवस्थापित करा</translation>
+<translation id="1101672080107056897">कृतीमध्ये एरर</translation>
 <translation id="1103523840287552314">नेहमी भाषांतर करा <ph name="LANGUAGE" /></translation>
 <translation id="1107591249535594099">चेक केल्यास, अधिक जलद फॉर्म भरण्यासाठी या डिव्हाइसवर Chrome तुमच्या कार्डची एक प्रत संचयित करेल.</translation>
 <translation id="1110994991967754504"><ph name="PERMISSION_NAME" /> ची परवानगी निवडा</translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">वाचन सूची</translation>
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> वाजता क्रॅश अहवाल कॅप्चर केला (अद्याप अपलोड केलेला नाही किंवा दुर्लक्ष केले)</translation>
 <translation id="1270502636509132238">घेण्याची पद्धत</translation>
+<translation id="1281476433249504884">स्टॅकर १</translation>
 <translation id="1285320974508926690">या साइटचा कधीही भाषांतर करु नका</translation>
 <translation id="1285400217480592994">तुम्ही Chrome मध्ये डाउनलोड किंवा अपलोड करता त्या फाइलचे आशय स्कॅन करा</translation>
 <translation id="1292701964462482250">"तुमच्या कॉंप्युटरवरील सॉफ्टवेअर Chrome ला सुरक्षितपणे वेबशी कनेक्ट होण्यापासून थांबवत आहे" (फक्‍त Windows कॉंप्युटरचा)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">ट्रिपल स्टेपल टॉप</translation>
 <translation id="1413809658975081374">गोपनीयता एरर</translation>
 <translation id="1426410128494586442">होय</translation>
+<translation id="1428146450423315676">स्टॅकर ७</translation>
 <translation id="1430915738399379752">प्रिंट</translation>
 <translation id="1442386063175183758">राइट गेट फोल्ड</translation>
 <translation id="1442987760062738829">पंच</translation>
@@ -130,6 +136,7 @@
 <translation id="1521655867290435174">Google पत्रक</translation>
 <translation id="1527263332363067270">कनेक्शनची वाट पाहत आहे...</translation>
 <translation id="1529521330346880926">10x15 (Envelope)10x15 (Envelope)</translation>
+<translation id="1529789484829130889">ट्रे ८</translation>
 <translation id="1530707389502320859">तुम्ही नुकतेच भेट देण्याचा प्रयत्न करत असलेली साइट बनावट असल्याची दिसते. आक्रमणकर्ते काहीवेळा URL मध्ये छोटे व पाहण्यासाठी कठीण असलेले बदल करून बनावट साइट बनवतात.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">या पेजचे म्हणणे हे आहे की</translation>
@@ -156,6 +163,7 @@
 <translation id="1639239467298939599">लोड करीत आहे</translation>
 <translation id="1640180200866533862">वापरकर्ता धोरणे</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />साइटच्या होमवर भेट देऊन<ph name="END_LINK" /> पहा.</translation>
+<translation id="1641976391427233992">या कालावधीपर्यंत आउटपुटला विलंब करा</translation>
 <translation id="1644574205037202324">इतिहास</translation>
 <translation id="1645368109819982629">असमर्थित प्रोटोकॉल</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -164,12 +172,15 @@
 <translation id="1663943134801823270">कार्ड आणि पत्ते Chrome कडील आहेत. तुम्ही त्यांना <ph name="BEGIN_LINK" />सेटिंग्‍ज<ph name="END_LINK" /> मधून व्यवस्थापित करू शकता.</translation>
 <translation id="1671391448414634642">आतापासून <ph name="SOURCE_LANGUAGE" />मधील पेज <ph name="TARGET_LANGUAGE" />मध्ये भाषांतरित केली जातील.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> तुमची माहिती संरक्षित करण्यासाठी सामान्यतः एंक्रिप्शन वापरते. Google Chrome ने यावेळी <ph name="SITE" /> शी कनेक्‍ट करण्‍याचा प्रयत्न केला तेव्‍हा, वेबसाइटने असामान्य आणि अयोग्य क्रेडेंशियल परत पाठवले. एकतर आक्रमणकर्ता <ph name="SITE" /> असल्याची बतावणी करण्याचा प्रयत्न करतो तेव्‍हा किंवा वाय-फाय साइन इन स्क्रीनने कनेक्शनमध्ये व्यत्यय आणले तेव्‍हा हे घडू शकते. कोणत्याही डेटाची अदलाबदल करण्यापूर्वी Google Chrome ने कनेक्शन थांबविल्यामुळे तुमची माहिती अद्याप सुरक्षित आहे.</translation>
+<translation id="1682696192498422849">शॉर्ट एज प्रथम</translation>
 <translation id="168841957122794586">सर्व्हर सर्टिफिकेटमध्ये एक कमकुवत क्रिप्टोग्राफिक की आहे.</translation>
 <translation id="1697532407822776718">तुम्ही पूर्णपणे तयार आहात!</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट उद्यापासून मानले जाईल. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.}other{हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट पुढील # दिवसांपासून मानले जाईल. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1713628304598226412">ट्रे २</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">मेलबॉक्स ३</translation>
 <translation id="1718029547804390981">भाष्य करण्यासाठी दस्तऐवज खूपच मोठे आहे</translation>
 <translation id="1721424275792716183">* फील्ड आवश्यक आहे</translation>
 <translation id="1727741090716970331">वैध कार्ड नंबर जोडा</translation>
@@ -183,7 +194,9 @@
 <translation id="1743520634839655729">पुढील वेळेस जलद पेमेंट करण्यासाठी, तुमच्या Google खात्यावर आणि या डिव्हाइसवर तुमचे कार्ड आणि बिलिंग पत्ता सेव्ह करा.</translation>
 <translation id="1743570585616704562">ओळखले नाही</translation>
 <translation id="1745880797583122200">तुमचा ब्राउझर व्यवस्थापित केला आहे</translation>
+<translation id="1746113442205726301">इमेज Y शिफ्ट</translation>
 <translation id="17513872634828108">खुले टॅब</translation>
+<translation id="1752021286346845558">मेलबॉक्स ८</translation>
 <translation id="1753706481035618306">पृष्ठ क्रमांक</translation>
 <translation id="1763864636252898013">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता सर्टिफिकेट तुम्हाला डिव्हाइसच्या ऑपरेटिंग सिस्टमद्वारे विश्वसनीय नाही. हे कदाचित एका चुकीच्या कॉन्फिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Windows नेटवर्क निदान चालवून पहा<ph name="END_LINK" />.</translation>
@@ -193,6 +206,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">कार्डधारकाचे नाव</translation>
+<translation id="1807528111851433570">पत्रक सुरू करा</translation>
 <translation id="1821930232296380041">अवैध विनंती किंवा विनंती मापदंड</translation>
 <translation id="1822540298136254167">तुम्ही भेट देत असलेल्या वेबसाइट आणि त्यावर व्यतीत केलेला वेळ</translation>
 <translation id="1826516787628120939">तपासत आहे</translation>
@@ -221,6 +235,7 @@
 <translation id="1973335181906896915">क्रमीकरण एरर</translation>
 <translation id="1974060860693918893">प्रगत</translation>
 <translation id="1974883374937189061"><ph name="BEGIN_WHITEPAPER_LINK" />तुम्ही भेट देता त्या काही पेजच्या URL, मर्यादित सिस्टम माहिती आणि काही पेज आशय<ph name="END_WHITEPAPER_LINK" />Google कडे पाठवून Chrome सुरक्षेमध्ये सुधारणा करण्यासाठी मदत करा. <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">मेलबॉक्स १०</translation>
 <translation id="1978555033938440688">फर्मवेयर आवृत्ती</translation>
 <translation id="1981206234434200693">Chrome चा ब्राउझिंग इतिहास डेटा साफ करा</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -230,6 +245,7 @@
 <translation id="2025186561304664664">प्रॉक्सी स्वयंचलित ‍कॉन्फिगरेशनवर सेट करण्‍यात आली.</translation>
 <translation id="2030481566774242610">तुम्हाला असे म्हणायचे होते <ph name="LINK" />?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />प्रॉक्सी आणि फायरवॉल तपासणे<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">ट्रे ७</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" />मधील पेज भाषांतरीत केले जाणार नाहीत.</translation>
 <translation id="2053553514270667976">पिनकोड</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 सूचना}other{# सूचना}}</translation>
@@ -242,6 +258,7 @@
 <translation id="2096368010154057602">विभाग</translation>
 <translation id="2099652385553570808">ट्रिपल स्टेपल लेफ्ट</translation>
 <translation id="2102134110707549001">क्लिष्ट पासवर्ड सुचवा…</translation>
+<translation id="2107021941795971877">प्रिंट सपोर्ट</translation>
 <translation id="2108755909498034140">तुमचा कॉंप्युटर रीस्टार्ट करा</translation>
 <translation id="2111256659903765347">Super-A</translation>
 <translation id="2113977810652731515">कार्ड</translation>
@@ -266,6 +283,7 @@
 <translation id="2187317261103489799">शोधा (डीफॉल्ट)</translation>
 <translation id="2188375229972301266">मल्टिपल पंच बॉटम</translation>
 <translation id="2202020181578195191">वैध समाप्ती वर्ष एंटर करा</translation>
+<translation id="22081806969704220">ट्रे ३</translation>
 <translation id="2212735316055980242">धोरण आढळले नाही</translation>
 <translation id="2213606439339815911">एंट्री आणत आहे...</translation>
 <translation id="2215727959747642672">फाइलचे संपादन</translation>
@@ -283,6 +301,7 @@
 <translation id="2263079731045660823">Chrome सेटिंग्जमध्ये क्रेडिट कार्ड ऑटोफिल माहिती अपडेट करा</translation>
 <translation id="2267047181501709434">तुमची ओळख पडताळत आहे...</translation>
 <translation id="2270484714375784793">फोन नंबर</translation>
+<translation id="2276057643614339130">प्रिंट बेस</translation>
 <translation id="2277103315734023688">पुढे जा</translation>
 <translation id="2283340219607151381">पत्ते भरा आणि सेव्ह करा</translation>
 <translation id="2288422996159078444">तुम्ही टाइप करत असलेले काहीही, तुम्ही पाहत असलेली कोणतीही पेज किंवा वेबवरील इतर कोणत्याही अ‍ॅक्टिव्हिटीवर नजर ठेवली जाते. साइटवरचा आशय कदाचित तुमच्या नकळत बदलला जाऊ शकतो.</translation>
@@ -322,6 +341,7 @@
 <translation id="2465655957518002998">वितरणाची पद्धत निवडा</translation>
 <translation id="2465688316154986572">स्टेपल</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />नेटवर्क निदान चालविणे<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">१ ते एन क्रम</translation>
 <translation id="2473195200299095979">या पृष्ठाचे भाषांतर करा</translation>
 <translation id="2479410451996844060">चुकीचे शोध URL.</translation>
 <translation id="2482878487686419369">सूचना</translation>
@@ -340,6 +360,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{आणि आणखी एक}other{आणि आणखी #}}</translation>
 <translation id="2536110899380797252">पत्ता जोडा</translation>
 <translation id="2539524384386349900">शोधा</translation>
+<translation id="2544644783021658368">एक दस्तऐवज</translation>
 <translation id="254947805923345898">धोरण मूल्य वैध नाही.</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> नी एक चुकीचे प्रतिसाद पाठविला.</translation>
 <translation id="2556876185419854533">&amp; संपादित करा पूर्ववत करा</translation>
@@ -374,8 +395,10 @@
 <translation id="2676271551327853224">Roc-8K</translation>
 <translation id="2677748264148917807">सोडा</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">सर्वोत्तम फिट</translation>
 <translation id="2691924980723297736">सुरक्षा चेतावणी</translation>
 <translation id="2699302886720511147">स्वीकारली जाणारी कार्डे</translation>
+<translation id="2701514975700770343">फेस डाउन</translation>
 <translation id="2702801445560668637">वाचन सूची</translation>
 <translation id="2704283930420550640">मूल्य स्वरुपनाशी जुळत नाही.</translation>
 <translation id="2705137772291741111">या साइटची सेव्ह (कॅश   केलेली) केलेली प्रत वाचण्याजोगी नव्हती.</translation>
@@ -395,12 +418,15 @@
 <translation id="2742870351467570537">निवडलेले आयटम काढून टाका</translation>
 <translation id="277133753123645258">शिपिंग पद्धत</translation>
 <translation id="277499241957683684">डिव्हाइस रेकॉर्ड गहाळ</translation>
+<translation id="2775884851269838147">प्रिंट केलेले पहिले पेज</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">कनेक्शन रीसेट केले.</translation>
 <translation id="2792012897584536778">या डिव्हाइसच्या अ‍ॅडमिनिस्ट्रेटरने सुरक्षा सर्टिफिकेट सेट केले आहे जे त्यांना तुम्ही भेट देत असलेल्या वेबसाइटचा आशय पाहण्याची परवानगी देऊ शकतात.</translation>
 <translation id="2799020568854403057">पुढील साइटमध्ये हानिकारक ॲप आहे</translation>
 <translation id="2799223571221894425">पुन्हा लाँच करा</translation>
 <translation id="2803306138276472711">Google सुरक्षित ब्राउझिंगला अलीकडे <ph name="SITE" /> वर <ph name="BEGIN_LINK" />मालवेअर आढळले आहे<ph name="END_LINK" />. सामान्यतः सुरक्षित असलेल्या वेबसाइट काहीवेळा मालवेअरमुळे संक्रमित झालेल्या असतात.</translation>
+<translation id="2807052079800581569">इमेज Y स्थिती</translation>
+<translation id="2809804249696361569">दोन्ही पत्रक</translation>
 <translation id="2824775600643448204">पत्ता आणि शोध बार</translation>
 <translation id="2826760142808435982">कनेक्शन <ph name="CIPHER" /> वापरून आणि महत्त्वाचे एक्स्चेंज तंत्र म्हणून <ph name="KX" /> वापर एंक्रिप्ट आणि ऑथेंटिकेट केले आहे.</translation>
 <translation id="2835170189407361413">फॉर्म क्लिअर करा</translation>
@@ -415,6 +441,7 @@
 <translation id="290376772003165898">पेज <ph name="LANGUAGE" />मध्ये नाही?</translation>
 <translation id="2909946352844186028">एक नेटवर्क बदल आढळला.</translation>
 <translation id="2910133103376701357">तुमचे डिव्हाइस आणि खाते <ph name="ENROLLMENT_DOMAIN" /> कडून व्यवस्थापित केले जाते.</translation>
+<translation id="2911973620368911614">जॉब लेखांकन वापरकर्ता आयडी</translation>
 <translation id="2916038427272391327">अन्य प्रोग्राम बंद करा</translation>
 <translation id="2922350208395188000">सर्व्हरचे सर्टिफिकेट तपासणे शक्य नाही.</translation>
 <translation id="2925673989565098301">वितरण पद्धत</translation>
@@ -424,6 +451,7 @@
 <translation id="2934466151127459956">Government-Letter</translation>
 <translation id="2941952326391522266">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता सर्टिफिकेट <ph name="DOMAIN2" /> वरील आहे. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.</translation>
 <translation id="2948083400971632585">तुम्हे सेटिंग्ज पेजवरून एका कनेक्शनसाठी कॉन्फिगर केलेले कोणत्याही प्रॉक्सी अक्षम करू शकता.</translation>
+<translation id="2951588413176968965">माझे मेलबॉक्स</translation>
 <translation id="295526156371527179">चेतावणी: धोरणामध्ये नमूद केल्याप्रमाणे हे धोरण शब्दकोश म्हणून विलीन केले नाही कारण तो एखादा शब्दकोश नाही.</translation>
 <translation id="2955913368246107853">शोध बार बंद करा</translation>
 <translation id="2969319727213777354">एक सुरक्षित कनेक्‍शन स्‍थापित करण्‍यापूर्वी, तुमचे घड्‍याळ योग्यरित्या सेट केले असणे आवश्यक आहे. वेबसाइट त्यांना स्‍वत:ला ओळखण्‍यासाठी वापरलेली ती सर्टिफिकेटे केवळ नमूद केलेल्‍या कालावधीसाठी वैध असल्याने हे असू शकते. तुमच्या डिव्‍हाइसचे घड्‍याळ चुकीचे असल्‍यामुळे, Google Chrome ला सर्टिफिकेट पडताळणी करता आली नाही.</translation>
@@ -438,6 +466,7 @@
 <translation id="2991174974383378012">वेबसाइटसह शेअर करीत आहे</translation>
 <translation id="2991571918955627853">ही वेबसाइट HSTS वापरत असल्यामुळे तुम्ही <ph name="SITE" /> आत्ता पाहू शकत नाही. नेटवर्क एरर आणि आक्रमण शक्यतो तात्पुरती असतात, त्यामुळे हे पेज नंतर पाहता येईल.</translation>
 <translation id="2996674880327704673">Google च्या सूचना</translation>
+<translation id="3002501248619246229">इनपुट ट्रे मीडिया तपासा</translation>
 <translation id="3005723025932146533">सेव्ह केलेली प्रत दर्शवा</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> साठी CVC प्रविष्‍ट करा. तुम्ही पुष्टी केल्यावर, तुमचे कार्ड तपशील या साइटसह शेअर केले जातील.</translation>
 <translation id="3010559122411665027">सूची प्रविष्टी "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -450,12 +479,14 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">पॅच सेवा</translation>
 <translation id="3064966200440839136">बाह्य ॲप्लिकेशन द्वारे पेमेंट देण्यासाठी गुप्त मोड सोडत आहे. सुरु ठेवायचे?</translation>
+<translation id="3080254622891793721">ग्राफिक</translation>
 <translation id="3086579638707268289">वेबवरील तुमच्या ॲक्टिव्हिटीचे नियंत्रण केले जात आहे</translation>
 <translation id="3087734570205094154">तळाकडील</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">पिकअप पत्ता जोडा</translation>
 <translation id="3105172416063519923">मालमत्ता आयडी:</translation>
 <translation id="3109728660330352905">तुम्हाला हे पेज पाहण्याची परवानगी नाही.</translation>
+<translation id="3113284927548439113">तिसरी शिफ्ट</translation>
 <translation id="3116158981186517402">लॅमिनेट</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />कनेक्टिव्हिटी निदान चालवून पहा<ph name="END_LINK" />.</translation>
@@ -480,6 +511,7 @@
 <translation id="3209034400446768650">पेज कदाचित शुल्क आकारू शकते</translation>
 <translation id="3212581601480735796">तुमच्या <ph name="HOSTNAME" /> वरील अ‍ॅक्टिव्हिटीचे परीक्षण केले जात आहे</translation>
 <translation id="3215092763954878852">WebAuthn वापरता आले नाही</translation>
+<translation id="3218181027817787318">संबंधित</translation>
 <translation id="3225919329040284222">सर्व्हरने असे सर्टिफिकेट सादर केले आहे जे अंगभूत अपेक्षांशी जुळत नाही. या अपेक्षा तुम्हाला संरक्षित करण्यासाठी विशिष्ट, उच्च सुरक्षिततेच्या वेबसाइटसाठी समाविष्ट केल्या आहेत.</translation>
 <translation id="3226128629678568754">पृष्ठ लोड करण्यास आवश्यक असलेला डेटा पुन्हा सबमिट करण्यासाठी रीलोड बटण दाबा.</translation>
 <translation id="3227137524299004712">मायक्रोफोन</translation>
@@ -514,6 +546,7 @@
 <translation id="3399952811970034796">वितरण पत्ता</translation>
 <translation id="3422248202833853650">मेमरी मोकळी करण्‍यासाठी अन्य प्रोग्राम मधून बाहर पडण्याचा प्रयत्न करा.</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> सध्या आवाक्याबाहेर आहे.</translation>
+<translation id="3423742043356668186">सिस्टम निर्दिष्ट केली</translation>
 <translation id="3427092606871434483">अनुमती द्या (डीफॉल्ट)</translation>
 <translation id="3427342743765426898">&amp;संपादित करा पुन्हा करा</translation>
 <translation id="342781501876943858">तुम्ही तुमच्या पासवर्डचा इतर साइटवर पुन्हा वापर केला असेल तर Chromium तुम्हाला तो रीसेट करण्याची शिफारस करतो.</translation>
@@ -523,6 +556,7 @@
 <translation id="3447661539832366887">या डिव्हाइसच्या मालकाने डायनासोर गेम बंद केला आहे.</translation>
 <translation id="3447884698081792621">सर्टिफिकेट दाखवा (<ph name="ISSUER" /> ने जारी केलेले)</translation>
 <translation id="3452404311384756672">मध्यंतर प्राप्त करा:</translation>
+<translation id="3453962258458347894">किती वेळा पुन्हा प्रयत्न केले</translation>
 <translation id="3456231139987291353">Number-11 (Envelope)</translation>
 <translation id="3461824795358126837">हायलाइटर</translation>
 <translation id="3462200631372590220">प्रगत लपवा</translation>
@@ -530,14 +564,19 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" />, सध्या खुला, उघड्या टॅबवर स्विच करण्यासाठी टॅब, त्यानंतर एंटर दाबा</translation>
 <translation id="3479552764303398839">सध्या नाही</translation>
 <translation id="3484560055331845446">तुम्ही तुमच्या Google खात्याचा ॲक्सेस कदाचित गमवाल. Chrome आता तुमचा पासवर्ड बदलण्याची शिफारस करते. तुम्हाला साइन इन करण्यासाठी सांगितले जाऊ शकते.</translation>
+<translation id="3487845404393360112">ट्रे ४</translation>
 <translation id="3495081129428749620">पेज <ph name="PAGE_TITLE" /> मध्ये शोधा</translation>
 <translation id="3512163584740124171">या धोरणाकडे दुर्लक्ष केले कारण त्याच धोरण गटातील दुसऱ्या धोरणाला उच्च प्राधान्य आहे.</translation>
 <translation id="3513704683820682405">ऑगमेंटेड रिअ‍ॅलिटी</translation>
+<translation id="3518941727116570328">एकापेक्षा अधिक ऑब्जेक्ट हाताळणी</translation>
 <translation id="3528171143076753409">सर्व्हरचे सर्टिफिकेट विश्वसनीय नाही.</translation>
 <translation id="3528485271872257980">गडद तपकिरी</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{ सिंक केलेल्या डिव्हाइसवर किमान 1 आयटम}=1{1 आयटम (सिंक केलेल्या डिव्‍हाइसवर आणखी काही)}other{# आयटम (सिंक केलेल्या डिव्‍हाइसवर आणि आणखी काही)}}</translation>
+<translation id="3531780078352352885">जॉब पत्रके</translation>
+<translation id="3533328374079021623">मेलबॉक्स ५</translation>
 <translation id="3539171420378717834">या डिव्हाइसवर या कार्डची एक प्रत ठेवा</translation>
 <translation id="3553513561058684206">तुमच्यासाठी</translation>
+<translation id="3558573058928565255">दिवसापर्यंत</translation>
 <translation id="3566021033012934673">तुमचे कनेक्शन खाजगी नाही</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635"><ph name="SITE" /> वरील एंबेड केलेल्‍या पेजचे म्हणणे हे आहे की</translation>
@@ -546,8 +585,10 @@
 <translation id="3583757800736429874">&amp;हलवा पुन्हा करा</translation>
 <translation id="3584299510153766161">ड्युअल पंच बॉटम</translation>
 <translation id="3586931643579894722">तपशील लपवा</translation>
+<translation id="3587738293690942763">मध्य</translation>
 <translation id="3592413004129370115">Italian (Envelope)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">ओरिएंटेशन फीड करा</translation>
 <translation id="3614103345592970299">आकार २</translation>
 <translation id="361438452008624280">सूची एंट्री "<ph name="LANGUAGE_ID" />": अज्ञात किंवा सपोर्ट नसलेली भाषा.</translation>
 <translation id="3615877443314183785">वैध समाप्ती दिनांक एंटर करा</translation>
@@ -556,6 +597,7 @@
 <translation id="3630155396527302611">नेटवर्क ॲक्सेस करण्यासाठी परवानगी  दिलेला प्रोग्राम म्हणून तो आधीपासून सूचीबद्ध केला असल्यास
         तो सूचीमधून काढा आणि पुन्हा जोडून पहा.</translation>
 <translation id="3631244953324577188">बायोमेट्रिक</translation>
+<translation id="3634530185120165534">ट्रे ५</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">प्रमाणीकरण यशस्वी</translation>
 <translation id="3655670868607891010">तुम्ही हे वारंवार पहात असल्यास, हे वापरून पहा <ph name="HELP_LINK" />.</translation>
@@ -594,16 +636,21 @@
 <translation id="3760561303380396507">CVC ऐवजी Windows Hello वापरायचे का?</translation>
 <translation id="3761718714832595332">स्थिती लपवा</translation>
 <translation id="3765032636089507299">सुरक्षित ब्राउझिंग पेज तयार होत आहे.</translation>
+<translation id="3765588406864124894">मेलबॉक्स ९</translation>
 <translation id="3778403066972421603">तुम्हाला हे कार्ड तुमच्या Google खात्यामध्ये आणि या डिव्हाइसवर सेव्ह करायचे आहे का?</translation>
+<translation id="3780694243617746492">आउटपुट बिन</translation>
 <translation id="3781428340399460090">गडद गुलाबी</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569">समाप्त होते: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="3789155188480882154">आकार १६</translation>
 <translation id="3797522431967816232">Prc3 (Envelope)</translation>
+<translation id="3799805948399000906">फॉन्टची विनंती केली</translation>
+<translation id="3807366285948165054">इमेज X शिफ्ट</translation>
 <translation id="3807873520724684969">हानिकारक आशय ब्लॉक केला गेला.</translation>
 <translation id="3808375843007691220">चेतावणी: पुढे प्रायोगिक वैशिष्ट्ये आहेत!</translation>
 <translation id="3810973564298564668">व्यवस्थापित करा</translation>
 <translation id="382518646247711829">तुम्ही प्रॉक्सी सर्व्हर वापरत असल्यास...</translation>
+<translation id="3827112369919217609">अ‍ॅब्सोल्यूट</translation>
 <translation id="3828924085048779000">रिक्त सांकेतिक पासफ्रेझाची परवानगी नाही.</translation>
 <translation id="3831915413245941253"><ph name="ENROLLMENT_DOMAIN" /> ने अतिरिक्त फंक्शनसाठी एक्स्टेंशन इंस्टॉल केले आहे. एक्स्टेंशनकडे तुमच्या काही डेटाचा अ‍ॅक्सेस आहे.</translation>
 <translation id="3832522519263485449">मल्टिपल पंच लेफ्ट</translation>
@@ -612,6 +659,7 @@
 <translation id="3884278016824448484">संघर्ष करणारा डिव्हाइस अभिज्ञापक</translation>
 <translation id="3885155851504623709">परगणा</translation>
 <translation id="388632593194507180">परीक्षण आढळले</translation>
+<translation id="3886948180919384617">स्टॅकर ३</translation>
 <translation id="3890664840433101773">ईमेल जोडा</translation>
 <translation id="3897092660631435901">मेनू</translation>
 <translation id="3901925938762663762">कार्ड कालबाह्य झाले आहे</translation>
@@ -646,7 +694,9 @@
 <translation id="4075941231477579656">टच आयडी</translation>
 <translation id="4079302484614802869">प्रॉक्सी कॉन्फिगरेशन .pac स्क्रिप्ट URL वापरण्‍यास सेट करण्‍यात आले आहे, निश्चित प्रॉक्सी सर्व्हर नव्हे.</translation>
 <translation id="4082393374666368382">सेटिंग्ज - व्यवस्थापक</translation>
+<translation id="4088981014127559358">साइन १ इमेज Y शिफ्ट</translation>
 <translation id="4098354747657067197">भ्रामक साइट पुढे आहे</translation>
+<translation id="4101413244023615925">मजकूर आणि ग्राफिक</translation>
 <translation id="4103249731201008433">डिव्हाइस सिरीयल क्रमांक चुकीचा आहे</translation>
 <translation id="4103763322291513355">तुमच्या सिस्टम ॲडमिनिस्ट्रेटरद्वारे प्रवर्तित ब्लॅकलिस्टीतील URLs आणि अन्य धोरणांची सूची पाहण्यासाठी &lt;strong&gt;chrome://policy&lt;/strong&gt; ला भेट द्या.</translation>
 <translation id="4108231218301530806">या कार्डची पुढच्या वेळी पडताळणी करण्यासाठी फिंगरप्रिंट वापरा.</translation>
@@ -659,6 +709,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{अन्य 1}other{अन्य #}}</translation>
 <translation id="4130226655945681476">नेटवर्क केबल, मोडेम आणि राउटर तपासत आहे</translation>
 <translation id="413544239732274901">आणखी जाणून घ्या</translation>
+<translation id="4142935452406587478">ट्रे १०</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">जागतिक डीफॉल्‍ट (शोधणे) वापरा</translation>
 <translation id="4159784952369912983">जांभळा</translation>
@@ -701,6 +752,7 @@
 <translation id="4258748452823770588">खराब स्वाक्षरी</translation>
 <translation id="4261046003697461417">संरक्षित दस्तऐवजमध्ये भाष्य केले जाऊ शकत नाही</translation>
 <translation id="4265872034478892965">तुमच्या ॲडमिनिस्ट्रेटरकडून परवानगी असलेले</translation>
+<translation id="4270541775497538019">स्टॅकर ६</translation>
 <translation id="4275830172053184480">तुमचा डिव्हाइस रीस्टार्ट करा</translation>
 <translation id="4277028893293644418">पासवर्ड रीसेट करा</translation>
 <translation id="4279811152705618813">तुमचा <ph name="DEVICE_TYPE" /> <ph name="ENROLLMENT_DOMAIN" /> द्वारे व्यवस्थापित केला आहे</translation>
@@ -716,6 +768,7 @@
 <translation id="4318566738941496689">तुमच्या डिव्हाइसचे नाव आणि नेटवर्कचा पत्ता</translation>
 <translation id="4325863107915753736">लेख शोधण्यात अयशस्वी</translation>
 <translation id="4326324639298822553">तुमची कालबाह्यता तारीख तपासा आणि पुन्हा प्रयत्न करा</translation>
+<translation id="4331519897422864041">स्टॅकर ५</translation>
 <translation id="4331708818696583467">सुरक्षित नाही</translation>
 <translation id="4340982228985273705">हा कॉंप्युटर एंटरप्राइझ व्यवस्थापित म्हणून आढळला नाही म्हणून धोरण फक्त Chrome वेबस्टोअरवर होस्ट केलेले एक्स्टेंशन आपोआप इंस्टॉल करू शकते. Chrome वेबस्टोअर अपडेट URL <ph name="CWS_UPDATE_URL" /> ही आहे.</translation>
 <translation id="4346197816712207223">स्वीकारली जाणारी क्रेडिट कार्डे</translation>
@@ -731,6 +784,7 @@
 <translation id="4372948949327679948">अपेक्षित <ph name="VALUE_TYPE" /> मूल्य.</translation>
 <translation id="4377125064752653719">तुम्ही <ph name="DOMAIN" /> वर पोहोचण्याचा प्रयत्न केला, परंतु सर्व्हरने सादर केलेले प्रमाणपत्र त्याच्या जारीकर्त्याद्वारे मागे घेतले गेले आहे. याचा अर्थ सर्व्हरने सादर केलेल्या सुरक्षा क्रेडेंशियलवर अजिबात विश्वास ठेवला जाऊ नये. तुम्ही कदाचित आक्रमणकर्त्याशी संवाद प्रइंस्टॉल करत आहात.</translation>
 <translation id="4378154925671717803">फोन</translation>
+<translation id="4390472908992056574">ब्रिम</translation>
 <translation id="4406896451731180161">शोध परिणाम</translation>
 <translation id="4408413947728134509">कुकीज <ph name="NUM_COOKIES" /></translation>
 <translation id="4415426530740016218">घेण्याचा पत्ता</translation>
@@ -757,6 +811,7 @@
 <translation id="4522570452068850558">तपशील</translation>
 <translation id="4524138615196389145">आतापासून WebAuthn वापरून तुमच्या कार्डांची जलद खात्री करा</translation>
 <translation id="4524805452350978254">कार्डे व्यवस्थापित करा</translation>
+<translation id="4542971377163063093">ट्रे ६</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">फ्लॅश</translation>
 <translation id="4558551763791394412">तुमचे विस्तार अक्षम करून पहा.</translation>
@@ -773,6 +828,7 @@
 <translation id="4635654612248442824">साइटने <ph name="ORIGIN" />विनंती केली आहे की, मूळ धोरण
      त्याच्या सर्व विनंतीवर लागू होईल पण हे धोरण सध्या लागू केले जाऊ शकत नाही.</translation>
 <translation id="464342062220857295">शोध वैशिष्ट्ये</translation>
+<translation id="4644670975240021822">उलट्या क्रमाने फेस डाउन</translation>
 <translation id="4646534391647090355">आता मला तेथे घेऊन जा</translation>
 <translation id="4658638640878098064">स्टेपल टॉप लेफ्ट</translation>
 <translation id="4668929960204016307">,</translation>
@@ -781,6 +837,7 @@
 <translation id="4690462567478992370">चुकीचे सर्टिफिकेट वापरणे थांबवा</translation>
 <translation id="4691835149146451662">Architecture-A (Envelope)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">साइड</translation>
 <translation id="4708268264240856090">आपल्या कनेक्शनमध्ये व्यत्यय आला</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />Windows नेटवर्क निदान चालविणे<ph name="END_LINK" /></translation>
@@ -798,9 +855,11 @@
 <translation id="4764776831041365478"><ph name="URL" /> येथील वेबपेज कदाचित तात्पुरते बंद आहे किंवा ते कदाचित कायमचे नवीन वेब पत्त्यावर हलवले आहे.</translation>
 <translation id="4766713847338118463">ड्युअल स्टेपल बॉटम</translation>
 <translation id="4771973620359291008">एक अज्ञात एरर आली आहे.</translation>
+<translation id="4780366598804516005">मेलबॉक्स १</translation>
 <translation id="4780900888022378816">तुमचे डिव्हाइस <ph name="ENROLLMENT_DOMAIN" /> कडून व्यवस्थापित केले जाते आणि तुमचे खाते <ph name="ACCOUNT_DOMAIN" /> कडून व्यवस्थापित केले जाते.</translation>
 <translation id="4785689107224900852">या टॅबवर स्विच करा</translation>
 <translation id="4791134497475588553">इंस्टॉल केलेली Linux अ‍ॅप्स आणि ती कधी शेवटची वापरली</translation>
+<translation id="4796594887379589189">जॉब खाते आयडी</translation>
 <translation id="4798078619018708837">तुमच्या कार्डाचा तपशील अपडेट करण्यासाठी <ph name="CREDIT_CARD" /> साठी कार्डची एक्स्पायरेशन तारीख आणि CVC टाका. तुम्ही निश्चित केल्यानंतर, तुमच्या Google खात्यामधील कार्डाचा तपशील या साइटसोबत शेअर केला जाईल.</translation>
 <translation id="4800132727771399293">तुमची कालबाह्यता तारीख आणि CVC तपासा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="480334179571489655">मूळ धोरण एरर</translation>
@@ -808,6 +867,7 @@
 <translation id="4807049035289105102">Google Chrome प्रक्रिया करू शकत नाही असे न समजणारे क्रेडेंशियल वेबसाइटने पाठविल्यामुळे तुम्ही आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही. नेटवर्क एरर आणि आक्रमण सामान्यतः तात्पुरते असतात, यामुळे हे पेज कदाचित नंतर कार्य करेल.</translation>
 <translation id="4813512666221746211">नेटवर्क एरर</translation>
 <translation id="4816492930507672669">पृष्‍ठानुरुप करा</translation>
+<translation id="484462545196658690">ऑटो</translation>
 <translation id="4850886885716139402">पहा</translation>
 <translation id="4854362297993841467">ही वितरण पद्धत उपलब्ध नाही. वेगळी पद्धत वापरून पहा.</translation>
 <translation id="4876188919622883022">सिंप्लिफाइड व्ह्यू</translation>
@@ -817,6 +877,7 @@
 <translation id="4879491255372875719">आपोआप (डीफॉल्ट)</translation>
 <translation id="4880827082731008257">इतिहास शोध</translation>
 <translation id="4881695831933465202">उघडा</translation>
+<translation id="4892518386797173871">मागील</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">सेव्ह करा…</translation>
 <translation id="4913987521957242411">पंच टॉप लेफ्ट</translation>
@@ -826,6 +887,7 @@
 <translation id="4926049483395192435">निर्दिष्‍ट केले जाणे आवश्‍यक आहे.</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> चे म्हणणे हे आहे की</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">जास्त क्षमता</translation>
 <translation id="4943703118917034429">आभासी वास्तविकता</translation>
 <translation id="4943872375798546930">परिणाम नाहीत</translation>
 <translation id="4950898438188848926">टॅब स्विच बटण, उघड्या टॅबवर स्विच करण्यासाठी एंटर दाबा, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -858,8 +920,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(एक वापरली जात आहे)}other{(# वापरल्या जात आहेत)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />प्रॉक्सी पत्ता तपासणे<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">मेलबॉक्स ४</translation>
 <translation id="5087286274860437796">यावेळी सर्व्हरचे सर्टिफिकेट वैध नाही.</translation>
 <translation id="5087580092889165836">कार्ड जोडा</translation>
+<translation id="5088142053160410913">ऑपरेटरला मेसेज पाठवणे</translation>
 <translation id="5089810972385038852">राज्य</translation>
 <translation id="5093232627742069661">Z-फोल्ड</translation>
 <translation id="5094747076828555589">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता सर्टिफिकेट Chromium द्वारे विश्वसनीय नाही. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.</translation>
@@ -870,15 +934,18 @@
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-बिट)</translation>
 <translation id="5121469660360593280">तुमच्या अ‍ॅडमिनिस्ट्रेटरसह Chrome एंटरप्राइझ वापरकर्ता सुरक्षितता ने फ्लॅग केलेल्या सुरक्षितता इव्‍हेंटसंबंधित डेटा शेअर करा. यामध्ये तुम्ही भेट देता त्या पेजच्या URL, फाइलची नावे किंवा मेटाडेटा आणि तुम्ही तुमच्या डिव्हाइस आणि Chrome वर साइन इन करण्यासाठी वापरता त्या वापरकर्ता नावांचा समावेश असू शकतो.</translation>
+<translation id="5123063207673082822">वीकेंड</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">तुमच्या कार्डाची पडताळणी करा</translation>
 <translation id="5135404736266831032">पत्ते व्यवस्थापित करा...</translation>
 <translation id="5138227688689900538">कमी दाखवा</translation>
 <translation id="5141240743006678641">तुमच्या Google क्रेडेंशियलसह सिंक केलेले पासवर्ड एंक्रिप्ट करा</translation>
 <translation id="5145883236150621069">धोरण प्रतिसादामध्ये एरर कोड अस्तित्वात आहे</translation>
+<translation id="5148809049217731050">फेस अप</translation>
 <translation id="515292512908731282">C4 (Envelope)</translation>
 <translation id="5158275234811857234">कव्हर</translation>
 <translation id="5159010409087891077">नवीन गुप्त विंडोमध्ये पेज उघडा (⇧⌘N)</translation>
+<translation id="5161506081086828129">स्टॅकर ९</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> चा CVC टाका. तुम्ही निश्चित केल्यानंतर तुमच्या Google खात्यामधील कार्डाचा तपशील या साइटसोबत शेअर केला जाईल.</translation>
 <translation id="5169827969064885044">तुम्ही तुमच्या संस्थेच्या खात्याचा ॲक्सेस गमावू शकता किंवा तुमची संवेदनशील माहिती चोरीला जाऊ शकते. Chrome लगेच तुमचा पासवर्ड बदलण्याची शिफारस करत आहे.</translation>
 <translation id="5170017743895942767">Chrome एंटरप्राइझ वापरकर्ता सुरक्षितता</translation>
@@ -899,6 +966,7 @@
 <translation id="5250209940322997802">"नेटवर्कशी कनेक्ट करा"</translation>
 <translation id="5251803541071282808">क्लाउड</translation>
 <translation id="5252000469029418751">C7 (Envelope)</translation>
+<translation id="5254043433801397071">प्रिंट आशय ऑप्टिमाइझ करा</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">पेमेंट पूर्ण झाले</translation>
 <translation id="5266128565379329178">बाइंड टॉप</translation>
@@ -912,6 +980,7 @@
 <translation id="5287240709317226393">कुकीज दाखवा</translation>
 <translation id="5287456746628258573">ही साइट कालबाह्य झालेली सुरक्षितता काँफिगरेशन वापरत आहे ज्यामुळे कदाचित तुमची माहिती (उदाहरणार्थ, पासवर्ड किंवा क्रेडिट कार्ड क्रमांक) या साइटला पाठवताना ती उघड होऊ शकते.</translation>
 <translation id="5288108484102287882">धोरण मूल्यांच्या वैधतेमुळे चेतावण्या वाढल्या आहेत</translation>
+<translation id="5289384342738547352">एकापेक्षा अधिक दस्तऐवज हाताळणे</translation>
 <translation id="5295292838686006428">एखाद्या साइट किंवा ॲपवरील डेटा भंगामुळे तुमचा पासवर्ड उघड झाला. Chrome तुमचे सेव्ह केलेले पासवर्ड आताच तपासण्याची शिफारस करते.</translation>
 <translation id="5299298092464848405">धोरण पार्स करताना एरर</translation>
 <translation id="5300589172476337783">दर्शवा</translation>
@@ -936,10 +1005,12 @@
 <translation id="5396631636586785122">एज स्टिच राइट</translation>
 <translation id="5400836586163650660">राखाडी</translation>
 <translation id="540969355065856584">हा सर्व्हर <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता सर्टिफिकेट यावेळी वैध नाही. हे कदाचित चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोर तुमचे कनेक्शन इंटरसेप्ट करत असल्‍यामुळे होऊ शकते.</translation>
+<translation id="541416427766103491">स्टॅकर ४</translation>
 <translation id="5421136146218899937">ब्राउझिंग डेटा साफ करा...</translation>
 <translation id="5430298929874300616">बुकमार्क काढून टाका</translation>
 <translation id="5431657950005405462">तुमची फाईल आढळली नाही</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />" वर स्कीमा ऑथेंटिकेशन एरर: <ph name="ERROR" /></translation>
+<translation id="5443468954631487277">उलट्या क्रमाने फेस अप</translation>
 <translation id="5452270690849572955">हे <ph name="HOST_NAME" /> पृष्ठ शोधले जाऊ शकत नाही</translation>
 <translation id="5455374756549232013">खराब धोरण टाइमस्टँप</translation>
 <translation id="5457113250005438886">चुकीचा</translation>
@@ -961,7 +1032,9 @@
 <translation id="552553974213252141">मजकूर योग्यरितीने काढला होता?</translation>
 <translation id="55293785478302737">एज स्टिच</translation>
 <translation id="553484882784876924">Prc6 (Envelope)</translation>
+<translation id="5539243836947087108">राफ्ट</translation>
 <translation id="5540224163453853">विनंती केलेला लेख शोधू शकलो नाही.</translation>
+<translation id="5541086400771735334">मेलबॉक्स ७</translation>
 <translation id="5541546772353173584">ईमेल जोडा</translation>
 <translation id="5545756402275714221">तुमच्यासाठी लेख</translation>
 <translation id="5552137475244467770">ऑनलाइन प्रकाशित केलेल्या सूचींनुसार Chrome ठराविक काळाने तुमचे पासवर्ड तपासते. हे करत असताना, तुमचे पासवर्ड आणि वापरकर्ता नावे एंक्रिप्ट केली जातात जेणेकरून Google च्या समावेशासह इतर कोणाकडून ती वाचली जाऊ नयेत.</translation>
@@ -986,10 +1059,13 @@
 <translation id="5632627355679805402">तुमचा डेटा तुमच्या <ph name="BEGIN_LINK" />Google पासवर्ड <ph name="END_LINK" /> ने <ph name="TIME" /> वाजता एंक्रिप्ट केला गेला होता. सिंक सुरू करण्यासाठी तो एंटर करा.</translation>
 <translation id="5633066919399395251">सध्या <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> वर असलेले हल्लेखोर कदाचित तुमच्या काँप्युटरमधील तुमची माहिती चोरू किंवा हटवू शकणारे धोकादायक प्रोग्राम (उदाहरणार्थ, फोटो, पासवर्ड, मेसेज आणि क्रेडिट कार्डे) इंस्टॉल करण्याचा प्रयत्न करू शकतील. <ph name="BEGIN_LEARN_MORE_LINK" />आणखी जाणून घ्या<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">फसवणारा आशय ब्लॉक केला.</translation>
+<translation id="5644090287519800334">साइड १ इमेज X शिफ्ट</translation>
+<translation id="5645854190134202180">दुसरी शिफ्ट</translation>
 <translation id="5659593005791499971">ईमेल</translation>
 <translation id="5663614846592581799">9x11 (Envelope)</translation>
 <translation id="5663955426505430495">या डिव्हाइसच्या अ‍ॅडमिनिस्ट्रेटरने अतिरिक्त फंक्शनसाठी एक्स्टेंशन इंस्टॉल केले आहे. एक्स्टेंशनकडे तुमच्या काही डेटाचा अ‍ॅक्सेस आहे.</translation>
 <translation id="5675650730144413517">हे पृष्ठ कार्य करीत नाही</translation>
+<translation id="568292603005599551">इमेज X स्थिती</translation>
 <translation id="5684874026226664614">अरेरे. हे पृष्‍ठ भाषांतरित केले जाऊ शकले नाही.</translation>
 <translation id="5685654322157854305">पाठवण्याचा पत्ता जोडा</translation>
 <translation id="5689199277474810259">JSON वर एक्सपोर्ट करा</translation>
@@ -1007,6 +1083,7 @@
 <translation id="5763042198335101085">वैध ईमेल ॲड्रेस एंटर करा</translation>
 <translation id="5763703224595565476">तुमच्या अ‍ॅडमिनिस्ट्रेटरने तुमच्या ब्राउझरवर Chrome एंटरप्राइझ वापरकर्ता सुरक्षितता सुरू केली आहे. Chrome एंटरप्राइझ वापरकर्ता सुरक्षितता ला तुमच्या काही डेटाचा ॲक्सेस आहे.</translation>
 <translation id="5765072501007116331">वितरण पद्धती आणि आवश्यकता पाहण्यासाठी, एक पत्ता निवडा</translation>
+<translation id="5776313857861697733">प्राधान्य</translation>
 <translation id="5778550464785688721">MIDI डिव्हाइसेस पूर्ण नियंत्रण</translation>
 <translation id="5781136890105823427">प्रयोग सुरू केला आहे</translation>
 <translation id="578305955206182703">अंबर</translation>
@@ -1027,6 +1104,7 @@
 <translation id="5855253129151731373">या साइटचे होस्ट नाव <ph name="LOOKALIKE_DOMAIN" /> सारखे दिसत आहे. हल्लेखोर कधीकधी डोमेन नेममध्ये सूक्ष्म, पाहण्यासाठी कठीण असणारे बदल करून साइटची नक्कल करतात.
 
     हे चुकून दाखवले गेले आहे असे तुम्हाला वाटत असल्यास, कृपया https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals ला भेट द्या.</translation>
+<translation id="5862579898803147654">स्टॅकर ८</translation>
 <translation id="5863847714970149516">पुढील पेजवर तुमच्याकडून शुल्क आकारले जाऊ शकते</translation>
 <translation id="5866257070973731571">फोन नंबर जोडा</translation>
 <translation id="5866898949289125849">तुम्ही डेव्हलपर टूल पेज पाहत आहात</translation>
@@ -1039,6 +1117,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (सिंक केलेले)</translation>
 <translation id="59174027418879706">सक्षम</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">सुरू करा</translation>
 <translation id="5921639886840618607">Google खात्यात कार्ड सेव्ह करायचे?</translation>
 <translation id="5922853866070715753">जवळजवळ पूर्ण झाले</translation>
 <translation id="5932224571077948991">साइट अनाहूत किंवा दिशाभूल करणाऱ्या जाहिराती दाखवते</translation>
@@ -1049,11 +1128,13 @@
 <translation id="5975083100439434680">झूम कमी करा</translation>
 <translation id="5979084224081478209">पासवर्ड तपासा</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
+<translation id="5984570616552610254">चेंबरची आर्द्रता</translation>
 <translation id="598637245381783098">पेमेंट ॲप उघडू शकत नाही</translation>
 <translation id="5989320800837274978">निश्चित प्रॉक्‍सी सर्व्हर किंवा .pac स्क्रिप्ट URL देखील निर्दिष्‍ट केलेली नाही.</translation>
 <translation id="5990559369517809815">सर्व्हरला केल्या जाणारी विनंती एका एक्स्टेंशनने ब्लॉक केली आहे.</translation>
 <translation id="5992691462791905444">इंजिनीयरिंग Z-फोल्ड</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' साठी <ph name="RESULT_COUNT" /> परिणाम</translation>
+<translation id="6008122969617370890">एन ते १ क्रम</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">तुमचे पासवर्ड तपासा</translation>
 <translation id="6015796118275082299">वर्ष</translation>
@@ -1063,15 +1144,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (सिंक केलेले)</translation>
 <translation id="6027201098523975773">नाव एंटर करा</translation>
 <translation id="603068602130820122">ड्युअल स्टेपल राइट</translation>
+<translation id="6032524144326295339">मेलबॉक्स २</translation>
 <translation id="6032955021262906325">बाइंड लेफ्ट</translation>
 <translation id="6034000775414344507">फिकट राखाडी</translation>
 <translation id="6034283069659657473">10x14 (Envelope)</translation>
 <translation id="6034514109191629503">ॲकॉर्डियन फोल्ड</translation>
 <translation id="6039846035001940113">समस्या कायम राहिल्यास साइटच्या मालकाशी संपर्क साधा.</translation>
 <translation id="6040143037577758943">बंद करा</translation>
+<translation id="6041777658117377052">चेंबरचे तापमान</translation>
 <translation id="6044573915096792553">आकार १२</translation>
+<translation id="6045164183059402045">लागू करण्याचे टेम्पलेट</translation>
 <translation id="6047233362582046994">तुम्हाला तुमच्या सुरक्षेला असणारा धोका समजत असल्यास, हानिकारक अ‍ॅप्स काढले जाण्यापूर्वी तुम्ही <ph name="BEGIN_LINK" />या साइटला भेट देऊ शकता<ph name="END_LINK" />.</translation>
 <translation id="6047927260846328439">हा आशय तुम्हाला सॉफ्टवेअर इंस्टॉल करण्याचा किंवा वैयक्तिक माहिती उघड करण्याचा फसवा प्रयत्न करू शकेल. <ph name="BEGIN_LINK" />तरीही दाखवा<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">पेज वितरण</translation>
 <translation id="6051221802930200923">ही वेबसाइट सर्टिफिकेट पिनिंग वापरत असल्यामुळे तुम्ही आत्ता <ph name="SITE" /> पाहू शकणार नाही. नेटवर्क एरर आणि आक्रमण शक्यतो तात्पुरती असतात, त्यामुळे हे पेज नंतर पाहता येईल.</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">तुमच्या सर्व डिव्हाइसवर तुमची कार्डे वापरायची का?</translation>
@@ -1093,6 +1178,7 @@
 <translation id="6157877588268064908">शिपिंग पद्धती आणि आवश्यकता पाहण्यासाठी, एक पत्ता निवडा</translation>
 <translation id="6165508094623778733">अधिक जाणून घ्या</translation>
 <translation id="6177128806592000436">या साइटवरील तुमचे कनेक्शन सुरक्षित नाही</translation>
+<translation id="6180316780098470077">पुन्हा प्रयत्न करण्याचे मध्‍यांतर</translation>
 <translation id="6196640612572343990">तृतीय-पक्ष कुकीज अवरोधित करा</translation>
 <translation id="6203231073485539293">तुमचे इंटरनेट कनेक्शन तपासा</translation>
 <translation id="6218753634732582820">Chromium वरून पत्ता काढून टाकायचा?</translation>
@@ -1101,6 +1187,7 @@
 <translation id="6234122620015464377">प्रत्येक दस्तऐवजानंतर ट्रिम करा</translation>
 <translation id="6240447795304464094">Google Pay लोगो</translation>
 <translation id="6241121617266208201">सूचना लपवा</translation>
+<translation id="624499991300733384">प्रिंट कंपोझिटर सेवा</translation>
 <translation id="6251924700383757765">गोपनीयता धोरण</translation>
 <translation id="6254436959401408446">हे पृष्‍ठ उघडण्‍यासाठी पुरेशी मेमरी नाही</translation>
 <translation id="625755898061068298">तुम्ही या साइटसाठी सुरक्षा चेतावणी अक्षम करणे निवडले आहे.</translation>
@@ -1187,6 +1274,7 @@
 <translation id="6604181099783169992">गती किंवा प्रकाश सेन्सर</translation>
 <translation id="6609880536175561541">Prc7 (Envelope)Prc7 (Envelope)</translation>
 <translation id="6612358246767739896">संरक्षित आशय</translation>
+<translation id="6615297766614333076">स्टॅकर २</translation>
 <translation id="6624427990725312378">संपर्क माहिती</translation>
 <translation id="6626291197371920147">वैध कार्ड नंबर जोडा</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> शोध</translation>
@@ -1202,6 +1290,8 @@
 <translation id="6670613747977017428">सुरक्षिततेकडे परत जा.</translation>
 <translation id="6671697161687535275">Chromium वरून फॉर्म सूचना काढून टाकायच्या?</translation>
 <translation id="6685834062052613830">साइन आउट करा आणि सेटअप पूर्ण करा</translation>
+<translation id="6687335167692595844">विनंती केलेल्या फॉंटचा आकार</translation>
+<translation id="6689249931105087298">काळ्या पॉइंटच्या काँप्रेशनशी संबंंधित</translation>
 <translation id="6689271823431384964">तुम्ही साइन इन केले असल्यामुळे Chrome तुमच्या Google खात्यामध्ये तुमची कार्डे सेव्ह करत आहे. तुम्‍ही हे वर्तन सेटिंग्‍जमध्‍ये बदलू शकता. कार्डधारकाचे नाव तुमच्या खात्यामधून घेतले जाते.</translation>
 <translation id="6704582573942289642">ही योग्य साइट आहे का?</translation>
 <translation id="6710213216561001401">मागील</translation>
@@ -1247,6 +1337,7 @@
 <translation id="6964255747740675745">नेटवर्क कॉन्फिगरेशन पार्स करता आले नाही (चुकीची JSON).</translation>
 <translation id="6965382102122355670">ठीक आहे</translation>
 <translation id="6965978654500191972">डिव्हाइस</translation>
+<translation id="696703987787944103">पर्सेप्चुअल</translation>
 <translation id="6970216967273061347">जिल्हा</translation>
 <translation id="6973656660372572881">निश्चित प्रॉक्सी सर्व्हर आणि .pac स्क्रिप्ट URL निर्दिष्‍ट करण्‍यात आले आहेत.</translation>
 <translation id="6973932557599545801">सॉरी मला मदत करता आली नाही कृपया तुम्ही स्वतःच सुरू ठेवा.</translation>
@@ -1268,6 +1359,7 @@
 <translation id="7075452647191940183">विनंती खूपच मोठी आहे</translation>
 <translation id="7079718277001814089">या साइटमध्ये मालवेअर आहे</translation>
 <translation id="7081308185095828845">हे वैशिष्ट्य तुमच्या डिव्हाइसवर उपलब्ध नाही</translation>
+<translation id="7083258188081898530">ट्रे ९</translation>
 <translation id="7087282848513945231">परगणा</translation>
 <translation id="7090678807593890770">Google वर <ph name="LINK" /> शोधा</translation>
 <translation id="7108338896283013870">लपवा</translation>
@@ -1279,6 +1371,7 @@
 <translation id="7135130955892390533">स्थिती दाखवा</translation>
 <translation id="7138472120740807366">वितरण पद्धत</translation>
 <translation id="7139724024395191329">अमिरात</translation>
+<translation id="714064300541049402">साइड २ इमेज X शिफ्ट</translation>
 <translation id="7152423860607593928">Number-14 (Envelope)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> आणि <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> आणखी}other{<ph name="PAYMENT_METHOD_PREVIEW" /> आणि <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> आणखी}}</translation>
 <translation id="7153618581592392745">फिकट जांभळा</translation>
@@ -1297,6 +1390,7 @@
 <translation id="721197778055552897">या समस्येबद्दल <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" />.</translation>
 <translation id="7219179957768738017">कनेक्शन <ph name="SSL_VERSION" /> वापरते.</translation>
 <translation id="7220786058474068424">प्रक्रिया करत आहे</translation>
+<translation id="7233592378249864828">खात्री केलेले पत्रक प्रिंट करा</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">साइटमध्ये पुढे मालवेअर आहे</translation>
 <translation id="724975217298816891">तुमचे कार्ड तपशील अपडेट करण्‍यासाठी <ph name="CREDIT_CARD" /> करिता एक्स्पायरी तारीख आणि CVC एंटर करा. तुम्ही पुष्टी केल्यावर, तुमचे कार्ड तपशील या साइटवर शेअर केले जातील.</translation>
@@ -1306,6 +1400,7 @@
 <translation id="725866823122871198">तुमच्या कॉंप्युटरची तारीख आणि वेळ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> चुकीची असल्यामुळे (<ph name="DATE_AND_TIME" />)सह खाजगी कनेक्शन इंस्टॉल केले जाऊ शकत नाही.</translation>
 <translation id="7260504762447901703">ॲक्सेस रद्द करा</translation>
 <translation id="7275334191706090484">व्यवस्थापित केलेले बुकमार्क</translation>
+<translation id="7292031607255951991">मिळवणाऱ्याचे नाव</translation>
 <translation id="7298195798382681320">शिफारस केलेले</translation>
 <translation id="7300012071106347854">गडद निळा</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1383,6 +1478,7 @@
 <translation id="7569983096843329377">काळा</translation>
 <translation id="7575207903026901870">सूचना बटण काढा, ही सूचना काढण्यासाठी एंटर दाबा</translation>
 <translation id="7578104083680115302">तुम्ही Google सह सेव्ह केलेल्या कार्डचा वापर करून डिव्‍हाइसेसवरून द्रुतपणे साइट आणि ॲप्सवर पेमेंट करा.</translation>
+<translation id="7581199239021537589">साइन २ इमेज Y शिफ्ट</translation>
 <translation id="7592362899630581445">सर्व्हरचे सर्टिफिकेट नाव मर्यादांचे उल्लंघन करते.</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" /> पेक्षा कमी</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> सध्या ही विनंती हाताळण्यात अक्षम आहे.</translation>
@@ -1390,10 +1486,13 @@
 <translation id="7610193165460212391">मूल्य <ph name="VALUE" /> श्रेणीच्या बाहेर आहे.</translation>
 <translation id="7613889955535752492">कालबाह्य: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">तुमच्याकडे आधीपासूनच डेटा आहे जो तुमच्या Google खाते पासवर्डची विभिन्न आवृत्ती वापरुन एंक्रिप्शन करण्‍यात आला आहे. कृपया तो खाली एंटर करा.</translation>
+<translation id="7619838219691048931">शेवटचे पत्रक</translation>
+<translation id="762844065391966283">एका वेळी एक</translation>
 <translation id="7633909222644580952">परफॉर्मंस डेटा आणि क्रॅश अहवाल</translation>
 <translation id="7637571805876720304">Chromium वरून क्रेडिट कार्ड काढून टाकायचे?</translation>
 <translation id="7638605456503525968">सिरीअल पोर्ट</translation>
 <translation id="7639968568612851608">गडद राखाडी</translation>
+<translation id="7647206758853451655">प्रिंटची गुणवत्ता</translation>
 <translation id="7653957176542370971">पेमेंट हँडलर पत्रक बंद केलेले आहे</translation>
 <translation id="765676359832457558">प्रगत सेटिंग्ज लपवा...</translation>
 <translation id="7658239707568436148">रद्द करा</translation>
@@ -1402,10 +1501,13 @@
 <translation id="7667346355482952095">परत केलेले धोरण टोकन रिक्त आहे किंवा वर्तमान टोकनशी जुळत नाही</translation>
 <translation id="7668654391829183341">अज्ञात डिव्हाइस</translation>
 <translation id="7669271284792375604">या साइट वरील आक्रमणकर्ते कदाचित तुमच्या ब्राउझिंग अनुभवास हानी पोहोचविणारे प्रोग्राम (उदाहरणार्थ, तुमचे होम बदलून किंवा तुम्ही भेट देता त्या साइटवर अतिरिक्त जाहिराती दर्शवून) इंस्टॉल करून तुमची फसवणूक करण्‍याचा प्रयत्न करू शकतात.</translation>
+<translation id="7673278391011283842">मेलबॉक्स ६</translation>
 <translation id="7676643023259824263">क्लिपबोर्ड मजकूर, <ph name="TEXT" /> शोधा</translation>
 <translation id="7681101578153515023">शोध इंजिन बदला</translation>
 <translation id="7682287625158474539">शिपिंग</translation>
 <translation id="7687186412095877299">तुमच्या सेव्ह केलेल्या पेमेंट पद्धतींसह पेमेंट फॉर्म भरते</translation>
+<translation id="7687305263118037187">पुन्हा प्रयत्न करण्याची वेळ संपली</translation>
+<translation id="7693583928066320343">पेजचा क्रम मिळाला</translation>
 <translation id="7697066736081121494">Prc8 (Envelope)</translation>
 <translation id="769721561045429135">सध्या, तुमच्याकडे अशी कार्डे आहेत जी फक्त या डिव्हाइसवर वापरली जाऊ शकतात. कार्डांचे पुनरावलोकन करण्यासाठी सुरू ठेवा क्लिक करा.</translation>
 <translation id="7699293099605015246">लेख आत्ता उपलब्ध नाहीत</translation>
@@ -1424,7 +1526,9 @@
 <translation id="7761701407923456692">सर्व्हरचे सर्टिफिकेट URL शी जुळत नाही.</translation>
 <translation id="7763386264682878361">पेमेंट मॅनिफेस्ट पार्सर</translation>
 <translation id="7764225426217299476">पत्ता जोडा</translation>
+<translation id="7766518757692125295">स्कर्ट</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
+<translation id="7773005668374414287">तोच क्रम ठेवून फेस अप</translation>
 <translation id="777702478322588152">परफेक्चुअर</translation>
 <translation id="7791196057686275387">बेल</translation>
 <translation id="7791543448312431591">जोडा</translation>
@@ -1442,9 +1546,11 @@
 <translation id="785549533363645510">तथापि, तुम्ही अदृश्य नाही. गुप्त झाल्याने तुमचे ब्राउझिंग तुमचा नियोक्ता, तुमचा इंटरनेट सेवा पुरवठादार, किंवा तुम्ही भेट देता त्या वेबसाइटपासून लपत नाही.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">साइट सोडायची?</translation>
+<translation id="7865448901209910068">सर्वोत्तम गती</translation>
 <translation id="7878562273885520351">तुमच्या पासवर्डशी तडजोड होत असल्याची शक्यता आहे</translation>
 <translation id="7882421473871500483">तपकिरी</translation>
 <translation id="7887683347370398519">तुमचे CVC तपासा आणि पुन्हा प्रयत्न करा</translation>
+<translation id="7888575728750733395">प्रस्तुतीकरण इंटेंट प्रिंट करा</translation>
 <translation id="7904208859782148177">C3 (Envelope)</translation>
 <translation id="7932579305932748336">कोट</translation>
 <translation id="79338296614623784">वैध फोन नंबर एंटर करा</translation>
@@ -1459,6 +1565,8 @@
 <translation id="7953569069500808819">एज स्टिच टॉप</translation>
 <translation id="7956713633345437162">Mobile बुकमार्क</translation>
 <translation id="7961015016161918242">कधीही नाही</translation>
+<translation id="7966803981046576691">जॉब खाते प्रकार</translation>
+<translation id="7977538094055660992">आउटपुट डिव्हाइस</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">बाइंड</translation>
 <translation id="7995512525968007366">नमूद केलेले नाही</translation>
@@ -1516,6 +1624,7 @@
 <translation id="8221250263817408492">तुम्ही आताच एका फसव्या साइटवर तुमचा पासवर्ड एंटर केला आहे. Chromium <ph name="WEBSITE_1" /> आणि इतर साइटवर जाण्याची शिफारस करतो जेथे तुम्ही हा पासवर्ड वापरू शकता आणि तो आता बदलू शकता.</translation>
 <translation id="8225771182978767009">ज्या व्यक्तीने हा कॉंप्युटर सेट केला त्या व्यक्तीने ही साइट ब्लॉक करण्याचे निवडले आहे.</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">प्लॅटफॉर्मचे तापमान</translation>
 <translation id="8238581221633243064">पेज नवीन गुप्त टॅबमध्ये उघडा</translation>
 <translation id="8241707690549784388">तुम्ही जे पेज शोधत आहत ते तुम्ही एंटर केलेली माहिती वापरत आहे. त्या पेजकडे परत गेल्यास कदाचित तुम्ही केलेल्या कोणत्याही क्रियेची पुनरावृत्ती होईल. तुम्ही सुरू ठेवू इच्छिता?</translation>
 <translation id="8241712895048303527">या साइटवर ब्लॉक करा</translation>
@@ -1527,6 +1636,7 @@
 <translation id="8261506727792406068">हटवा</translation>
 <translation id="8262952874573525464">एज स्टिच बॉटम</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> म्हणून साइन इन करीत आहे</translation>
+<translation id="8269242089528251720">वेगळे दस्तऐवज/संकलित केलेल्या प्रती</translation>
 <translation id="8269981117540303696">आता तुम्ही खाजगीरीत्या ब्राउझ करू शकता आणि हे डिव्हाइस वापरणारे इतर लोक तुमची ॲक्टिव्हिटी पाहू शकणार नाहीत. तथापि, डाउनलोड आणि बुकमार्क सेव्ह केले जातील.</translation>
 <translation id="8277900682056760511">पेमेंट हँडलर पत्रक उघडलेले आहे</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1540,6 +1650,7 @@
 <translation id="8307358339886459768">Small-Photo</translation>
 <translation id="8308427013383895095">नेटवर्क कनेक्शनसह समस्या असल्यामुळे भाषांतर अयशस्वी झाला.</translation>
 <translation id="831207732689920588">हे पेज संशयास्पद आहे (Chrome ने फ्लॅग केलेले).</translation>
+<translation id="831997045666694187">संध्याकाळी</translation>
 <translation id="8332188693563227489"><ph name="HOST_NAME" /> चा ॲक्सेस नाकारला</translation>
 <translation id="833262891116910667">हायलाइट</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1562,12 +1673,14 @@
 <translation id="8428213095426709021">सेटिंग्ज</translation>
 <translation id="8433057134996913067">हे तुम्हाला बहुतांश वेबसाइट वरून साइन आउट करेल.</translation>
 <translation id="8437238597147034694">&amp;हलवा पूर्ववत करा</translation>
+<translation id="8457125768502047971">अनिश्चित</translation>
 <translation id="8461694314515752532">तुमच्या स्वतःच्या सिंक पासफ्रेजसह सिंक केलेला डेटा एंक्रिप्ट करा</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 क्रेडिट कार्ड}other{# क्रेडिट कार्ड}}</translation>
 <translation id="8473863474539038330">पत्ते आणि बरेच काही</translation>
 <translation id="8479754468255770962">स्टेपल बॉटम लेफ्ट</translation>
 <translation id="8483780878231876732">आपल्या Google खात्यावरून कार्ड वापरण्यासाठी Chrome मध्ये साइन इन करा</translation>
 <translation id="8488350697529856933">यावर लागू होते</translation>
+<translation id="8490137692873530638">स्टॅकर १०</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> नी प्रतिसाद देण्यात बराच वेळ घेतला.</translation>
 <translation id="8503559462189395349">Chrome पासवर्ड</translation>
 <translation id="8503813439785031346">वापरकर्तानाव</translation>
@@ -1578,10 +1691,12 @@
 <translation id="8553075262323480129">भाषांतर करण्यात अयशस्वी कारण पृष्ठाची भाषा निर्धारित करणे शक्य नाही.</translation>
 <translation id="8557066899867184262">CVV तुमच्या कार्डाच्या मागील बाजूस दिलेला असतो.</translation>
 <translation id="8559762987265718583">आपल्या डिव्हाइसची तारीख आणि वेळ (<ph name="DATE_AND_TIME" />) चुकीची असल्याने <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> सह खाजगी कनेक्शन इंस्टॉल केले जाऊ शकले नाही.</translation>
+<translation id="8564182942834072828">वेगळे केलेले दस्तऐवज/संकलित न केलेल्या प्रती</translation>
 <translation id="8564985650692024650">जर तुम्ही तुमच्या <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> पासवर्डचा इतर साइटवर पुन्हा वापर केला असेल तर Chromium तुम्हाला तो रीसेट करण्याची शिफारस करतो.</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" /> मध्ये पृष्ठ अनुवादित करत आहे...</translation>
 <translation id="8574899947864779331">कार्डांची जलद खात्री करण्यासाठी टच आयडी वापरा</translation>
 <translation id="858637041960032120">फोन नंबर जोडा</translation>
+<translation id="8589998999637048520">सर्वोत्तम गुणवत्ता</translation>
 <translation id="860043288473659153">कार्डधारकाचे नाव</translation>
 <translation id="8616822740383114808">या सेटिंगची "<ph name="SETTINGS_PAGE" />" मध्ये "<ph name="ENFORCING_SETTING" />" द्वारे अंमलबजावणी केली जाते</translation>
 <translation id="861775596732816396">आकार ४</translation>
@@ -1589,10 +1704,13 @@
 <translation id="8625384913736129811">या डिव्हाइसवर हे कार्ड सेव्‍ह करा</translation>
 <translation id="8647750283161643317">सर्व डीफॉल्टमध्ये रीसेट करा</translation>
 <translation id="8663226718884576429">ऑर्डर सारांश, <ph name="TOTAL_LABEL" />, आणखी तपशील</translation>
+<translation id="867224526087042813">स्वाक्षरी</translation>
+<translation id="8676424191133491403">विलंब नाही</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, उत्तर, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054"><ph name="PAGE" /> वरील वेबपेज लोड केले जाऊ शकले नाही कारण:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">उपलब्ध</translation>
+<translation id="868922510921656628">प्रति संच पेज</translation>
 <translation id="869891660844655955">कालावधी समाप्ती तारीख</translation>
 <translation id="8703575177326907206">तुमचे <ph name="DOMAIN" /> चे कनेक्शन एंक्रिप्ट केलेले नाही.</translation>
 <translation id="8718314106902482036">पेमेंट पूर्ण झाले नाही</translation>
@@ -1624,8 +1742,10 @@
 <translation id="8866928039507595380">फोल्ड</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">अलीकडे बंद</translation>
+<translation id="8870494189203302833">तोच क्रम ठेवून फेस डाउन</translation>
 <translation id="8874824191258364635">वैध कार्ड नंबर एंटर करा</translation>
 <translation id="8891727572606052622">चुकीचे प्रॉक्सी मोड.</translation>
+<translation id="8894794286471754040">सर्वात प्रथम लॉंग एज</translation>
 <translation id="8903921497873541725">झूम इन करा</translation>
 <translation id="890485472659500557">Engineering-C</translation>
 <translation id="890493561996401738">सूचना बटण काढा, काढण्यासाठी एंटर दाबा, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1674,6 +1794,7 @@
 <translation id="9080712759204168376">मागणी सारांश</translation>
 <translation id="9089260154716455634">कामाच्या तासानंतरचे धोरण:</translation>
 <translation id="9095388113577226029">आणखी भाषा...</translation>
+<translation id="9101630580131696064">ट्रे १</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> तुमची माहिती संरक्षित करण्यासाठी सामान्यतः एंक्रिप्शन वापरते. Chromium ने यावेळी <ph name="SITE" /> शी कनेक्‍ट करण्‍याचा प्रयत्न केला तेव्‍हा, वेबसाइटने असामान्य आणि अयोग्य क्रेडेंशियल परत पाठवले. एकतर आक्रमणकर्ता <ph name="SITE" /> असल्याची बतावणी करण्याचा प्रयत्न करतो तेव्‍हा किंवा वाय-फाय साइन इन स्क्रीनने कनेक्शनमध्ये व्यत्यय आणले तेव्‍हा हे घडू शकते. कोणत्याही डेटाची अदलाबदल करण्यापूर्वी Chromium ने कनेक्शन थांबविल्यामुळे तुमची माहिती अद्याप सुरक्षित आहे.</translation>
 <translation id="9106062320799175032">बिलिंग पत्ता जोडा</translation>
 <translation id="9114524666733003316">कार्डची निश्चिती करत आहे...</translation>
@@ -1689,6 +1810,7 @@
 <translation id="9169664750068251925">या साइटवर नेहमी अवरोधित करा</translation>
 <translation id="9170848237812810038">&amp;पूर्ववत करा</translation>
 <translation id="9171296965991013597">ॲप सोडायचे?</translation>
+<translation id="9173282814238175921">एक दस्तऐवज/नवीन पत्रक</translation>
 <translation id="917450738466192189">सर्व्हरचे सर्टिफिकेट चुकीचे आहे.</translation>
 <translation id="9174917557437862841">टॅब स्विच बटण, या टॅबवर जाण्यासाठी एंटर दाबा</translation>
 <translation id="9183302530794969518">Google दस्तऐवज</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 4a5d070..b4053ca6 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -194,7 +194,7 @@
 <translation id="1743520634839655729">Untuk membayar dengan lebih cepat selepas ini, simpan kad, nama dan alamat pengebilan anda ke Akaun Google dan ke peranti ini.</translation>
 <translation id="1743570585616704562">Tidak dikenali</translation>
 <translation id="1745880797583122200">Penyemak imbas anda diurus</translation>
-<translation id="1746113442205726301">Imej Y shift</translation>
+<translation id="1746113442205726301">Anjakan Y imej</translation>
 <translation id="17513872634828108">Buka tab</translation>
 <translation id="1752021286346845558">Peti mel 8</translation>
 <translation id="1753706481035618306">Nombor halaman</translation>
@@ -418,14 +418,14 @@
 <translation id="2742870351467570537">Buang item yang dipilih</translation>
 <translation id="277133753123645258">Kaedah penghantaran</translation>
 <translation id="277499241957683684">Tiada rekod peranti</translation>
-<translation id="2775884851269838147">Halaman pertama dicetak</translation>
+<translation id="2775884851269838147">Cetakan halaman pertama</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">Sambungan ditetapkan semula.</translation>
 <translation id="2792012897584536778">Pentadbir peranti ini telah menyediakan sijil keselamatan yang mungkin membolehkan mereka melihat kandungan tapak web yang anda lawati.</translation>
 <translation id="2799020568854403057">Tapak yang akan disemak imbas mengandungi apl yang memudaratkan</translation>
 <translation id="2799223571221894425">Lancarkan semula</translation>
 <translation id="2803306138276472711">Penyemakan Selamat Google <ph name="BEGIN_LINK" />mengesan perisian hasad<ph name="END_LINK" /> pada <ph name="SITE" /> baru-baru ini. Tapak web yang biasanya selamat kadangkala dijangkiti oleh perisian hasad.</translation>
-<translation id="2807052079800581569">Kedudukan imej Y</translation>
+<translation id="2807052079800581569">Kedudukan Y imej</translation>
 <translation id="2809804249696361569">Kedua-dua helaian</translation>
 <translation id="2824775600643448204">Bar alamat dan carian</translation>
 <translation id="2826760142808435982">Sambungan disulitkan dan disahkan menggunakan <ph name="CIPHER" /> dan menggunakan <ph name="KX" /> sebagai mekanisme pertukaran kunci.</translation>
@@ -647,7 +647,7 @@
 <translation id="3789155188480882154">Saiz 16</translation>
 <translation id="3797522431967816232">Prc3 (Sampul Surat)</translation>
 <translation id="3799805948399000906">Fon diminta</translation>
-<translation id="3807366285948165054">Imej X shift</translation>
+<translation id="3807366285948165054">Anjakan X imej</translation>
 <translation id="3807873520724684969">Kandungan berbahaya disekat.</translation>
 <translation id="3808375843007691220">Amaran: Ciri percubaan di hadapan!</translation>
 <translation id="3810973564298564668">Urus</translation>
@@ -696,7 +696,7 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">Konfigurasi proksi ditetapkan kepada penggunaaan URL skrip .pac, bukannya pelayan proksi tetap.</translation>
 <translation id="4082393374666368382">Tetapan - Pengurusan</translation>
-<translation id="4088981014127559358">Sisi 1 imej Y shift</translation>
+<translation id="4088981014127559358">Anjakan Y sisi 1 imej</translation>
 <translation id="4098354747657067197">Tapak menipu di hadapan</translation>
 <translation id="4101413244023615925">Teks dan grafik</translation>
 <translation id="4103249731201008433">Nombor siri peranti tidak sah</translation>
@@ -786,7 +786,7 @@
 <translation id="4372948949327679948">Nilai <ph name="VALUE_TYPE" /> yang dijangka.</translation>
 <translation id="4377125064752653719">Anda cuba untuk mencapai <ph name="DOMAIN" />, tetapi sijil yang diberi pelayan telah dibatalkan oleh pengeluarnya. Ini bermakna bahawa bukti kelayakan keselamatan yang diberi pelayan sememangnya tidak harus dipercayai. Anda mungkin berkomunikasi dengan penyerang.</translation>
 <translation id="4378154925671717803">Telefon</translation>
-<translation id="4390472908992056574">Penuh</translation>
+<translation id="4390472908992056574">Bertepi</translation>
 <translation id="4406896451731180161">hasil carian</translation>
 <translation id="4408413947728134509">Kuki <ph name="NUM_COOKIES" /></translation>
 <translation id="4415426530740016218">Alamat Pengambilan</translation>
@@ -1034,7 +1034,7 @@
 <translation id="552553974213252141">Adakah teks diekstrak dengan betul?</translation>
 <translation id="55293785478302737">Jahitan tepi</translation>
 <translation id="553484882784876924">Prc6 (Sampul Surat)</translation>
-<translation id="5539243836947087108">Sisa</translation>
+<translation id="5539243836947087108">Rakit</translation>
 <translation id="5540224163453853">Tidak menemui artikel yang diminta.</translation>
 <translation id="5541086400771735334">Peti mel 7</translation>
 <translation id="5541546772353173584">Tambahkan E-mel</translation>
@@ -1061,13 +1061,13 @@
 <translation id="5632627355679805402">Data anda disulitkan dengan <ph name="BEGIN_LINK" />kata laluan Google<ph name="END_LINK" /> anda pada <ph name="TIME" />. Masukkan kata laluan itu untuk memulakan penyegerakan.</translation>
 <translation id="5633066919399395251">Penyerang yang sedang berada di <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mungkin cuba memasang atur cara berbahaya pada komputer anda. Atur cara tersebut boleh mencuri atau memadamkan maklumat anda (contohnya, foto, kata laluan, mesej dan kad kredit). <ph name="BEGIN_LEARN_MORE_LINK" />Ketahui lebih lanjut<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">Kandungan mengelirukan disekat.</translation>
-<translation id="5644090287519800334">Sisi 1 imej X shift</translation>
+<translation id="5644090287519800334">Anjakan X sisi 1 imej</translation>
 <translation id="5645854190134202180">Syif kedua</translation>
 <translation id="5659593005791499971">E-mel</translation>
 <translation id="5663614846592581799">9x11 (Sampul Surat)</translation>
 <translation id="5663955426505430495">Pentadbir peranti ini telah memasang sambungan bagi fungsi tambahan. Sambungan mempunyai akses kepada sesetengah data anda.</translation>
 <translation id="5675650730144413517">Halaman ini tidak berfungsi</translation>
-<translation id="568292603005599551">Kedudukan imej X</translation>
+<translation id="568292603005599551">Kedudukan X imej</translation>
 <translation id="5684874026226664614">Op. Halaman ini tidak dapat diterjemahkan.</translation>
 <translation id="5685654322157854305">Tambahkan Alamat Penghantaran</translation>
 <translation id="5689199277474810259">Eksport ke JSON</translation>
@@ -1372,7 +1372,7 @@
 <translation id="7135130955892390533">Tunjukkan status</translation>
 <translation id="7138472120740807366">Kaedah penghantaran</translation>
 <translation id="7139724024395191329">Amiriah</translation>
-<translation id="714064300541049402">Sisi 2 imej X shift</translation>
+<translation id="714064300541049402">Anjakan X sisi 2 imej</translation>
 <translation id="7152423860607593928">Number-14 (Sampul Surat)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> lagi}other{<ph name="PAYMENT_METHOD_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> lagi}}</translation>
 <translation id="7153618581592392745">Gandaria</translation>
@@ -1391,7 +1391,7 @@
 <translation id="721197778055552897"><ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /> mengenai masalah ini.</translation>
 <translation id="7219179957768738017">Sambungan menggunakan <ph name="SSL_VERSION" />.</translation>
 <translation id="7220786058474068424">Memproses</translation>
-<translation id="7233592378249864828">Helaian pengesahan cetakan</translation>
+<translation id="7233592378249864828">Cetak helaian pengesahan</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">Tapak di hadapan mengandungi perisian hasad</translation>
 <translation id="724975217298816891">Masukkan tarikh tamat tempoh dan CVC untuk <ph name="CREDIT_CARD" /> bagi mengemas kini butiran kad anda. Setelah anda mengesahkan, butiran kad anda akan dikongsi dengan tapak ini.</translation>
@@ -1479,7 +1479,7 @@
 <translation id="7569983096843329377">Hitam</translation>
 <translation id="7575207903026901870">Alih keluar butang Cadangan, tekan Enter untuk mengalih keluar cadangan ini</translation>
 <translation id="7578104083680115302">Bayar dengan cepat di tapak dan apl merentas peranti menggunakan kad yang telah disimpan dengan Google.</translation>
-<translation id="7581199239021537589">Sisi 2 imej Y shift</translation>
+<translation id="7581199239021537589">Anjakan Y sisi 2 imej</translation>
 <translation id="7592362899630581445">Sijil pelayan melanggar kekangan nama.</translation>
 <translation id="7598391785903975535">Kurang daripada <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> tidak dapat mengendalikan permintaan ini pada masa ini.</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index 37433748..53d9b15 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -650,7 +650,7 @@
 <translation id="3808375843007691220">သတိ− နောက်ဖွင့်မည့်အရာသည် စမ်းသပ်ဝန်ဆောင်မှုများဖြစ်သည်။</translation>
 <translation id="3810973564298564668">စီမံကွပ်ကဲရန်</translation>
 <translation id="382518646247711829">သင်သည် ပရောက်စီ ဆာဗာ သုံးနေလျှင်...</translation>
-<translation id="3827112369919217609">လုံးဝ</translation>
+<translation id="3827112369919217609">အပြည့်အဝ</translation>
 <translation id="3828924085048779000">စကားစုဝှက် ပလာ ဖြစ်မှု ခွင့်မပြုပါ။</translation>
 <translation id="3831915413245941253"><ph name="ENROLLMENT_DOMAIN" /> က နောက်ထပ်ဝန်ဆောင်မှုများအတွက် နောက်ဆက်တွဲများကို စနစ်ထည့်သွင်းထားသည်။ နောက်ဆက်တွဲများက သင့်ဒေတာအချို့ကို ဝင်သုံးခွင့်ရှိပါသည်။</translation>
 <translation id="3832522519263485449">ဘယ်ဘက်တွင် အများအပြားဖောက်ရန်</translation>
@@ -694,7 +694,7 @@
 <translation id="4075941231477579656">ထိတွေ့မှု ID</translation>
 <translation id="4079302484614802869">ပရောက်စီ စီစဉ်ထားမှုမှာ .pac စာတန်း URL ကို သုံးရန် ဖြစ်ပြီး၊ သတ်မှတ် ပရောက်စီ ဆာဗာများ မဟုတ်ပါ။</translation>
 <translation id="4082393374666368382">ဆက်တင်များ − စီမံခန့်ခွဲမှု</translation>
-<translation id="4088981014127559358">အခြမ်း ၁ ပုံ ဒေါင်လိုက် အရွှေ့</translation>
+<translation id="4088981014127559358">ဘေး ၁ ပုံ ဒေါင်လိုက် အရွှေ့</translation>
 <translation id="4098354747657067197">ရှေ့တွင် လှည့်ဖြားတတ်သော ဆိုက်ရှိနေသည်</translation>
 <translation id="4101413244023615925">စာသားနှင့် ဂရပ်ဖစ်</translation>
 <translation id="4103249731201008433">စက်ပစ္စည်း၏ နံပါတ်စဉ် မမှန်ကန်ပါ။</translation>
@@ -829,7 +829,7 @@
 <translation id="4635654612248442824">ဝဘ်ဆိုက် <ph name="ORIGIN" /> က ၎င်း၏တောင်းဆိုချက် အားလုံးသို့
     ရင်းမြစ် မူဝါဒထည့်သွင်းရန် သတ်မှတ်ထားသော်လည်း လက်ရှိတွင် ဤမူဝါဒကို ထည့်သွင်း၍မရပါ။</translation>
 <translation id="464342062220857295">ရှာဖွေရေး ဝန်ဆောင်မှုများ</translation>
-<translation id="4644670975240021822">ပြောင်းပြန်အစီအစဉ်ဖြင့် မှောက်ထားရန်</translation>
+<translation id="4644670975240021822">ပြောင်းပြန်အစဉ်ဖြင့် မှောက်ထားရန်</translation>
 <translation id="4646534391647090355">ထိုနေရာသို့ ယခုသွားရန်</translation>
 <translation id="4658638640878098064">ညာဘက်ထိပ်တွင် ချုပ်စက်ဖြင့် ချုပ်ရန်</translation>
 <translation id="4668929960204016307">,</translation>
@@ -838,7 +838,7 @@
 <translation id="4690462567478992370">မမှန်ကန်သည့် လက်မှတ် သုံးမှုကို ရပ်လိုက်ပါ</translation>
 <translation id="4691835149146451662">Architecture-A (စာအိတ်)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
-<translation id="4702504834785592287">အခြမ်း</translation>
+<translation id="4702504834785592287">ဘေး</translation>
 <translation id="4708268264240856090">သင့်ချိတ်ဆက်မှု ကြားဝင်စွတ်ဖက်ခြင်း ခံခဲ့ရပါသည်</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />ဝင်းဒိုးကွန်ရက်ပြဿနာရှာဖွေမှု ပြုလုပ်ပါ<ph name="END_LINK" /></translation>
@@ -1011,7 +1011,7 @@
 <translation id="5430298929874300616">စာညှပ် ဖယ်ရှားရန်</translation>
 <translation id="5431657950005405462">သင့်ဖိုင်ကို မတွေ့ပါ</translation>
 <translation id="5439770059721715174">Schema မှန်ကန်ကြောင်းအတည်ပြုမှု မှားယွင်းခြင်း "<ph name="ERROR_PATH" />": <ph name="ERROR" /></translation>
-<translation id="5443468954631487277">ပြောင်းပြန်အစီအစဉ်ဖြင့် အပေါ်လှန်ထားရန်</translation>
+<translation id="5443468954631487277">ပြောင်းပြန်အစဉ်ဖြင့် အပေါ်လှန်ထားရန်</translation>
 <translation id="5452270690849572955">ဤ <ph name="HOST_NAME" /> စာမျက်နှာကို မတွေ့ပါ</translation>
 <translation id="5455374756549232013">မူဝါဒ အချိန်ထုမှု ညံ့ဖျင်း</translation>
 <translation id="5457113250005438886">မမှန်ပါ</translation>
@@ -1060,7 +1060,7 @@
 <translation id="5632627355679805402">သင့်ဒေတာများကို သင်၏ <ph name="BEGIN_LINK" />Google စကားဝှက်<ph name="END_LINK" />ဖြင့် <ph name="TIME" /> တွင် အသွင်ဝှက်ထားပါသည်။ စင့်ခ်စလုပ်ရန် ၎င်းကိုထည့်ပါ။</translation>
 <translation id="5633066919399395251"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ပေါ်ရှိ လက်ရှိတိုက်ခိုက်သူများသည် သင်၏ အချက်အလက်များ (ဥပမာ- ဓာတ်ပုံများ၊ စကားဝှက်များ၊ စာတိုများနှင့် ခရက်ဒစ်ကတ်အချက်အလက်များ) ကို ခိုးယူခြင်း သို့မဟုတ် ဖျက်ခြင်းတို့ ပြုလုပ်နိုင်သည့် အန္တရာယ်ရှိသောပရိုဂရမ်များကို သင့်ကွန်ပျူတာထဲတွင် ထည့်သွင်းရန် ကြိုးပမ်းနိုင်ပါသည်။ <ph name="BEGIN_LEARN_MORE_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">လှည့်ဖြားတတ်သည့် အကြောင်းအရာများကို ပိတ်ထားပါသည်။</translation>
-<translation id="5644090287519800334">အခြမ်း ၁ ပုံ အလျားလိုက် အရွှေ့</translation>
+<translation id="5644090287519800334">ဘေး ၁ ပုံ အလျားလိုက် အရွှေ့</translation>
 <translation id="5645854190134202180">ဒုတိယ အရွှေ့</translation>
 <translation id="5659593005791499971">အီးမေးလ်</translation>
 <translation id="5663614846592581799">၉x၁၁ (စာအိတ်)</translation>
@@ -1177,7 +1177,7 @@
 <translation id="6157877588268064908">ပစ္စည်းပို့ခြင်းနည်းလမ်းနှင့် သတ်မှတ်ချက်ချက်များကို ကြည့်ရန် လိပ်စာရွေးပါ</translation>
 <translation id="6165508094623778733">ပိုမိုလေ့လာရန်</translation>
 <translation id="6177128806592000436">ဤဝဘ်ဆိုက်သို့ သင်၏ချိတ်ဆက်ထားမှုသည် လုံခြုံမှုမရှိပါ</translation>
-<translation id="6180316780098470077">ပြန်စမ်းကြည့်ချိန်တစ်ခုနှင့်တစ်ခု ကြားကာလ</translation>
+<translation id="6180316780098470077">ပြန်စမ်းချိန် ကြားကာလ</translation>
 <translation id="6196640612572343990">ပြင်ပကုမ္ပဏီကွတ်ကီးများကို ပိတ်ဆို့မည်</translation>
 <translation id="6203231073485539293">သင့်အင်တာနက် ချိတ်ဆက်မှုကို စစ်ပါ</translation>
 <translation id="6218753634732582820">Chromium ထဲမှ လိပ်စာကို ဖယ်ရှားရမလား။</translation>
@@ -1336,7 +1336,7 @@
 <translation id="6964255747740675745">ကွန်ရက် စီစဉ်သတ်မှတ်မှု စိစစ်၍မရပါ (JSON မမှန်ကန်ပါ)။</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6965978654500191972">စက်ပစ္စည်း</translation>
-<translation id="696703987787944103">သိရှိမှုအလိုက်</translation>
+<translation id="696703987787944103">လိုက်လျောညီထွေ</translation>
 <translation id="6970216967273061347">ဒေသ</translation>
 <translation id="6973656660372572881">တိကျသည့် ပရောက်စီဆာဗာနှင့် .pac script URL တို့နှစ်ခုလုံး သတ်မှတ်ပြီးပါပြီ။</translation>
 <translation id="6973932557599545801">ကျွန်ုပ် ကူညီ၍မရပါ၊ ကိုယ်တိုင် ဆက်လုပ်ပါ။</translation>
@@ -1370,7 +1370,7 @@
 <translation id="7135130955892390533">အခြေအနေ ပြရန်</translation>
 <translation id="7138472120740807366">ပို့ရန် နည်းလမ်း</translation>
 <translation id="7139724024395191329">ယေမီရိတ်</translation>
-<translation id="714064300541049402">အခြမ်း ၂ ပုံ အလျားလိုက် အရွှေ့</translation>
+<translation id="714064300541049402">ဘေး ၂ ပုံ အလျားလိုက် အရွှေ့</translation>
 <translation id="7152423860607593928">နံပါတ်-၁၄ (စာအိတ်)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> နှင့် နောက်ထပ် <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ခု}other{<ph name="PAYMENT_METHOD_PREVIEW" /> နှင့် နောက်ထပ် <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ခု}}</translation>
 <translation id="7153618581592392745">လာဗင်ဒါ</translation>
@@ -1478,7 +1478,7 @@
 <translation id="7569983096843329377">အနက်ရောင်</translation>
 <translation id="7575207903026901870">'အကြံပြုချက်' ခလုတ်ကို ဖယ်ရှားခြင်း၊ ဤအကြံပြုချက်ကို ဖယ်ရှားရန် Enter ကို နှိပ်ပါ</translation>
 <translation id="7578104083680115302">သင်က Google နှင့် သိမ်းဆည်းခဲ့သည့် ကဒ်များကို သုံးပြီး ကိရိယာများထဲတွင် ဆိုက်များ နှင့် အက်ပ်များ ပေါ်မှာ လျင်မြန်စွာ ငွေပေးချေပါ။</translation>
-<translation id="7581199239021537589">အခြမ်း ၂ ပုံ ဒေါင်လိုက် အရွှေ့</translation>
+<translation id="7581199239021537589">ဘေး ၂ ပုံ ဒေါင်လိုက် အရွှေ့</translation>
 <translation id="7592362899630581445">ဆာဗာ၏ အသိမှတ်ပြုလက်မှတ် သည် အမည်ကန့်သတ်ချက် ကျော်လွန်နေပါသည်။</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" />ထက် နည်းသည်</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> သည်လောလောဆယ်တွင် ဤတောင်းဆိုမှုကို မကိုင်သွယ်နိုင်ပါ။</translation>
@@ -1507,7 +1507,7 @@
 <translation id="7682287625158474539">ပစ္စည်းပို့ရန်</translation>
 <translation id="7687186412095877299">သင်သိမ်းထားသော ငွေပေးချေနည်းလမ်းများဖြင့် ငွေပေးချေမှု ပုံစံများကို ဖြည့်သည်</translation>
 <translation id="7687305263118037187">ပြန်စမ်းကြည့်ချိန် ကုန်သွားသည်</translation>
-<translation id="7693583928066320343">စာမျက်နှာအစီအစဉ် ရရှိထားသည်</translation>
+<translation id="7693583928066320343">စာမျက်နှာအစဉ် ရရှိထားသည်</translation>
 <translation id="7697066736081121494">Prc8 (စာအိတ်)</translation>
 <translation id="769721561045429135">လက်ရှိတွင် ဤစက်ပစ္စည်းပေါ်၌ အသုံးပြုနိုင်သည့် ကတ်များသာရှိပါသည်။ ကတ်များ ပြန်စစ်ဆေးရန် 'ရှေ့ဆက်ရန်' ကိုနှိပ်ပါ။</translation>
 <translation id="7699293099605015246">သတင်းဆောင်းပါးများကို လောလောဆယ် မရနိုင်သေးပါ</translation>
@@ -1528,7 +1528,7 @@
 <translation id="7764225426217299476">လိပ်စာများ ထည့်သွင်းပါ</translation>
 <translation id="7766518757692125295">အနားသတ်</translation>
 <translation id="7770259615151589601">သတ်မှတ်ထားသော အရှည်</translation>
-<translation id="7773005668374414287">အစီအစဉ်တစ်ခုတည်းဖြင့် အပေါ်လှန်ထားရန်</translation>
+<translation id="7773005668374414287">တူညီသည့်အစဉ်ဖြင့် အပေါ်လှန်ထားရန်</translation>
 <translation id="777702478322588152">နယ်​မြေ</translation>
 <translation id="7791196057686275387">စည်းရန်</translation>
 <translation id="7791543448312431591">ထည့်ရန်</translation>
@@ -1742,7 +1742,7 @@
 <translation id="8866928039507595380">စာရွက်ခေါက်ရန်</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">မကြာမီက ပိတ်ခဲ့</translation>
-<translation id="8870494189203302833">အစီအစဉ်တစ်ခုတည်းဖြင့် မှောက်ထားရန်</translation>
+<translation id="8870494189203302833">တူညီသောအစဉ်ဖြင့် မှောက်ထားရန်</translation>
 <translation id="8874824191258364635">မှန်ကန်သည့် ကဒ်နံပါတ်ကို ထည့်ပါ</translation>
 <translation id="8891727572606052622">မမှန်ကန်သည့် ပရောက်စီမုဒ်။</translation>
 <translation id="8894794286471754040">ရှည်သည့်အနားနှင့် စတင်ရန်</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 46577a0..0e12680 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">डेलिभरीको विधि छनौट गर्नुहोस्</translation>
 <translation id="2465688316154986572">स्टिच</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />नेटवर्क सम्बन्धी निदान चलाएर हेर्नुहोस्<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">१ देखि N सम्मको अर्डर</translation>
+<translation id="2469153820345007638">१ देखि N सम्मको क्रम</translation>
 <translation id="2473195200299095979">यो पृष्ठलाई अनुवाद गर्नुहोस्</translation>
 <translation id="2479410451996844060">अवैध खोज युआरएल</translation>
 <translation id="2482878487686419369">सूचनाहरू</translation>
@@ -410,7 +410,7 @@
 <translation id="2742870351467570537">चयन गरिएका वस्तुहरू हटाउनुहोस्</translation>
 <translation id="277133753123645258">ढुवानीको विधि</translation>
 <translation id="277499241957683684">हराइएको यन्त्रको रेकर्ड</translation>
-<translation id="2775884851269838147">पृष्ठको पहिलो मुद्रण</translation>
+<translation id="2775884851269838147">प्रिन्ट गरिनु पर्ने पहिलो पृष्ठ</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">जडान पुनः कायम भयो ।</translation>
 <translation id="2792012897584536778">यस यन्त्रका प्रशासकहरूले सुरक्षासम्बन्धी प्रमाणपत्रहरू सेटअप गरिसकेका हुँदा यसले उनीहरूलाई तपाईंले भ्रमण गर्नुहुने वेबसाटइका सामग्री हेर्न दिन सक्छ।</translation>
@@ -623,13 +623,13 @@
 <translation id="3765032636089507299">सुरक्षित ब्राउजिङ पृष्ठ निर्माणाधीन अवस्थामा छ।</translation>
 <translation id="3765588406864124894">मेलबक्स ९</translation>
 <translation id="3778403066972421603">तपाईं यो कार्डलाई आफ्नो Google खाता र यस यन्त्रमा सुरक्षित गर्न चाहनुहुन्छ?</translation>
-<translation id="3780694243617746492">आउटपुट डालो</translation>
+<translation id="3780694243617746492">आउटपुट बिन</translation>
 <translation id="3781428340399460090">गाढा गुलाबी</translation>
 <translation id="3783418713923659662">मास्टरकार्ड</translation>
 <translation id="3787705759683870569"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /> मा म्याद सकिन्छ</translation>
 <translation id="3789155188480882154">आकार १६</translation>
 <translation id="3797522431967816232">Prc3 (Envelope)</translation>
-<translation id="3799805948399000906">फन्ट अनुरोध गरियो</translation>
+<translation id="3799805948399000906">फन्टको नाम मागियो</translation>
 <translation id="3807366285948165054">छविको X सिफ्ट</translation>
 <translation id="3807873520724684969">हानिकारक सामग्रीमाथि रोक लगाइयो।</translation>
 <translation id="3808375843007691220">चेतावनी: अगाडि परीक्षणको चरणमा रहेका सुविधाहरू छन्!</translation>
@@ -769,7 +769,7 @@
 <translation id="4372948949327679948">अपेक्षित <ph name="VALUE_TYPE" /> मूल्य।</translation>
 <translation id="4377125064752653719">तपाइँले <ph name="DOMAIN" /> मा पुग्ने पर्यास गर्नुभयो, तर सर्भरले प्रस्तुत गरेको प्रमाणपत्र त्यसको जारीकर्ताद्वारा रिभोक गरिएको छ। यसको अर्थ सर्भरले प्रस्तुत गरेको सुरक्षा पत्यारपत्रहरू विश्वास गरिनुहुन्न। तपाइँ एक आक्रमणकर्ता सँग सञ्चार गरिरहनुभएको हुन सक्छ।</translation>
 <translation id="4378154925671717803">फोन</translation>
-<translation id="4390472908992056574">किनारा</translation>
+<translation id="4390472908992056574">बिट</translation>
 <translation id="4406896451731180161">खोजका परिणाम</translation>
 <translation id="4408413947728134509"><ph name="NUM_COOKIES" /> कुकीहरू</translation>
 <translation id="4415426530740016218">पिकअप गर्ने ठेगाना</translation>
@@ -812,7 +812,7 @@
 <translation id="4628948037717959914">तस्बिर</translation>
 <translation id="4635654612248442824">यो साइट <ph name="ORIGIN" /> ले यसका सबै अनुरोधहरूमा कुनै मूल नीति लागू हुने कुराको अनुरोध गरेको छ तर यो नीति हाल लागू गर्न सकिँदैन।</translation>
 <translation id="464342062220857295">खोजसम्बन्धी सुविधाहरू</translation>
-<translation id="4644670975240021822">विपरीत अर्डर तर तलतिर फर्काएर</translation>
+<translation id="4644670975240021822">विपरीत क्रम तर तलतिर फर्काएर</translation>
 <translation id="4646534391647090355">मलाई अहिले नै त्यहाँ लैजानुहोस्</translation>
 <translation id="4658638640878098064">सिरानको बायाँपट्टि स्टिच</translation>
 <translation id="4668929960204016307">,</translation>
@@ -994,7 +994,7 @@
 <translation id="5430298929874300616">पुस्तकचिनो हटाउनुहोस्</translation>
 <translation id="5431657950005405462">तपाईंको फाइल फेला परेन</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />":<ph name="ERROR" /> मा स्किमा रुजू त्रुटि</translation>
-<translation id="5443468954631487277">विपरीत अर्डर तर माथितिर फर्काएर</translation>
+<translation id="5443468954631487277">विपरीत क्रम तर माथितिर फर्काएर</translation>
 <translation id="5452270690849572955">यो <ph name="HOST_NAME" /> को पृष्ठ फेला पार्न सक्दैन</translation>
 <translation id="5455374756549232013">खराब नीति टाइमस्ट्याम्प</translation>
 <translation id="5457113250005438886">अवैध</translation>
@@ -1118,7 +1118,7 @@
 <translation id="5990559369517809815">सर्भरमा अनुरोधहरू एक विस्तारद्वारा रोकिएको छ।</translation>
 <translation id="5992691462791905444">इन्जिनियरिङ जेड फोल्ड</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' मध्ये <ph name="RESULT_COUNT" /></translation>
-<translation id="6008122969617370890">N देखि १ सम्मको अर्डर</translation>
+<translation id="6008122969617370890">N देखि १ सम्मको क्रम</translation>
 <translation id="6008256403891681546">जेसिबी</translation>
 <translation id="6014801569448771146">आफ्ना पासवर्डहरूको जाँच गर्नुहोस्</translation>
 <translation id="6015796118275082299">वर्ष</translation>
@@ -1137,7 +1137,7 @@
 <translation id="6040143037577758943">बन्द गर्नुहोस्</translation>
 <translation id="6041777658117377052">कक्षको तापक्रम</translation>
 <translation id="6044573915096792553">आकार १२</translation>
-<translation id="6045164183059402045">कार्यान्वयनसम्बन्धी टेम्प्लेट</translation>
+<translation id="6045164183059402045">इम्पोजिसन टेम्प्लेट</translation>
 <translation id="6047233362582046994">तपाईं आफ्नो सुरक्षासम्बन्धी जोखिमहरूको बारेमा बुझ्नुहुन्छ भने, तपाईं हानिकारक अनुप्रयोगहरू हटाउनुअघि <ph name="BEGIN_LINK" />यो साइट<ph name="END_LINK" /> मा जान सक्नुहुन्छ।</translation>
 <translation id="6047927260846328439">यो सामग्रीले तपाईंलाई सफ्टवेयर स्थापना गर्न लगाएर वा व्यक्तिगत जानकारी खुलाउन लगाएर झुक्याउन सक्छ। <ph name="BEGIN_LINK" />जे भए पनि देखाउनुहोस्‌<ph name="END_LINK" /></translation>
 <translation id="6049488691372270142">पृष्ठको डेलिभरी</translation>
@@ -1490,7 +1490,7 @@
 <translation id="7682287625158474539">सिपिङ</translation>
 <translation id="7687186412095877299">आफ्ना सुरक्षित गरिएका भुक्तानी विधिहरूका सहयोगले भुक्तानी फारमहरू भर्नुहोस्</translation>
 <translation id="7687305263118037187">पुन: प्रयास गर्ने समय समाप्त भयो</translation>
-<translation id="7693583928066320343">पृष्ठसम्बन्धी प्राप्त भएको अर्डर</translation>
+<translation id="7693583928066320343">पृष्ठको क्रम प्राप्त भयो</translation>
 <translation id="7697066736081121494">Prc8 (Envelope)</translation>
 <translation id="769721561045429135">यस बेला, तपाईंसँग यस यन्त्रमा मात्र प्रयोग गर्न मिल्ने कार्डहरू छन्। कार्डहरूको समीक्षा गर्न जारी राख्नुहोस् नामक बटनमा क्लिक गर्नुहोस्।</translation>
 <translation id="7699293099605015246">अहिले लेखहरू उपलब्ध छैनन्</translation>
@@ -1511,7 +1511,7 @@
 <translation id="7764225426217299476">ठेगाना थप्नुहोस्</translation>
 <translation id="7766518757692125295">स्कर्ट</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
-<translation id="7773005668374414287">उही अर्डर तर माथितिर फर्काएर</translation>
+<translation id="7773005668374414287">उही क्रम तर माथितिर फर्काएर</translation>
 <translation id="777702478322588152">प्रशासकिय क्षेत्र</translation>
 <translation id="7791196057686275387">गाँठो</translation>
 <translation id="7791543448312431591">थप्नुहोस्</translation>
@@ -1688,7 +1688,7 @@
 <translation id="8647750283161643317">सबैलाई पुर्वनिर्धारितमा रिसेट गर्नुहोस्</translation>
 <translation id="8663226718884576429">अर्डरको सारांश, <ph name="TOTAL_LABEL" />, थप विवरण</translation>
 <translation id="867224526087042813">हस्ताक्षर</translation>
-<translation id="8676424191133491403">विलम्ब छैन</translation>
+<translation id="8676424191133491403">विलम्बरहित</translation>
 <translation id="8680536109547170164"><ph name="QUERY" /> , उत्तर, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054"><ph name="PAGE" /> मा भएको वेबपृष्ठ लोड गर्न सकिएन किनभने:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
@@ -1725,7 +1725,7 @@
 <translation id="8866928039507595380">फोल्ड</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">हालै बन्द गरिएको</translation>
-<translation id="8870494189203302833">उही अर्डर तर तलतिर फर्काएर</translation>
+<translation id="8870494189203302833">उही क्रम तर तलतिर फर्काएर</translation>
 <translation id="8874824191258364635">मान्य कार्ड नम्बर प्रविष्टि गर्नुहोस्</translation>
 <translation id="8891727572606052622">अवैध प्रोक्सी मोड।</translation>
 <translation id="8894794286471754040">पहिले लामो किनारा</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index d398ac42..f8aa626 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">ଏବେ ନୁହେଁ</translation>
 <translation id="1010200102790553230">ପରେ ପୃଷ୍ଠା ଲୋଡ୍‌ କରନ୍ତୁ</translation>
 <translation id="1015730422737071372">ଅତିରିକ୍ତ ବିବରଣୀ ପ୍ରଦାନ କରନ୍ତୁ</translation>
+<translation id="1019413721762100891">ବନ୍ଦ ଅଛି</translation>
 <translation id="1021110881106174305">ସ୍ୱୀକାର କରାଯାଇଥିବା କାର୍ଡଗୁଡ଼ିକ</translation>
 <translation id="1021753677514347426">ଆପଣ କିମ୍ବା ଅନ୍ୟ କେହି ଜଣେ ଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ଇନଷ୍ଟଲ୍ କରିଥିବା ଏକ ସାର୍ଟିଫିକେଟ୍ ଯୋଗୁଁ ଏହି ସମସ୍ୟାଟି ହୋଇଥାଏ। ସାର୍ଟିଫିକେଟ୍‍ଟି ନେଟ୍‍ୱାର୍କଗୁଡ଼ିକର ନିରୀକ୍ଷଣ ଏବଂ ଗତିରୋଧ ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଇଥାଏ ବୋଲି ଜଣାଯାଏ ଏବଂ Chromium ଏହାକୁ ବିଶ୍ୱାସ କରେ ନାହିଁ। ଯଦିଓ କୌଣସି ସ୍କୁଲ୍ କିମ୍ବା କମ୍ପାନୀ ନେଟ୍‍ୱାର୍କ ପରି ନିରୀକ୍ଷଣ ପାଇଁ କିଛି ବୈଧ ଉଦାହରଣ ବିଦ୍ୟମାନ ଅଛି, Chromium ଏହା ସୁନିଶ୍ଚିତ କରିବାକୁ ଚାହେଁ ଯେ, ଆପଣ ଏହାକୁ ବନ୍ଦ ନକରିପାରିଲେ ମଧ୍ୟ ଏହା ହେଉଥିବା ବିଷୟରେ ଅବଗତ ରୁହନ୍ତୁ। ୱେବ୍ ଆକ୍ସେସ୍ କରିପାରୁଥିବା ଯେ କୌଣସି ବ୍ରାଉଜର୍ କିମ୍ବା ଆପ୍ଲିକେସନ୍‍‍ରେ ନିରୀକ୍ଷଣ ହୋଇପାରେ।</translation>
 <translation id="1032854598605920125">ବାମରୁ ଡାହାଣକୁ ଘୂରାନ୍ତୁ</translation>
 <translation id="1036348656032585052">ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="1038842779957582377">ଅଜ୍ଞାତ ନାମ</translation>
+<translation id="1041998700806130099">ଜବ୍ ସିଟ୍ ମେସେଜ୍</translation>
 <translation id="1050038467049342496">ଅନ୍ୟ ଆପ୍‍ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="1055184225775184556">ଯୋଗ କରାଯାଇଥିବା କାର୍ଯ୍ୟକୁ &amp;ପୂର୍ବବତ୍ କରନ୍ତୁ</translation>
 <translation id="1056898198331236512">ଚେତାବନୀ</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">ଆଦୌ ସେଭ୍‍ କରାଯାଇନାହିଁ</translation>
 <translation id="1062160989074299343">Prc10 (ଏନଭଲପ୍)</translation>
 <translation id="106701514854093668">ଡେସ୍କଟପ୍ ବୁକ୍‍ମାର୍କଗୁଡିକ</translation>
+<translation id="1070901266639972381">ରାତି</translation>
 <translation id="1074497978438210769">ସୁରକ୍ଷିତ ନୁହେଁ</translation>
 <translation id="1080116354587839789">ପ୍ରସ୍ଥ ସହିତ ଫିଟ୍ କରନ୍ତୁ</translation>
 <translation id="1086953900555227778">ସୂଚୀ-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">ପାସ୍‌ୱାର୍ଡ ବଦଳାନ୍ତୁ</translation>
 <translation id="1096545575934602868">ଏହି ଫିଲ୍ଡରେ <ph name="MAX_ITEMS_LIMIT" />ରୁ ଅଧିକ ଏଣ୍ଟ୍ରି ରହିବା ଉଚିତ ନୁହେଁ। ସମସ୍ତ ପରବର୍ତ୍ତୀ ଏଣ୍ଟ୍ରିଗୁଡ଼ିକୁ ଖାରଜ କରାଯିବ।</translation>
 <translation id="109743633954054152">Chrome ସେଟିଂସ୍‌ରେ ପାସ୍‌ୱର୍ଡ ପରିଚାଳନା କରନ୍ତୁ</translation>
+<translation id="1101672080107056897">ତ୍ରୁଟି ସମ୍ବନ୍ଧିତ କାର୍ଯ୍ୟ</translation>
 <translation id="1103523840287552314">ସର୍ବଦା <ph name="LANGUAGE" /> ଅନୁବାଦ କରନ୍ତୁ</translation>
 <translation id="1107591249535594099">ଯଦି ଯାଞ୍ଚ କରାଯାଇଛି, ତେବେ ଦ୍ରୁତତର ଭାବେ ଫର୍ମ ପୂରଣ ପାଇଁ Chrome ଆପଣଙ୍କ କାର୍ଡର ଏକ କପି ଏହି ଡିଭାଇସ୍‌ରେ ଷ୍ଟୋର୍ କରିବ।</translation>
 <translation id="1110994991967754504"><ph name="PERMISSION_NAME" />ପାଇଁ ଅନୁମତି ଚୟନ କରନ୍ତୁ</translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">ପଢ଼ିବା ତାଲିକା</translation>
 <translation id="1264126396475825575">କ୍ରାସ୍ ରିପୋର୍ଟ <ph name="CRASH_TIME" />ରେ କ୍ୟାପ୍‌ଚର୍ କରାଗଲା (ଏପର୍ଯ୍ୟନ୍ତ ଅପ୍‌ଲୋଡ୍ କରାଯାଇନାହିଁ ବା ଅଣଦେଖା କରାଯାଇଛି)</translation>
 <translation id="1270502636509132238">ଉଠାଇବା ପଦ୍ଧତି</translation>
+<translation id="1281476433249504884">ଷ୍ଟାକର୍ 1</translation>
 <translation id="1285320974508926690">ଏହି ସାଇଟ୍‍କୁ କଦାପି ଅନୁବାଦ କରନ୍ତୁ ନାହିଁ</translation>
 <translation id="1285400217480592994">ଆପଣ Chromeରୁ ଡାଉନ୍‍‍ଲୋଡ୍ କରୁଥିବା କିମ୍ବା ସେଥିରେ ଅପ୍‍‍ଲୋଡ୍ କରିଥିବା ଫାଇଲ୍‍ଗୁଡ଼ିକର ବିଷୟବସ୍ତୁକୁ ସ୍କାନ୍ କରନ୍ତୁ।</translation>
 <translation id="1292701964462482250">"ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟର୍‌ରେ ଥିବା ସଫ୍ଟୱେୟାର୍ Chromeକୁ ୱେବ୍ ସହ ସୁରକ୍ଷିତ ସଂଯୋଗ କରିବାରେ ବାଧା ଦେଉଛି" (କେବଳ Windows କମ୍ପ୍ୟୁଟର୍)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">ଉପର ପଟରେ ତିନୋଟି ଷ୍ଟାପଲ୍</translation>
 <translation id="1413809658975081374">ଗୋପନୀୟତା ତ୍ରୁଟି</translation>
 <translation id="1426410128494586442">ହଁ</translation>
+<translation id="1428146450423315676">ଷ୍ଟାକର୍ 7</translation>
 <translation id="1430915738399379752">ପ୍ରିଣ୍ଟ କରନ୍ତୁ</translation>
 <translation id="1442386063175183758">ଡାହାଣ ପଟରେ ଗେଟ୍ ଫୋଲ୍ଡ</translation>
 <translation id="1442987760062738829">ପଞ୍ଚ୍</translation>
@@ -130,6 +136,7 @@
 <translation id="1521655867290435174">Google ସିଟ୍‌ସ</translation>
 <translation id="1527263332363067270">ସଂଯୋଗ ପାଇଁ ଅପେକ୍ଷାରତ…</translation>
 <translation id="1529521330346880926">10x15 (ଏନଭଲପ୍)</translation>
+<translation id="1529789484829130889">ଟ୍ରେ 8</translation>
 <translation id="1530707389502320859">ଆପଣ ଏବେ ଯେଉଁ ସାଇଟ୍‌କୁ ଯିବା ପାଇଁ ଚେଷ୍ଟା କରୁଛନ୍ତି ତାହା ନକଲି ଜଣାପଡୁଛି। URLରେ ଛୋଟ ପରିବର୍ତ୍ତନ କରି ଆକ୍ରମଣକାରୀମାନେ ବେଳେ ବେଳେ ସାଇଟ୍‍ଗୁଡ଼ିକର ନକଲ କରିଥାନ୍ତି ଯାହା ଜାଣିବା କଷ୍ଟକର ହୋଇଥାଏ।</translation>
 <translation id="1531205177818805254">ଏକ୍ସିକ୍ୟୁଟିଭ୍</translation>
 <translation id="1532118530259321453">ଏହି ପୃଷ୍ଠା ଏହା କୁହେ</translation>
@@ -156,6 +163,7 @@
 <translation id="1639239467298939599">ଲୋଡ୍ ହେଉଛି</translation>
 <translation id="1640180200866533862">ଉପଯୋଗକର୍ତ୍ତା ନୀତିଗୁଡ଼ିକ</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />ସାଇଟ୍‍ର ମୂଳପୃଷ୍ଠାକୁ ଯିବା ପାଇଁ<ph name="END_LINK" /> ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
+<translation id="1641976391427233992">ଏତିକି ସମୟ ପର୍ଯ୍ୟନ୍ତ ଆଉଟପୁଟକୁ ବିଳମ୍ବ କରନ୍ତୁ</translation>
 <translation id="1644574205037202324">ଇତିବୃତ୍ତି</translation>
 <translation id="1645368109819982629">ଅସମର୍ଥିତ ପ୍ରୋଟୋକଲ୍</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -164,12 +172,15 @@
 <translation id="1663943134801823270">କାର୍ଡ ଓ ଠିକଣାଗୁଡ଼ିକ ଆପଣଙ୍କର Chromeରୁ ଆସିଛି। ଆପଣ ସେଗୁଡ଼ିକୁ <ph name="BEGIN_LINK" />ସେଟିଂସ୍‍<ph name="END_LINK" />ରେ ପରିଚାଳନ କରିପାରିବେ।</translation>
 <translation id="1671391448414634642">ଏବେ ଠାରୁ <ph name="SOURCE_LANGUAGE" />ର ପୃଷ୍ଠାଗୁଡ଼ିକୁ <ph name="TARGET_LANGUAGE" />ରେ ଅନୁବାଦ କରାଯିବ।</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> ସାମାନ୍ୟତଃ ଆପଣଙ୍କ ସୂଚନାର ସୁରକ୍ଷା ପାଇଁ ଏନକ୍ରିପ୍‌ସନ୍‌ର ବ୍ୟବହାର କରେ। ଏହିଥର ଯେତେବେଳେ Google Chrome <ph name="SITE" />କୁ ସଂଯୋଗ କରିବାକୁ ଚେଷ୍ଟା କଲା, ସେତେବେଳେ ୱେବ୍‌ସାଇଟ୍‌ଟି ଅସ୍ୱାଭାବିକ ଏବଂ ଭୁଲ କ୍ରେଡେନ୍‌ସିଆଲ୍ ଫେରାଇଲା। ଏହା ସେତେବେଳେ ହୋଇପାରେ ଯେତେବେଳେ ଆକ୍ରମଣକାରୀ <ph name="SITE" /> ହୋଇଥିବାର ଛଳନା କରୁଛି କିମ୍ବା ଏକ ୱାଇ-ଫାଇ ସାଇନ୍‌-ଇନ୍ ସ୍କ୍ରିନ୍ ସଂଯୋଗରେ ବ୍ୟାଘାତ ସୃଷ୍ଟି କରୁଛି। ଆପଣଙ୍କର ସୂଚନା ତଥାପି ସୁରକ୍ଷିତ ଅଛି, କାରଣ କୌଣସି ପ୍ରକାର ଡାଟାର ଆଦାନ ପ୍ରଦାନ କରିବା ପୂର୍ବରୁ Google Chrome ସଂଯୋଗଟିକୁ ବନ୍ଦ କରିଦେଇଥିଲା।</translation>
+<translation id="1682696192498422849">ପ୍ରଥମେ ଛୋଟ ଏଡଜ୍</translation>
 <translation id="168841957122794586">ସର୍ଭର୍ ସାର୍ଟିଫିକେଟ୍‍‍ରେ ଗୋଟିଏ ଦୁର୍ବଳ କ୍ରିପ୍ଟୋଗ୍ରାଫିକ୍ କୀ ଅଛି।</translation>
 <translation id="1697532407822776718">ଆପଣ ପୂରା ପ୍ରସ୍ତୁତ ଅଛନ୍ତି!</translation>
 <translation id="1703835215927279855">ଲେଟର୍</translation>
 <translation id="1706954506755087368">{1,plural, =1{ଏହି ସର୍ଭର୍‌ ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ ଯେ ଏହା <ph name="DOMAIN" /> ଅଟେ; ଏହାର ସୁରକ୍ଷା ସର୍ଟିଫିକେଟ୍‍ ଆସନ୍ତାକାଲିଠାରୁ ସ୍ୱୀକାର କରାଯିବ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା କାରଣରୁ ହୋଇପାରେ।}other{ଏହି ସର୍ଭର୍‌ ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ ଯେ ଏହା <ph name="DOMAIN" /> ଅଟେ; ଏହାର ସୁରକ୍ଷା ସର୍ଟିଫିକେଟ୍‍ ଭବିଷ୍ୟତରେ # ଦିନଠାରୁ ସ୍ୱୀକାର କରାଯିବ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା କାରଣରୁ ହୋଇପାରେ।}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1713628304598226412">ଟ୍ରେ 2</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">ମେଲବକ୍ସ 3</translation>
 <translation id="1718029547804390981">ଅଂଶୀଦାର ହେବା ପାଇଁ ଡକ୍ୟୁମେଣ୍ଟ ବହୁତ ବଡ଼ ଅଟେ</translation>
 <translation id="1721424275792716183">* ଫିଲ୍ଡ ଆବଶ୍ୟକ ଅଟେ</translation>
 <translation id="1727741090716970331">ବୈଧ କାର୍ଡ ନମ୍ବର ଯୋଗ କରନ୍ତୁ</translation>
@@ -183,7 +194,9 @@
 <translation id="1743520634839655729">ପରବର୍ତ୍ତୀ ସମୟରେ ପୈଠ କରିବାର ପ୍ରକ୍ରିୟାକୁ ଦ୍ରୁତତର କରିବା ପାଇଁ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ଏବଂ ଏହି ଡିଭାଇସ୍‍‍ରେ ଆପଣଙ୍କର କାର୍ଡ, ନାମ ଓ ବିଲିଂ ଠିକଣା ସେଭ୍ କରନ୍ତୁ।</translation>
 <translation id="1743570585616704562">ଚିହ୍ନଟ ହେଲାନାହିଁ</translation>
 <translation id="1745880797583122200">ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ପରିଚାଳିତ ହୋଇଛି</translation>
+<translation id="1746113442205726301">ଛବିର Y ସିଫ୍ଟ</translation>
 <translation id="17513872634828108">ଟାବ୍‌ଗୁଡ଼ିକ ଖୋଲନ୍ତୁ</translation>
+<translation id="1752021286346845558">ମେଲବକ୍ସ 8</translation>
 <translation id="1753706481035618306">ପୃଷ୍ଠା ସଂଖ୍ୟା</translation>
 <translation id="1763864636252898013">ଏହି ସର୍ଭର୍ ଏହା ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ ଯେ ଏହା <ph name="DOMAIN" /> ଅଟେ; ଏହାର ସୁରକ୍ଷା ସାର୍ଟିଫିକେଟ୍ ଆପଣଙ୍କର ଅପରେଟିଂ ସିଷ୍ଟମ୍ ଦ୍ୱାରା ବିଶ୍ୱସନୀୟ ନୁହେଁ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା ଜଣେ ଆକ୍ରମଣକାରୀଙ୍କ କାରଣରୁ ହୋଇପାରେ।</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />ୱିଣ୍ଡୋ ନେଟ୍‌ୱର୍କ ଡାଇଗ୍ନୋଷ୍ଟିକ୍ସ ଚଲେଇବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ<ph name="END_LINK" />।</translation>
@@ -193,6 +206,7 @@
 <translation id="1791429645902722292">Google ସ୍ମାର୍ଟ ଲକ୍</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">କାର୍ଡଧାରକଙ୍କ ନାମ</translation>
+<translation id="1807528111851433570">ଆରମ୍ଭର ସିଟ୍</translation>
 <translation id="1821930232296380041">ଅବୈଧ ଅନୁରୋଧ କିମ୍ବା ଅନୁରୋଧ ମାନଦଣ୍ଡ</translation>
 <translation id="1822540298136254167">ଆପଣ ପରିଦର୍ଶନ କରୁଥିବା ୱେଵ‌ସାଇଟ୍‍ଗୁଡ଼ିକ ଏବଂ ସେଥିରେ ଅତିବାହିତ କରୁଥିବା ସମୟ</translation>
 <translation id="1826516787628120939">ଯାଞ୍ଚ ହେଉଛି</translation>
@@ -221,6 +235,7 @@
 <translation id="1973335181906896915">କ୍ରମିକୀକରଣ ତ୍ରୁଟି</translation>
 <translation id="1974060860693918893">ବିକଶିତ</translation>
 <translation id="1974883374937189061">Googleକୁ <ph name="BEGIN_WHITEPAPER_LINK" />ଆପଣ ଯାଉଥିବା କିଛି ପୃଷ୍ଠାର URLଗୁଡ଼ିକ, ସୀମିତ ସିଷ୍ଟମ୍ ସୂଚନା ଏବଂ କିଛି ପୃଷ୍ଠାର ବିଷୟବସ୍ତୁ<ph name="END_WHITEPAPER_LINK" /> ପଠାଇ Chromeର ସୁରକ୍ଷାକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">ମେଲବକ୍ସ 10</translation>
 <translation id="1978555033938440688">ଫାର୍ମୱେର୍‌ ସଂସ୍କରଣ</translation>
 <translation id="1981206234434200693">Chromeର ବ୍ରାଉଜିଂ ସମ୍ବନ୍ଧିତ ଡାଟା ଖାଲି କରନ୍ତୁ</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -230,6 +245,7 @@
 <translation id="2025186561304664664">ସ୍ଵଚାଳିତ ଭାବେ କନ୍‍ଫିଗର୍ ହେବା ପାଇଁ ପ୍ରକ୍ସିକୁ ସେଟ୍ କରାଯାଇଛି।</translation>
 <translation id="2030481566774242610">ଆପଣ କ’ଣ <ph name="LINK" /> ବିଷୟରେ କହୁଥିଲେ?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ପ୍ରକ୍ସି ଓ ଫାୟର୍‍ୱାଲ୍‍କୁ ଯାଞ୍ଚ କରାଯାଉଛି<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">ଟ୍ରେ 7</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" />ରେ ଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକ ଅନୁବାଦ କରାଯିବ ନାହିଁ।</translation>
 <translation id="2053553514270667976">ZIP କୋଡ୍</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1ଟି ପରାମର୍ଶ}other{#ଟି ପରାମର୍ଶ}}</translation>
@@ -242,6 +258,7 @@
 <translation id="2096368010154057602">ବିଭାଗ</translation>
 <translation id="2099652385553570808">ବାମ ପଟରେ ତିନୋଟି ଷ୍ଟାପଲ୍</translation>
 <translation id="2102134110707549001">ବଳିଷ୍ଠ ପାସ୍‍ୱର୍ଡ ପାଇଁ ପ୍ରସ୍ତାବ ଦିଅନ୍ତୁ…</translation>
+<translation id="2107021941795971877">ପ୍ରିଣ୍ଟ ସପୋର୍ଟ</translation>
 <translation id="2108755909498034140">ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation>
 <translation id="2111256659903765347">ସୁପର୍-A</translation>
 <translation id="2113977810652731515">କାର୍ଡ</translation>
@@ -266,6 +283,7 @@
 <translation id="2187317261103489799">ଚିହ୍ନଟ କରନ୍ତୁ (ଡିଫଲ୍ଟ)</translation>
 <translation id="2188375229972301266">ତଳ ପଟରେ ଏକାଧିକ ପଞ୍ଚ୍</translation>
 <translation id="2202020181578195191">ସମୟସୀମା ଶେଷ ହେଉଥିବା ଏକ ବୈଧ ବର୍ଷ ଲେଖନ୍ତୁ</translation>
+<translation id="22081806969704220">ଟ୍ରେ 3</translation>
 <translation id="2212735316055980242">ନୀତି ମିଳିଲା ନାହିଁ</translation>
 <translation id="2213606439339815911">ପ୍ରବିଷ୍ଟଗୁଡ଼ିକୁ ଅଣାଯାଉଛି...</translation>
 <translation id="2215727959747642672">ଫାଇଲ୍ ଏଡିଟିଂ</translation>
@@ -283,6 +301,7 @@
 <translation id="2263079731045660823">Chrome ସେଟିଂସ୍‍‍ରେ କ୍ରେଡିଟ୍‍ କାର୍ଡ ସ୍ୱତଃପୂରଣ ସୂଚନା ଅପ୍‍‍ଡେଟ୍ କରନ୍ତୁ</translation>
 <translation id="2267047181501709434">ଆପଣଙ୍କ ପରିଚୟ ଯାଞ୍ଚ କରାଯାଉଛି...</translation>
 <translation id="2270484714375784793">ଫୋନ୍ ନମ୍ଵର</translation>
+<translation id="2276057643614339130">ପ୍ରିଣ୍ଟ ବେସ୍</translation>
 <translation id="2277103315734023688">ଆଗକୁ ବଢ଼ାନ୍ତୁ</translation>
 <translation id="2283340219607151381">ଠିକଣାଗୁଡ଼ିକ ସେଭ୍ କରି ପୂରଣ କରନ୍ତୁ</translation>
 <translation id="2288422996159078444">ୱେବ୍‌ରେ ଆପଣ ଯାହା କିଛି ଟାଇପ୍ କରନ୍ତି, ଯେଉଁ ପୃଷ୍ଠା ଆପଣ ଦେଖନ୍ତି କିମ୍ବା ଅନ୍ୟ କୌଣସି କାର୍ଯ୍ୟକଳାପ କରନ୍ତି ତାହା ନିରୀକ୍ଷଣ କରାଯାଉଛି। ଆପଣଙ୍କର ଅଜାଣତରେ ସାଇଟ୍‌ଗୁଡ଼ିକର ବିଷୟବସ୍ତୁ ପରିବର୍ତ୍ତନ କରାଯାଇପାରେ।</translation>
@@ -322,6 +341,7 @@
 <translation id="2465655957518002998">ବିତରଣ ପଦ୍ଧତି ବାଛନ୍ତୁ</translation>
 <translation id="2465688316154986572">ଷ୍ଟାପଲ୍</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />ନେଟ୍‌ୱର୍କ ଡାଏଗ୍ନୋଷ୍ଟିକ୍‍ ଚାଲୁଛି<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">1-ରୁ-N ଅର୍ଡର୍</translation>
 <translation id="2473195200299095979">ଏହି ପୃଷ୍ଠା ଅନୁବାଦ କରନ୍ତୁ</translation>
 <translation id="2479410451996844060">ଅବୈଧ ସନ୍ଧାନ URL.</translation>
 <translation id="2482878487686419369">ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ</translation>
@@ -340,6 +360,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{ଏବଂ ଅଧିକ 1ଟି}other{ଏବଂ ଅଧିକ #ଟି}}</translation>
 <translation id="2536110899380797252">ଠିକଣା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="2539524384386349900">ଚିହ୍ନଟ କରନ୍ତୁ</translation>
+<translation id="2544644783021658368">ଗୋଟିଏ ଡକ୍ୟୁମେଣ୍ଟ</translation>
 <translation id="254947805923345898">ନୀତିର ମୂଲ୍ୟ ବୈଧ ନୁହେଁ।</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> ଏକ ଅବୈଧ ପ୍ରତିକ୍ରିୟା ପଠାଇଲା।</translation>
 <translation id="2556876185419854533">&amp;ଏଡିଟ୍‍କୁ ପୂର୍ବବତ୍ କରନ୍ତୁ</translation>
@@ -366,8 +387,10 @@
 <translation id="2676271551327853224">Roc-8K</translation>
 <translation id="2677748264148917807">ଛାଡ଼ନ୍ତୁ</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">ଉତ୍ତମ ଫିଟ୍</translation>
 <translation id="2691924980723297736">ସୁରକ୍ଷା ଚେତାବନୀ</translation>
 <translation id="2699302886720511147">ସ୍ୱୀକାର କରାଯାଇଥିବା କାର୍ଡ</translation>
+<translation id="2701514975700770343">ଫେସ୍ ଡାଉନ୍</translation>
 <translation id="2702801445560668637">ପଢ଼ିବା ତାଲିକା</translation>
 <translation id="2704283930420550640">ମୂଲ୍ୟଟି ଫର୍ମାଟ୍ ସହିତ ମେଳ ହେଉନାହିଁ।</translation>
 <translation id="2705137772291741111">ଏହି ସାଇଟ୍‌ର ସେଭ୍‌ (କେଚ୍‌ ହୋ‍ଇଥିବା) ହୋ‍ଇଥିବା କପି ପଢ଼ିବାଯୋଗ୍ୟ ନଥିଲା।</translation>
@@ -385,12 +408,15 @@
 <translation id="2742870351467570537">ଚୟନ କରାଯାଇଥିବା ଆଇଟମ୍‌ଗୁଡ଼ିକୁ କାଢ଼ନ୍ତୁ</translation>
 <translation id="277133753123645258">ସିପିଂ ପଦ୍ଧତି</translation>
 <translation id="277499241957683684">ଡିଭାଇସ୍‌ର ରେକର୍ଡ ନାହିଁ</translation>
+<translation id="2775884851269838147">ପ୍ରଥମରେ ପ୍ରିଣ୍ଟ ହୋଇଥିବା ପୃଷ୍ଠା</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">ସଂଯୋଗଟି ରିସେଟ୍ କରାଯାଇଛି।</translation>
 <translation id="2792012897584536778">ଏହି ଡିଭାଇସ୍‌ର ଆଡ୍‌ମିନିଷ୍ଟ୍ରେଟର୍‌ମାନେ ସୁରକ୍ଷା ସାର୍ଟିଫିକେଟ୍‌ଗୁଡ଼ିକ ସେଟ୍‌ଅପ୍ କରିଛନ୍ତି ଯାହା ଆପଣ ଯାଇଥିବା ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକର ବିଷୟବସ୍ତୁ ଦେଖିବା ପାଇଁ ହୁଏତ ସେମାନଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।</translation>
 <translation id="2799020568854403057">ଏହି ସାଇଟ୍‌ରେ ଆଗକୁ ହାନୀକାରକ ଆପ୍ସ ରହିଛି|</translation>
 <translation id="2799223571221894425">ପୁଣି ଲଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="2803306138276472711">Google ନିରାପଦ ବ୍ରାଉଜିଂ, ନିକଟରେ <ph name="SITE" />ରେ <ph name="BEGIN_LINK" />ମାଲ୍‌ୱେର୍ ଚିହ୍ନଟ କରିଛି<ph name="END_LINK" />। ସାଧାରଣତଃ ସୁରକ୍ଷିତ ରହୁଥିବା ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ବେଳେବେଳେ ମାଲ୍‌ୱେର୍ ଦ୍ୱାରା ସଂକ୍ରମିତ ହୋଇଥାନ୍ତି।</translation>
+<translation id="2807052079800581569">ଛବିର Y ସ୍ଥାନ</translation>
+<translation id="2809804249696361569">ଉଭୟ ସିଟ୍</translation>
 <translation id="2824775600643448204">ଠିକଣା ଏବଂ ସନ୍ଧାନ ବାର୍</translation>
 <translation id="2826760142808435982">ମୁଖ୍ୟ ଅଦଳ ବଦଳ କୌଶଳ <ph name="CIPHER" />ର ବ୍ୟବହାର କରି ଏବଂ <ph name="KX" />ର ବ୍ୟବହାର କରି ସଂଯୋଗକୁ ଏନ୍‌କ୍ରାଇପ୍ଟ କରାଯାଇଛି ଏବଂ ପ୍ରମାଣିକରଣ କରାଯାଇଛି।</translation>
 <translation id="2835170189407361413">ଫର୍ମ ଖାଲି କରନ୍ତୁ</translation>
@@ -405,6 +431,7 @@
 <translation id="290376772003165898">ପୃଷ୍ଠାଟି <ph name="LANGUAGE" />ରେ ନାହିଁ?</translation>
 <translation id="2909946352844186028">ନେଟ୍‌ୱର୍କରେ ଏକ ପରିବର୍ତ୍ତନ ଚିହ୍ନଟ କରାଯାଇଥିଲା।</translation>
 <translation id="2910133103376701357">ଆପଣଙ୍କର ଡିଭାଇସ୍ ଏବଂ ଆକାଉଣ୍ଟ <ph name="ENROLLMENT_DOMAIN" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।</translation>
+<translation id="2911973620368911614">ଜବ୍ ଆକାଉଣ୍ଟିଂ ଉପଯୋଗକର୍ତ୍ତା ID</translation>
 <translation id="2916038427272391327">ଅନ୍ୟ ପ୍ରୋଗ୍ରାମ୍‌ଗୁଡ଼ିକ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="2922350208395188000">ସର୍ଭରର ସାର୍ଟିଫିକେଟ୍‌ ଯାଞ୍ଚ କରିହେବ ନାହିଁ</translation>
 <translation id="2925673989565098301">ବିତରଣ ପଦ୍ଧତି</translation>
@@ -414,6 +441,7 @@
 <translation id="2934466151127459956">ସରକାରୀ-ଚିଠି</translation>
 <translation id="2941952326391522266">ଏହା <ph name="DOMAIN" /> ଅଟେ ବୋଲି ଏହି ସର୍ଭର୍ ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ; ଏହାର ସୁରକ୍ଷା ସାର୍ଟିଫିକେଟ୍ <ph name="DOMAIN2" /> ତରଫରୁ ଅଟେ। ଏହା ଏକ ଭୁଲ କନଫିଗ୍‌ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା ଯୋଗୁଁ ହୋଇଥାଇପାରେ।</translation>
 <translation id="2948083400971632585">ଆପଣ ସେଟିଂସ୍ ପୃଷ୍ଠାରୁ ଏକ ସଂଯୋଗ ପାଇଁ କନ୍‍ଫିଗର୍ କରାଯାଇଥିବା କୌଣସି ପ୍ରକ୍ସିକୁ ଅକ୍ଷମ କରିପାରିବେ।</translation>
+<translation id="2951588413176968965">ମୋ ମେଲବକ୍ସ</translation>
 <translation id="295526156371527179">ଚେତାବନୀ: ଏହି ନୀତିକୁ ଏକ ଅଭିଧାନ ଭାବେ ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଥିବା ନୀତି ଦ୍ୱାରା ମିଶାଯାଇ ନଥିଲା କାହିଁକି ନା ଏହା ଏକ ଅଭିଧାନ ନୁହେଁ।</translation>
 <translation id="2955913368246107853">ଖୋଜନ୍ତୁ ଦଣ୍ଡିକା ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="2969319727213777354">ଏକ ସୁରକ୍ଷିତ ସଂଯୋଗ ପ୍ରତିଷ୍ଠା କରିବାକୁ ଆପଣଙ୍କର ଘଣ୍ଟାକୁ ସଠିକ୍ ଭାବେ ସେଟ୍ କରିବା ଆବଶ୍ୟକ। ଏହାର କାରଣ ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ଦ୍ୱାରା ନିଜକୁ ଚିହ୍ନଟ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଉଥିବା ସାର୍ଟିଫିକେଟ୍‍ କେବଳ ନିର୍ଦ୍ଧିଷ୍ଟ ସମୟର ଅବଧି ପାଇଁ କେବଳ ବୈଧ ଅଟେ। ଯେହେତୁ ଡିଭାଇସ୍‌ର ଘଣ୍ଟା ଭୁଲ୍ ଅଛି, ତେଣୁ Google Chrome ଏହି ସାର୍ଟିଫିକେଟ୍‌ଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ ନାହିଁ।</translation>
@@ -428,6 +456,7 @@
 <translation id="2991174974383378012">ୱେବ୍‍ସାଇଟ୍ ସହିତ ସେୟାର୍ କରାଯାଇଛି</translation>
 <translation id="2991571918955627853">ବର୍ତ୍ତମାନ ଆପଣ <ph name="SITE" />କୁ ଯାଇପାରିବେ ନାହିଁ କାରଣ ୱେବ୍‌ସାଇଟ୍‍ HSTS ବ୍ୟବହାର କରେ। ସାଧାରଣତଃ ନେଟ୍‍ୱର୍କ ତ୍ରୁଟି ଏବଂ ଆକ୍ରମଣ ଅସ୍ଥାୟୀ ଅଟେ, ତେଣୁ ସମ୍ଭବତଃ ଏହି ପୃଷ୍ଠା ପରେ କାର୍ଯ୍ୟ କରିବ।</translation>
 <translation id="2996674880327704673">Google ଠାରୁ ପ୍ରାପ୍ତ ପ୍ରସ୍ତାବଗୁଡ଼ିକ</translation>
+<translation id="3002501248619246229">ଇନପୁଟ୍ ଟ୍ରେ ମିଡିଆ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="3005723025932146533">ସେଭ୍ ହୋଇଥିବା କପି ଦେଖାନ୍ତୁ</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" />ର CVC ଲେଖନ୍ତୁ। ଆପଣ ଥରେ ସୁନିଶ୍ଚିତ କରିବା ପରେ, ଆପଣଙ୍କର କାର୍ଡର ବିବରଣୀ ଏହି ସାଇଟ୍‌ ସହିତ ସେୟାର୍‌ କରାଯିବ।</translation>
 <translation id="3010559122411665027">ତାଲିକା ଏଣ୍ଟ୍ରି "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -440,12 +469,14 @@
 <translation id="3060227939791841287">C9 (ଏନଭଲପ୍)</translation>
 <translation id="3061707000357573562">ପ୍ୟାଚ୍ ସେବା</translation>
 <translation id="3064966200440839136">ଏକ ଏକ୍ସଟର୍ନଲ୍‌ ଆପ୍ଲିକେସନ୍‌ ମାଧ୍ୟମରେ ଦେୟ ଦେବାକୁ ଇନ୍‌କଗ୍ନିଟୋ ମୋଡ୍‌ ଛାଡୁଛନ୍ତି। ଜାରି ରଖିବେ?</translation>
+<translation id="3080254622891793721">ଗ୍ରାଫିକ୍</translation>
 <translation id="3086579638707268289">ୱେବ୍‍‍ରେ ଆପଣଙ୍କର କାର୍ଯ୍ୟକଳାପକୁ ନିରୀକ୍ଷଣ କରାଯାଉଛି</translation>
 <translation id="3087734570205094154">ନିମ୍ନଭାଗ</translation>
 <translation id="3095940652251934233">ବକ୍ତବ୍ୟ</translation>
 <translation id="3096100844101284527">ପିକ୍‍ଅପ୍‍ର ଠିକଣା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="3105172416063519923">ଆସେଟ୍ ID:</translation>
 <translation id="3109728660330352905">ଏହି ପୃଷ୍ଠାକୁ ଦେଖିବା ପାଇଁ ଆପଣଙ୍କ ପାଖରେ ଅଧିକାର ନାହିଁ।</translation>
+<translation id="3113284927548439113">ତୃତୀୟ ସିଫ୍ଟ</translation>
 <translation id="3116158981186517402">ଲାମିନେଟ୍</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />ସଂଯୋଜିତ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ସ ଚଲାଇବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ<ph name="END_LINK" />।</translation>
@@ -468,6 +499,7 @@
 <translation id="3209034400446768650">ପୃଷ୍ଠା ଶୁଳ୍କ ଲାଗୁ ହୋଇପାରେ</translation>
 <translation id="3212581601480735796"><ph name="HOSTNAME" />ରେ ଆପଣଙ୍କର କାର୍ଯ୍ୟକଳାପକୁ ନିରୀକ୍ଷଣ କରାଯାଉଛି</translation>
 <translation id="3215092763954878852">WebAuthn ବ୍ୟବହାର କରାଯାଇପାରିଲା ନାହିଁ</translation>
+<translation id="3218181027817787318">ରିଲେଟିଭ୍</translation>
 <translation id="3225919329040284222">ସର୍ଭର୍ ଏକ ସାର୍ଟିଫିକେଟ୍‌କୁ ଉପସ୍ଥାପନ କରୁଛି, ଯାହା ବିଲ୍ଟ-ଇନ୍ ପ୍ରତ୍ୟାଶା ସହ ମେଳ ଖାଉନାହିଁ। ଏହି ପ୍ରତ୍ୟାଶାଗୁଡ଼ିକ ଆପଣଙ୍କୁ ସୁରକ୍ଷିତ ରଖିବାକୁ କିଛି ଉଚ୍ଚ ସୁରକ୍ଷା ଥିବା ୱେବ୍‍ସାଇଟ୍‍ଗୁଡ଼ିକ ପାଇଁ ଅନ୍ତର୍ଭୁକ୍ତ କରାଯାଇଛି।</translation>
 <translation id="3226128629678568754">ପୃଷ୍ଠା ଲୋଡ୍‌ କରିବାକୁ ଆବଶ୍ୟକ ହେଉଥିବା ଡାଟା ପୁଣି ଦାଖଲ କରିବାକୁ ରିଲୋଡ୍‌ ବଟନ୍‌ ଦବାନ୍ତୁ।</translation>
 <translation id="3227137524299004712">ମାଇକ୍ରୋଫୋନ୍</translation>
@@ -502,6 +534,7 @@
 <translation id="3399952811970034796">ବିତରଣ ଠିକଣା</translation>
 <translation id="3422248202833853650">ମେମୋରୀ ଖାଲି କରିବା ପାଇଁ ଅନ୍ୟ ପ୍ରୋଗ୍ରାମ୍‍ଗୁଡ଼ିକରୁ ପ୍ରସ୍ଥାନ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="3422472998109090673">ବର୍ତ୍ତମାନ <ph name="HOST_NAME" />ରେ ପହଞ୍ଚି ହେଉନାହିଁ।</translation>
+<translation id="3423742043356668186">ସିଷ୍ଟମ୍ ଦ୍ୱାରା ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଥିବା</translation>
 <translation id="3427092606871434483">ଅନୁମତି ଦିଅନ୍ତୁ (ଡିଫଲ୍ଟ)</translation>
 <translation id="3427342743765426898">&amp;ଏଡିଟ୍‍ ପୁନଃବତ୍ କରନ୍ତୁ</translation>
 <translation id="342781501876943858">ଆପଣ ଯଦି ନିଜର ପାସ୍‌ୱର୍ଡକୁ ଅନ୍ୟ ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକରେ ପୁନଃ ବ୍ୟବହାର କରିଛନ୍ତି, ତେବେ Chromium ଆପଣଙ୍କୁ ଏହି ପାସ୍‌ୱର୍ଡକୁ ରିସେଟ୍ କରିବା ପାଇଁ ସୁପାରିଶ କରୁଛି।</translation>
@@ -511,6 +544,7 @@
 <translation id="3447661539832366887">ଏହି ଡିଭାଇସ୍‌ର ମାଲିକ ଡାଇନୋସର୍‌ ଗେମ୍‌ ବନ୍ଦ କରିଛନ୍ତି।</translation>
 <translation id="3447884698081792621">ସାର୍ଟିଫିକେଟ୍‌ ଦେଖାନ୍ତୁ (<ph name="ISSUER" />ଙ୍କ ଦ୍ୱାରା ଜାରି କରାଯାଇଛି)</translation>
 <translation id="3452404311384756672">ମଧ୍ୟାନ୍ତର ଆଣନ୍ତୁ:</translation>
+<translation id="3453962258458347894">ପୁଣି କରାଯାଇଥିବା ଚେଷ୍ଟାର ସଂଖ୍ୟା</translation>
 <translation id="3456231139987291353">ନମ୍ବର-11 (ଏନଭଲପ୍)</translation>
 <translation id="3461824795358126837">ହାଇଲାଇଟର୍</translation>
 <translation id="3462200631372590220">ଅତ୍ୟାଧୁନିକତା ଲୁଚାନ୍ତୁ</translation>
@@ -518,15 +552,20 @@
 <translation id="3468054117417088249">,<ph name="TAB_SWITCH_SUFFIX" />, ବର୍ତ୍ତମାନ ଖୋଲାଅଛି, Tab ଦବାନ୍ତୁ, ତା’ପରେ ଖୋଲାଥିବା ଟାବ୍‍କୁ ସ୍ଵିଚ୍ କରିବା ପାଇଁ Enter ଦବାନ୍ତୁ</translation>
 <translation id="3479552764303398839">ଏବେ ନୁହେଁ</translation>
 <translation id="3484560055331845446">ଆପଣ, ନିଜର Google ଆକାଉଣ୍ଟର ଆକ୍ସେସ୍‌ ହରାଇପାରନ୍ତି। ବର୍ତ୍ତମାନ Chrome ଆପଣଙ୍କୁ ପାସ୍‌ୱାର୍ଡ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ସୁପାରିଶ କରୁଛି। ଆପଣଙ୍କୁ ସାଇନ୍‌ ଇନ୍ ପାଇଁ କୁହାଯିବ।</translation>
+<translation id="3487845404393360112">ଟ୍ରେ 4</translation>
 <translation id="3495081129428749620">ପୃଷ୍ଠାରେ ଖୋଜନ୍ତୁ
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">ଏହି ନୀତିକୁ ଅଣଦେଖା କରାଯାଏ କାରଣ ସେହି ଏକା ନୀତି ଗୋଷ୍ଠୀ ଭିତରୁ ଅନ୍ୟ ଗୋଟିଏ ନୀତିର ପ୍ରାଧାନ୍ୟ ଅଛି।</translation>
 <translation id="3513704683820682405">ବୃଦ୍ଧି ହେଉଥିବା ବାସ୍ତବତା</translation>
+<translation id="3518941727116570328">ଏକାଧିକ ବସ୍ତୁର ପରିଚାଳନା</translation>
 <translation id="3528171143076753409">ସର୍ଭରର ସାର୍ଟିଫିକେଟ୍‍ଟି ବିଶ୍ୱସ୍ତ ନୁହେଁ।</translation>
 <translation id="3528485271872257980">ଗାଢ଼ ବାଦାମୀ</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{ସିଙ୍କ୍‌ ହୋ‍ଇଥିବା ଡିଭାଇସ୍‌ଗୁଡ଼ିକରେ ଅତିକମ୍‌ରେ 1ଟି ଆଇଟମ୍‌}=1{1ଟି ଆଇଟମ୍‌ (ଏବଂ ସିଙ୍କ୍‌ ହୋ‍ଇଥିବା ଡିଭାଇସ୍‌ଗୁଡ଼ିକରେ ଆହୁରି ବହୁତ କିଛି)}other{#ଟି ଆଇଟମ୍‌ (ଏବଂ ସିଙ୍କ୍‌ ହୋ‍ଇଥିବା ଡିଭାଇସ୍‌ଗୁଡ଼ିକରେ ଆହୁରି ବହୁତ କିଛି)}}</translation>
+<translation id="3531780078352352885">ଜବ୍ ସିଟ୍ସ</translation>
+<translation id="3533328374079021623">ମେଲବକ୍ସ 5</translation>
 <translation id="3539171420378717834">ଏହି କାର୍ଡର ଏକ ନକଲକୁ ଏହି ଡିଭାଇସ୍‌ରେ ରଖନ୍ତୁ</translation>
 <translation id="3553513561058684206">ଆପଣଙ୍କ ପାଇଁ</translation>
+<translation id="3558573058928565255">ଦିନ ସମୟ</translation>
 <translation id="3566021033012934673">ଆପଣଙ୍କର ସଂଯୋଗ ବ୍ୟକ୍ତିଗତ ନୁହେଁ</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635"><ph name="SITE" />ରେ ଏକ ଏମ୍ବେଡ୍‌ ହୋ‍ଇଥିବା ପୃଷ୍ଠା କହେ ଯେ</translation>
@@ -535,8 +574,10 @@
 <translation id="3583757800736429874">&amp;ଘୁଞ୍ଚାଇବା କାର୍ଯ୍ୟଟି ପୁଣିଥରେ କରନ୍ତୁ</translation>
 <translation id="3584299510153766161">ତଳ ପଟରେ ଦୁଇଟି ପଞ୍ଚ୍</translation>
 <translation id="3586931643579894722">ବିବରଣୀଗୁଡ଼ିକ ଲୁଚାନ୍ତୁ</translation>
+<translation id="3587738293690942763">ମଧ୍ୟମ</translation>
 <translation id="3592413004129370115">ଇଟାଲିଆନ୍ (ଏନଭଲପ୍)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">ଫିଡ୍ ଓରିଏଣ୍ଟେସନ୍</translation>
 <translation id="3614103345592970299">ଆକାର 2</translation>
 <translation id="361438452008624280">ତାଲିକାର ଏଣ୍ଟ୍ରି "<ph name="LANGUAGE_ID" />": ଅଜଣା କିମ୍ବା ଅସମର୍ଥିତ ଭାଷା।</translation>
 <translation id="3615877443314183785">ଗୋଟିଏ ବୈଧ ମିଆଦ ଶେଷ ହେଉଥିବା ତାରିଖ ଲେଖନ୍ତୁ</translation>
@@ -544,6 +585,7 @@
 <translation id="362276910939193118">ସମ୍ପୂର୍ଣ୍ଣ ଇତିବୃତ୍ତି ଦେଖାନ୍ତୁ</translation>
 <translation id="3630155396527302611">ଯଦି ଏହାକୁ ନେଟ୍‍ୱାର୍କକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦିଆଯାଇଥିବା ଗୋଟିଏ ପ୍ରୋଗ୍ରାମ୍ ଭାବେ ପୂର୍ବରୁ ତାଲିକାଭୁକ୍ତ କରାଯାଇଥାଏ, ତେବେ ତାଲିକାରୁ ଏହାକୁ କାଢ଼ି, ପୂନର୍ବାର ଯୋଗ କରିବା ପାଇଁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="3631244953324577188">ବାୟୋମେଟ୍ରିକ୍ସ</translation>
+<translation id="3634530185120165534">ଟ୍ରେ 5</translation>
 <translation id="3640766068866876100">ସୂଚୀ-4x6-Ext</translation>
 <translation id="3650584904733503804">ବୈଧକରଣ ସଫଳ ହେଲା</translation>
 <translation id="3655670868607891010">ଯଦି ଆପଣ ଏହାକୁ ବାରମ୍ବାର ଦେଖୁଛନ୍ତି, ତେବେ ଏହି <ph name="HELP_LINK" />କୁ ଦେଖିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
@@ -577,16 +619,21 @@
 <translation id="3760561303380396507">CVC ପରିବର୍ତ୍ତେ Windows Hello ବ୍ୟବହାର କରିବେ?</translation>
 <translation id="3761718714832595332">ସ୍ଥିତି ଲୁଚାନ୍ତୁ</translation>
 <translation id="3765032636089507299">ସେଫ୍ ବ୍ରାଉଜିଂ ପୃଷ୍ଠାର ନିର୍ମାଣ ଚାଲିଛି</translation>
+<translation id="3765588406864124894">ମେଲବକ୍ସ 9</translation>
 <translation id="3778403066972421603">ଆପଣ ଏହି କାର୍ଡକୁ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ ଏବଂ ଏହି ଡିଭାଇସ୍‍‍ରେ ସେଭ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି?</translation>
+<translation id="3780694243617746492">ଆଉଟପୁଟ୍ ବିନ୍</translation>
 <translation id="3781428340399460090">ଅତ୍ୟଧିକ ଗୋଲାପି</translation>
 <translation id="3783418713923659662">MasterCard</translation>
 <translation id="3787705759683870569"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" />ରେ ମିଆଦ ସମାପ୍ତ ହେବ</translation>
 <translation id="3789155188480882154">ଆକାର 16</translation>
 <translation id="3797522431967816232">Prc3 (ଏନଭଲପ୍)</translation>
+<translation id="3799805948399000906">ଅନୁରୋଧ କରାଯାଇଥିବା ଫଣ୍ଟ</translation>
+<translation id="3807366285948165054">ଇମେଜ୍ X ସିଫ୍ଟ</translation>
 <translation id="3807873520724684969">ହାନିକାରକ ବିଷୟବସ୍ତୁକୁ ଅବରୋଧ କରାଗଲା।</translation>
 <translation id="3808375843007691220">ଚେତାବନୀ: ଆଗକୁ ପରୀକ୍ଷଣ ଫିଚର୍‌ଗୁଡ଼ିକ ଅଛି!</translation>
 <translation id="3810973564298564668">ପରିଚାଳନା</translation>
 <translation id="382518646247711829">ଯଦି ଆପଣ ଏକ ପ୍ରକ୍ସି ସର୍ଭର ବ୍ୟବହାର କରନ୍ତି...</translation>
+<translation id="3827112369919217609">ସମ୍ପୂର୍ଣ୍ଣ</translation>
 <translation id="3828924085048779000">ଶୂନ୍ୟ ପାସ୍‌ଫ୍ରେଜ୍‌ର ଅନୁମତି ନାହିଁ।</translation>
 <translation id="3831915413245941253">ଅତିରିକ୍ତ ଫଙ୍କ୍‌ସନ୍ସ ପାଇଁ, <ph name="ENROLLMENT_DOMAIN" /> ଏକ୍ସଟେନ୍‌ସନ୍‌ଗୁଡ଼ିକ ଇନ୍‌ଷ୍ଟଲ୍ କରିଛି। ଆପଣଙ୍କର କିଛି ଡାଟାକୁ ଏକ୍ସଟେନ୍‌ସନ୍‌ଗୁଡ଼ିକର ଆକ୍ସେସ୍ ଅଛି।</translation>
 <translation id="3832522519263485449">ବାମ ପଟରେ ଏକାଧିକ ପଞ୍ଚ୍</translation>
@@ -595,6 +642,7 @@
 <translation id="3884278016824448484">ପରସ୍ପର ବିରୋଧୀ ଡିଭାଇସ୍ ଚିହ୍ନଟକାରୀ</translation>
 <translation id="3885155851504623709">ପାରିସ୍</translation>
 <translation id="388632593194507180">ନିରୀକ୍ଷଣ କରାଯାଉଥିବା ଚିହ୍ନଟ କରାଯାଇଛି</translation>
+<translation id="3886948180919384617">ଷ୍ଟାକର୍ 3</translation>
 <translation id="3890664840433101773">ଇମେଲ୍ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="3897092660631435901">ମେନୁ</translation>
 <translation id="3901925938762663762">କାର୍ଡର ମିଆଦ ଶେଷ ହୋଇଯାଇଛି</translation>
@@ -629,7 +677,9 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">ପ୍ରକ୍ସି କନଫିଗ୍‍‍ରେସନ୍ ଏକ .pac ସ୍କ୍ରିପ୍ଟ URL ବ୍ୟବହାର କରିବାକୁ ସେଟ୍ କରାଯାଇଛି, ସ୍ଥିରୀକୃତ ପ୍ରକ୍ସି ସର୍ଭର୍ ନୁହେଁ।</translation>
 <translation id="4082393374666368382">ସେଟିଂସ୍ - ପରିଚାଳନା</translation>
+<translation id="4088981014127559358">ସାଇଡ୍ 1 ଇମେଜ୍ Y ସିଫ୍ଟ</translation>
 <translation id="4098354747657067197">ପ୍ରତାରଣାତ୍ମକ ସାଇଟ୍ ଆଗରେ ଅଛି</translation>
+<translation id="4101413244023615925">ଟେକ୍ସଟ୍ ଏବଂ ଗ୍ରାଫିକ୍</translation>
 <translation id="4103249731201008433">ଡିଭାଇସ୍‌ର କ୍ରମାଙ୍କ ସଂଖ୍ୟା ଅବୈଧ ଅଟେ</translation>
 <translation id="4103763322291513355">ବ୍ଲାକ୍‌ଲିଷ୍ଟ କରାଯାଇଥିବା URL ଏବଂ ଆପଣଙ୍କ ସିଷ୍ଟମ୍ ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ଵାରା ଲାଗୁ କରାଯାଇଥିବା ଅନ୍ୟ ନୀତି ଦେଖିବା ପାଇଁ &lt;strong&gt;chrome://policy&lt;/strong&gt; କୁ ଯାଆନ୍ତୁ।</translation>
 <translation id="4108231218301530806">ଆଗାମୀ ଥର ଏହି କାର୍ଡକୁ ଯାଞ୍ଚ କରିବା ପାଇଁ ଆଙ୍ଗୁଠି ଚିହ୍ନ ବ୍ୟବହାର କରନ୍ତୁ।</translation>
@@ -642,6 +692,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 ଅନ୍ୟ}other{#ଟି ଅନ୍ୟ}}</translation>
 <translation id="4130226655945681476">ନେଟ୍‌ୱର୍କ କେବଲ୍‌, ମୋଡେମ୍‌ ଏବଂ ରାଉଟର୍‌ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="413544239732274901">ଅଧିକ ଜାଣନ୍ତୁ</translation>
+<translation id="4142935452406587478">ଟ୍ରେ 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">ବିଶ୍ୱାବ୍ୟାପୀ ଡିଫଳ୍ଟ ବ୍ୟବହାର କରନ୍ତୁ (ସନ୍ଧାନ କରନ୍ତୁ)</translation>
 <translation id="4159784952369912983">ବାଇଗଣୀ</translation>
@@ -684,6 +735,7 @@
 <translation id="4258748452823770588">ଖରାପ ସ୍ବାକ୍ଷର</translation>
 <translation id="4261046003697461417">ସୁରକ୍ଷିତ ଡକ୍ୟୁମେଣ୍ଟଗୁଡ଼ିକ ବ୍ୟାଖ୍ୟା କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="4265872034478892965">ଆପଣଙ୍କର ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ଅନୁମତି ପ୍ରାପ୍ତ</translation>
+<translation id="4270541775497538019">ଷ୍ଟାକର୍ 6</translation>
 <translation id="4275830172053184480">ଆପଣଙ୍କର ଡିଭାଇସ୍‌ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation>
 <translation id="4277028893293644418">ପାସ୍‌ୱର୍ଡ ରିସେଟ୍ କରନ୍ତୁ</translation>
 <translation id="4279811152705618813">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" /> <ph name="ENROLLMENT_DOMAIN" /> ଦ୍ଵାରା ପରିଚାଳିତ ହେଉଛି</translation>
@@ -699,6 +751,7 @@
 <translation id="4318566738941496689">ଆପଣଙ୍କ ଡିଭାଇସ୍‍ର ନାମ ଏବଂ ନେଟ୍‍ୱାର୍କର ଠିକଣା</translation>
 <translation id="4325863107915753736">ଅନୁଛେଦ ଖୋଜିବାରେ ବିଫଳ ହେଲା</translation>
 <translation id="4326324639298822553">ଆପଣଙ୍କ ମିଆଦ ସମାପ୍ତିର ତାରିଖ ଦେଖନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
+<translation id="4331519897422864041">ଷ୍ଟାକର୍ 5</translation>
 <translation id="4331708818696583467">ଅସୁରକ୍ଷିତ</translation>
 <translation id="4340982228985273705">ଏହି କମ୍ପ୍ୟୁଟର୍‌କୁ ଏଣ୍ଟରପ୍ରାଇଜ୍ ପରିଚାଳିତରୂପେ ଚିହ୍ନଟ କରାଯାଇନାହିଁ, ତେଣୁ ଏହି ନୀତି କେବଳ Chrome ୱେବ୍‌ଷ୍ଟୋର୍‌ରେ ହୋଷ୍ଟ କରାଯାଇଥିବା ଏକ୍ସଟେନ୍‌ସନ୍‌ଗୁଡ଼ିକୁ ସ୍ୱଚାଳିତରୂପେ ଇନ୍‌ଷ୍ଟଲ୍ କରିପାରିବ। "<ph name="CWS_UPDATE_URL" />" ହେଉଛି Chrome ୱେବ୍‌ଷ୍ଟୋର୍ ଅପ୍‌ଡେଟ୍ URL।</translation>
 <translation id="4346197816712207223">ସ୍ଵୀକାର କରାଯାଇଥିବା କ୍ରେଡିଟ୍ କାର୍ଡଗୁଡ଼ିକ</translation>
@@ -714,6 +767,7 @@
 <translation id="4372948949327679948">ଆଶା କରାଯାଉଥିବା <ph name="VALUE_TYPE" /> ମୂଲ୍ୟ।</translation>
 <translation id="4377125064752653719">ଆପଣ <ph name="DOMAIN" />ରେ ପହଞ୍ଚିବାକୁ ଚେଷ୍ଟା କରିଥିଲେ, କିନ୍ତୁ ସର୍ଭର୍ ଉପସ୍ଥାପନା କରିଥିବା ସାର୍ଟିଫିକେଟ୍, ତାହାର ଜାରିକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ପ୍ରତ୍ୟାଖ୍ୟାନ କରିଦିଆଯାଇଛି। ଏହାର ଅର୍ଥ ହେଉଛି, ସର୍ଭର୍ ଉପସ୍ଥାପନା କରୁଥିବା ସୁରକ୍ଷା କ୍ରେଡେନ୍‍ସିଆଲ୍ ଉପରେ ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ବିଶ୍ଵାସ କରିବା ଉଚିତ ନୁହେଁ। ଆପଣ ଜଣେ ଆକ୍ରମଣକାରୀଙ୍କ ସହ କଥା କରୁଥାଇପାରନ୍ତି।</translation>
 <translation id="4378154925671717803">ଫୋନ୍</translation>
+<translation id="4390472908992056574">ବ୍ରିମ୍</translation>
 <translation id="4406896451731180161">ସନ୍ଧାନ ପରିଣାମ</translation>
 <translation id="4408413947728134509"><ph name="NUM_COOKIES" />ଟି କୁକୀ</translation>
 <translation id="4415426530740016218">ପିକ୍‌ଅପ୍ ଠିକଣା</translation>
@@ -740,6 +794,7 @@
 <translation id="4522570452068850558">ବିବରଣୀ</translation>
 <translation id="4524138615196389145">ବର୍ତ୍ତମାନ ଠାରୁ WebAuthn ବ୍ୟବହାର କରି ଆପଣଙ୍କର କାର୍ଡଗୁଡ଼ିକୁ ଅତି ଶୀଘ୍ର ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="4524805452350978254">କାର୍ଡଗୁଡ଼ିକ ପରିଚାଳନା କରନ୍ତୁ</translation>
+<translation id="4542971377163063093">ଟ୍ରେ 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ଫ୍ଲାସ୍‍</translation>
 <translation id="4558551763791394412">ଆପଣଙ୍କର ଏକ୍ସଟେନ୍‍ସନ୍‍ଗୁଡ଼ିକୁ ଅକ୍ଷମ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
@@ -755,6 +810,7 @@
 <translation id="4628948037717959914">ଫଟୋ</translation>
 <translation id="4635654612248442824"><ph name="ORIGIN" /> ସାଇଟ୍, ଏହା ଅନୁରୋଧ କରିଛି ଯେ ଏହାର ସମସ୍ତ ଅନୁରୋଧରେ ଗୋଟିଏ ମୂଳ ନୀତି ଲାଗୁ ହେବ, କିନ୍ତୁ ବର୍ତ୍ତମାନ ଏହି ନୀତି ଲାଗୁ କରାଯାଇ ପାରିବ ନାହିଁ।</translation>
 <translation id="464342062220857295">ଫିଚର୍‍ଗୁଡ଼ିକର ସନ୍ଧାନ କରନ୍ତୁ</translation>
+<translation id="4644670975240021822">ଓଲଟା ଅର୍ଡରରେ ଫେସ୍ ଡାଉନ୍</translation>
 <translation id="4646534391647090355">ମୋତେ ବର୍ତ୍ତମାନ ସେଠାକୁ ନେଇଚାଲନ୍ତୁ</translation>
 <translation id="4658638640878098064">ଉପର ବାମ ପଟରେ ଷ୍ଟାପଲ୍</translation>
 <translation id="4668929960204016307">,</translation>
@@ -763,6 +819,7 @@
 <translation id="4690462567478992370">ଏକ ଅବୈଧ ସାର୍ଟିଫିକେଟ୍‍ ବ୍ୟବହାର କରିବା ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="4691835149146451662">ଆର୍କିଟେକ୍‌ଚର୍-A (ଏନଭଲପ୍)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">ସାଇଡ୍</translation>
 <translation id="4708268264240856090">ଆପଣଙ୍କର ସଂଯୋଗରେ ବ୍ୟାଘାତ ହୋ‍ଇଥିଲା</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />ଚାଲୁଥିବା ୱିଣ୍ଡୋ ନେଟ୍‌ୱର୍କ ଡାଇଗ୍ନୋଷ୍ଟିକ୍ସ<ph name="END_LINK" /></translation>
@@ -780,9 +837,11 @@
 <translation id="4764776831041365478"><ph name="URL" />ରେ ଥିବା ୱେବ୍‌ପୃଷ୍ଠାଟି ଅସ୍ଥାୟୀରୂପେ ଡାଉନ୍‌ ଥାଇପାରେ କିମ୍ବା ସ୍ଥାୟୀଭାବେ ଏକ ନୂତନ ୱେବ୍ ଠିକଣାକୁ ସ୍ଥାନାନ୍ତର ହୋଇପାରେ।</translation>
 <translation id="4766713847338118463">ତଳ ପଟରେ ଦୁଇଟି ଷ୍ଟାପଲ୍</translation>
 <translation id="4771973620359291008">ଏକ ଅଜ୍ଞାତ ତୃଟି ସଂଘଟିତ ହୋଇଅଛି ।</translation>
+<translation id="4780366598804516005">ମେଲବକ୍ସ 1</translation>
 <translation id="4780900888022378816">ଆପଣଙ୍କର ଡିଭାଇସ୍ <ph name="ENROLLMENT_DOMAIN" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି ଏବଂ ଆପଣଙ୍କର ଆକାଉଣ୍ଟ <ph name="ACCOUNT_DOMAIN" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।</translation>
 <translation id="4785689107224900852">ଏହି ଟାବ୍‌କୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation>
 <translation id="4791134497475588553">Linux ଆପ୍ସ ଇନ୍‍ଷ୍ଟଲ୍ କରାଯାଇଛି ଏବଂ ଗତ ଥର ପାଇଁ ଏହା କେବେ ବ୍ୟବହାର କରାଯାଇଥିଲା</translation>
+<translation id="4796594887379589189">ଜବ୍ ଆକାଉଣ୍ଟ ID</translation>
 <translation id="4798078619018708837">ଆପଣଙ୍କର କ୍ରେଡିଟ୍ କାର୍ଡ ବିବରଣୀ ଅପ୍‌ଡେଟ୍ କରିବାକୁ <ph name="CREDIT_CARD" /> ପାଇଁ ମିଆଦ ସମାପ୍ତି ତାରିଖ ଏବଂ CVC ଲେଖନ୍ତୁ। ଆପଣ ସୁନିଶ୍ଚିତ କରିବା ପରେ, ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରୁ ମିଳିଥିବା କାର୍ଡ ବିବରଣୀ ଏହି ସାଇଟ୍ ସହ ସେୟାର୍ କରାଯିବ।</translation>
 <translation id="4800132727771399293">ସମୟ ସୀମା ସମାପ୍ତ ହେବାର ତାରିଖ ଏବଂ CVCକୁ ଯାଞ୍ଚ କରିବା ସହିତ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
 <translation id="480334179571489655">ମୂଳ ନୀତିରେ ତ୍ରୁଟି</translation>
@@ -790,6 +849,7 @@
 <translation id="4807049035289105102">ଆପଣ ବର୍ତ୍ତମାନ <ph name="SITE" />କୁ ଯାଇପାରିବେ ନାହିଁ, କାରଣ ଏହି ୱେବ୍‌ସାଇଟ୍ ଏପରି ଅବ୍ୟବସ୍ଥିତ ବିଶ୍ୱସନୀୟତା ପଠାଇଛି ଯାହାକୁ Google Chrome ପ୍ରକ୍ରିୟାରତ କରିପାରିବ ନାହିଁ। ନେଟ୍‍ୱର୍କ ତ୍ରୁଟି ଏବଂ ଆକ୍ରମଣ ସାଧାରଣତଃ ଅସ୍ଥାୟୀ ଅଟେ, ତେଣୁ ସମ୍ଭବତଃ ଏହି ପୃଷ୍ଠା ପରେ କାର୍ଯ୍ୟ କରିବ।</translation>
 <translation id="4813512666221746211">ନେଟ୍‌ୱର୍କ ତ୍ରୁଟି</translation>
 <translation id="4816492930507672669">ପୃଷ୍ଠାରେ ଖାପ ଖୁଆନ୍ତୁ</translation>
+<translation id="484462545196658690">ସ୍ୱତଃ</translation>
 <translation id="4850886885716139402">ଦେଖନ୍ତୁ</translation>
 <translation id="4854362297993841467">ଏହି ବିତରଣ ପଦ୍ଧତି ଉପଲବ୍ଧ ନାହିଁ। ଏକ ଭିନ୍ନ ପଦ୍ଧତି ଚେଷ୍ଠା କରନ୍ତୁ।</translation>
 <translation id="4876188919622883022">ସରଳିକୃତ ଭ୍ୟୁ</translation>
@@ -799,6 +859,7 @@
 <translation id="4879491255372875719">ସ୍ୱଚାଳିତ (ଡିଫଲ୍ଟ)</translation>
 <translation id="4880827082731008257">ଇତିବୃତ୍ତି ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="4881695831933465202">ଖୋଲନ୍ତୁ</translation>
+<translation id="4892518386797173871">ପଛଭାଗ</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">ସେଭ୍ କରନ୍ତୁ...</translation>
 <translation id="4913987521957242411">ଉପର ବାମ ପଟରେ ପଞ୍ଚ୍</translation>
@@ -808,6 +869,7 @@
 <translation id="4926049483395192435">ନିର୍ଦ୍ଦିଷ୍ଟ କରିବା ଉଚିତ।</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> କୁହେ</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">ଅଧିକ କ୍ଷମତାସମ୍ପନ୍ନ</translation>
 <translation id="4943703118917034429">ଭର୍ଚୁଆଲ୍ ରିଅଲିଟି</translation>
 <translation id="4943872375798546930">କୌଣସି ଫଳାଫଳ ନାହିଁ</translation>
 <translation id="4950898438188848926">ଟାବ୍ ସ୍ୱିଚ୍ କରିବା ବଟନ୍, ଖୋଲାଥିବା ଟାବ୍‍କୁ ଯିବା ପାଇଁ Enter ଦବାନ୍ତୁ, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -840,8 +902,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1ଟି ବ୍ୟବହାର କରାଯାଉଛି)}other{(#ଟି ବ୍ୟବହାର କରାଯାଉଛି)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />ପ୍ରୋକ୍ସୀ ଠିକଣା ଯାଞ୍ଚ ହେଉଛି<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">ମେଲବକ୍ସ 4</translation>
 <translation id="5087286274860437796">ସର୍ଭର୍‍ର ସାର୍ଟିଫିକେଟ୍ ଏହି ସମୟରେ ବୈଧ ନୁହେଁ।</translation>
 <translation id="5087580092889165836">କାର୍ଡ ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="5088142053160410913">ଅପରେଟର ପାଇଁ ମେସେଜ୍</translation>
 <translation id="5089810972385038852">ରାଜ୍ୟ</translation>
 <translation id="5093232627742069661">Z-ଫୋଲ୍ଡ</translation>
 <translation id="5094747076828555589">ଏହି ସର୍ଭର୍ ଏହା ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ ଯେ, ଏହା ଏକ <ph name="DOMAIN" /> ଅଟେ; ଏହାର ସୁରକ୍ଷା ସାର୍ଟିଫିକେଟ୍ Chromium ଦ୍ୱାରା ବିଶ୍ୱସନୀୟ ନୁହେଁ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନ୍‌ଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା କାରଣରୁ ହୋଇପାରେ।</translation>
@@ -852,15 +916,18 @@
 <translation id="5115216390227830982">ୟୁରୋପିଆନ୍-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
 <translation id="5121469660360593280">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହ Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା ଦ୍ୱାରା ଫ୍ଲାଗ୍ କରାଯାଇଥିବା ସୁରକ୍ଷା ଇଭେଣ୍ଟଗୁଡ଼ିକ ବିଷୟରେ ଡାଟା ସେୟାର୍ କରନ୍ତୁ। ଏଥିରେ ଆପଣ ଯାଉଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକର URL, ଫାଇଲ୍‍ଗୁଡ଼ିକର ନାମ କିମ୍ବା ମେଟାଡାଟା ଏବଂ ଆପଣ ଆପଣଙ୍କର ଡିଭାଇସ୍ ଓ Chromeରେ ସାଇନ୍ ଇନ୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରୁଥିବା ଉପଯୋଗକର୍ତ୍ତାନାମ ଥାଇପାରେ।</translation>
+<translation id="5123063207673082822">ସପ୍ତାହର ଶେଷ ଦିନ</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">ଆପଣଙ୍କର କାର୍ଡ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="5135404736266831032">ଠିକଣାଗୁଡ଼ିକ ପରିଚାଳିତ କରନ୍ତୁ...</translation>
 <translation id="5138227688689900538">ଅଳ୍ପ ଦେଖାନ୍ତୁ</translation>
 <translation id="5141240743006678641">ଆପଣଙ୍କର Google ବିଶ୍ୱସନୀୟତା ସହ ସିଙ୍କ୍ ହୋ‍ଇଥିବା ପାସ୍‍ୱର୍ଡଗୁଡ଼ିକୁ ଏନ୍‍କ୍ରିପ୍ଟ କରନ୍ତୁ</translation>
 <translation id="5145883236150621069">ନୀତି ପ୍ରତିକ୍ରିୟାରେ ଥିବା ତ୍ରୁଟିର କୋଡ୍‍</translation>
+<translation id="5148809049217731050">ଫେସ୍ ଅପ୍</translation>
 <translation id="515292512908731282">C4 (ଏନଭଲପ୍)</translation>
 <translation id="5158275234811857234">କଭର୍</translation>
 <translation id="5159010409087891077">ଏକ ନୂଆ ଇନ୍‌କଗ୍ନିଟୋ ୱିଣ୍ଡୋରେ ପୃଷ୍ଠା ଖୋଲନ୍ତୁ (⇧⌘N)</translation>
+<translation id="5161506081086828129">ଷ୍ଟାକର୍ 9</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" />ର CVC ଲେଖନ୍ତୁ। ଆପଣ ସୁନିଶ୍ଚିତ କରିବା ପରେ, ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରୁ କାର୍ଡର ବିବରଣୀ ଏହି ସାଇଟ୍‌ ସହିତ ସେୟାର୍‌ କରାଯିବ।</translation>
 <translation id="5169827969064885044">ଆପଣଙ୍କ ସଂସ୍ଥାର ଆକାଉଣ୍ଟକୁ ଥିବା ଆକ୍ସେସ୍ ହରାଇବା କିମ୍ବା ନିଜର ପରିଚୟ ଚୋରି ହେବାର ଅନୁଭୁତି ପ୍ରାପ୍ତ କରିପାରନ୍ତି। ବର୍ତ୍ତମାନ, Chrome ଆପଣଙ୍କୁ ପାସ୍‌ୱର୍ଡ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ସୁପାରିଶ୍‌ କରୁଛି।</translation>
 <translation id="5170017743895942767">Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା</translation>
@@ -881,6 +948,7 @@
 <translation id="5250209940322997802">"ନେଟ୍‌ୱର୍କରେ ସଂଯୋଗ କରନ୍ତୁ"</translation>
 <translation id="5251803541071282808">କ୍ଲାଉଡ୍</translation>
 <translation id="5252000469029418751">C7 (ଏନଭଲପ୍)</translation>
+<translation id="5254043433801397071">ପ୍ରିଣ୍ଟ ବିଷୟବସ୍ତୁକୁ ଅପ୍ଟିମାଇଜ୍ କରନ୍ତୁ</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">ଦେୟ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି</translation>
 <translation id="5266128565379329178">ଉପର ପଟରେ ବାଇଣ୍ଡ</translation>
@@ -894,6 +962,7 @@
 <translation id="5287240709317226393">କୁକୀଗୁଡିକୁ ଦେଖାନ୍ତୁ</translation>
 <translation id="5287456746628258573">ଏହି ସାଇଟ୍ ଏକ ପୁରୁଣା ସୁରକ୍ଷା କନଫିଗ୍‍‍ରେସନ୍ ବ୍ୟବହାର କରେ, ଯାହା ହୁଏତ ଆପଣଙ୍କର ସୂଚନାକୁ (ଉଦାହରଣ ସ୍ୱରୂପ, ପାସ୍‍ୱାର୍ଡ କିମ୍ବା କ୍ରେଡିଟ୍ କାର୍ଡ ନମ୍ବର), ଏହି ସାଇଟ୍‍‍ରେ ପଠାଯିବା ସମୟରେ ପ୍ରକଟ କରିପାରେ।</translation>
 <translation id="5288108484102287882">ନୀତି ମୂଲ୍ୟର ମାନ୍ୟତା ଚେତାବନୀ ଦେଇଛନ୍ତି</translation>
+<translation id="5289384342738547352">ଏକାଧିକ ଡକ୍ୟୁମେଣ୍ଟର ପରିଚାଳନା</translation>
 <translation id="5295292838686006428">ଏକ ସାଇଟ୍ କିମ୍ବା ଆପ୍‌ରେ ଡାଟା ଚୋରି ହୋଇଥିବା ଯୋଗୁଁ ଆପଣଙ୍କର ପାସ୍‌ୱାର୍ଡକୁ ବିପଦରେ ପକାଇଦେଇଛି। Chrome ବର୍ତ୍ତମାନ ଆପଣଙ୍କର ସେଭ୍ କରାଯାଇଥିବା ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିବା ପାଇଁ ସୁପାରିଶ କରେ।</translation>
 <translation id="5299298092464848405">ନୀତି ପାର୍ସ କରିବାରେ ତ୍ରୁଟି</translation>
 <translation id="5300589172476337783">ପ୍ରଦର୍ଶନ କରନ୍ତୁ</translation>
@@ -918,10 +987,12 @@
 <translation id="5396631636586785122">ଡାହାଣ ପଟରେ ଏଜ୍ ଷ୍ଟିଚ୍</translation>
 <translation id="5400836586163650660">ଧୂସର</translation>
 <translation id="540969355065856584">ଏହି ସର୍ଭର୍, ଏହା <ph name="DOMAIN" /> ବୋଲି ପ୍ରମାଣିତ କରିପାରିଲା ନାହିଁ; ଏହି ସମୟରେ ଏହାର ସୁରକ୍ଷା ସାର୍ଟିଫିକେଟ୍ ବୈଧ ନୁହେଁ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା କାରଣରୁ ହୋଇପାରେ।</translation>
+<translation id="541416427766103491">ଷ୍ଟାକର୍ 4</translation>
 <translation id="5421136146218899937">ବ୍ରାଉଜିଂ ଡାଟା ଖାଲି କରନ୍ତୁ...</translation>
 <translation id="5430298929874300616">ବୁକମାର୍କ୍ କାଢ଼ିଦିଅନ୍ତୁ</translation>
 <translation id="5431657950005405462">ଆପଣଙ୍କ ଫାଇଲ୍ ମିଳିଲା ନାହିଁ</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />"ରେ ସ୍କିମା ବୈଧିକରଣ ତ୍ରୁଟି: <ph name="ERROR" /></translation>
+<translation id="5443468954631487277">ଓଲଟା ଅର୍ଡରରେ ଫେସ୍ ଅପ୍</translation>
 <translation id="5452270690849572955">ଏହି <ph name="HOST_NAME" /> ପୃଷ୍ଠା ମିଳିଲା ନାହିଁ</translation>
 <translation id="5455374756549232013">ଖରାପ 'ନୀତି ଟାଇମ୍‌ଷ୍ଟାମ୍ପ୍'</translation>
 <translation id="5457113250005438886">ଅବୈଧ</translation>
@@ -943,7 +1014,9 @@
 <translation id="552553974213252141">ଟେକ୍ସଟ୍‌ ଠିକ୍‌ ଭାବରେ କଢ଼ାଯାଇଥିଲା?</translation>
 <translation id="55293785478302737">ଏଜ୍ ଷ୍ଟିଚ୍</translation>
 <translation id="553484882784876924">Prc6 (ଏନଭଲପ୍)</translation>
+<translation id="5539243836947087108">ରାଫ୍ଟ</translation>
 <translation id="5540224163453853">ଅନୁରୋଧ କରାଯାଇଥିବା ଲେଖାଟି ମିଳିଲା ନାହିଁ।</translation>
+<translation id="5541086400771735334">ମେଲବକ୍ସ 7</translation>
 <translation id="5541546772353173584">ଇମେଲ୍ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="5545756402275714221">ଆପଣଙ୍କ ପାଇଁ ଆର୍ଟିକଲ୍ସ</translation>
 <translation id="5552137475244467770">Chrome ସମୟେ ସମୟେ ଅନ୍‌ଲାଇନ୍‌ରେ ପ୍ରକାଶ କରାଯାଇଥିବା ତାଲିକାଗୁଡ଼ିକ ଅନୁଯାୟୀ ଆପଣଙ୍କ ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକର ଯାଞ୍ଚ କରିଥାଏ। ଏପରି କରିବା ବେଳେ, ଆପଣଙ୍କର ପାସ୍‌ୱାର୍ଡ ଏବଂ ଉପଯୋଗକର୍ତ୍ତାନାମଗୁଡ଼ିକ ଏନ୍‌କ୍ରିପ୍ଟ କରାଯାଇଥାଏ, ଯାହାଫଳରେ ସେଗୁଡ଼ିକ Google ସମେତ ଅନ୍ୟ କାହା ଦ୍ୱାରା ପଢ଼ାଯାଇ ପାରିବ ନାହିଁ।</translation>
@@ -968,10 +1041,13 @@
 <translation id="5632627355679805402">ଆପଣଙ୍କର ଡାଟା <ph name="BEGIN_LINK" />Google ପାସ୍‌ୱର୍ଡ<ph name="END_LINK" /> ସହିତ <ph name="TIME" />ରେ ଏନ୍‍କ୍ରିପ୍ଟ କରାଯାଇଥିଲା। ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ ଏହାକୁ ଲେଖନ୍ତୁ।</translation>
 <translation id="5633066919399395251">ଏହି ସମୟରେ <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />ରେ ଥିବା ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍‌ରେ ଏପରି ବିପଦଜ୍ଜନକ ପ୍ରୋଗ୍ରାମ୍‌ ଇନ୍‌ଷ୍ଟଲ୍‌ କରିବାକୁ ଚେଷ୍ଟା କରିପାରନ୍ତି ଯାହା ଆପଣଙ୍କ ସୂଚନା (ଉଦାହରଣ ସ୍ୱରୂପ ଫଟୋ, ପାସ୍‌ୱର୍ଡ, ମେସେଜ୍‍ କିମ୍ବା କ୍ରେଡିଟ୍‌ କାର୍ଡ) ଚୋରି କରନ୍ତି କିମ୍ବା ଆପଣଙ୍କର ସୂଚନା ଡିଲିଟ୍‌ କରନ୍ତି। <ph name="BEGIN_LEARN_MORE_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">ପ୍ରତାରଣାମୂଳକ ବିଷୟବସ୍ତୁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
+<translation id="5644090287519800334">ସାଇଡ୍ 1 ଇମେଜ୍ X ସିଫ୍ଟ</translation>
+<translation id="5645854190134202180">ଦ୍ୱିତୀୟ ସିଫ୍ଟ</translation>
 <translation id="5659593005791499971">ଇମେଲ୍</translation>
 <translation id="5663614846592581799">9x11 (ଏନଭଲପ୍)</translation>
 <translation id="5663955426505430495">ଅତିରିକ୍ତ ଫଙ୍କ୍‌ସନ୍ସ ପାଇଁ, ଏହି ଡିଭାଇସ୍‍ର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍ ଏକ୍ସଟେନ୍‌ସନ୍‌ଗୁଡ଼ିକ ଇନ୍‌ଷ୍ଟଲ୍ କରିଛନ୍ତି। ଆପଣଙ୍କର କିଛି ଡାଟାକୁ ଏକ୍ସଟେନ୍‌ସନ୍‌ଗୁଡ଼ିକର ଆକ୍ସେସ୍ ଅଛି।</translation>
 <translation id="5675650730144413517">ଏହି ପୃଷ୍ଠା କାମ କରୁନାହିଁ</translation>
+<translation id="568292603005599551">ଛବିର X ସ୍ଥିତି</translation>
 <translation id="5684874026226664614">ଓହୋଃ! ଏହି ପୃଷ୍ଠା ଅନୁବାଦ କରାଯାଇପାରିଲା ନାହିଁ।</translation>
 <translation id="5685654322157854305">ସିପିଂ ଠିକଣା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="5689199277474810259">JSONକୁ ଏକ୍ସପୋର୍ଟ କରନ୍ତୁ</translation>
@@ -989,6 +1065,7 @@
 <translation id="5763042198335101085">ଏକ ବୈଧ ଇମେଲ୍ ଠିକଣା ଲେଖନ୍ତୁ</translation>
 <translation id="5763703224595565476">ଆପଣଙ୍କ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍ ଆପଣଙ୍କର ବ୍ରାଉଜର୍‍‍ରେ Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା ସକ୍ଷମ କରିଛନ୍ତି। Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷାର ଆପଣଙ୍କର କିଛି ଡାଟାକୁ ଆକ୍ସେସ୍ ଅଛି।</translation>
 <translation id="5765072501007116331">ବିତରଣ ପଦ୍ଧତି ଓ ଆବଶ୍ୟକତା ଦେଖିବା ପାଇଁ ଗୋଟିଏ ଠିକଣା ଚୟନ କରନ୍ତୁ</translation>
+<translation id="5776313857861697733">ପ୍ରାଥମିକତା</translation>
 <translation id="5778550464785688721">MIDI ଡିଭାଇସ୍‌ ପୂର୍ଣ୍ଣ ନିୟନ୍ତ୍ରଣ</translation>
 <translation id="5781136890105823427">ପରୀକ୍ଷଣ କରାଯାଇଛି</translation>
 <translation id="578305955206182703">ଅମ୍ବର୍</translation>
@@ -1009,6 +1086,7 @@
 <translation id="5855253129151731373">ଏହି ସାଇଟ୍‍ର ହୋଷ୍ଟନାମ <ph name="LOOKALIKE_DOMAIN" /> ସହ ସମାନ ଥିବା ପରି ଜଣାଯାଉଛି। ଆକ୍ରମଣକାରୀମାନେ ବେଳେବେଳେ ଡୋମେନ୍ ନାମରେ ସହଜରେ ଦେଖା ଯାଉନଥିବା, ଛୋଟ ପରିବର୍ତ୍ତନ କରି ସାଇଟ୍‍ଗୁଡ଼ିକର ନକଲ କରିଥାନ୍ତି।
 
     ଯଦି ଆପଣ ବିଶ୍ୱାସ କରୁଛନ୍ତି, ଏହା ତ୍ରୂଟିରେ ଦେଖାଯାଇଛି, ତେବେ ଦୟାକରି https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appealsକୁ ଯାଆନ୍ତୁ।</translation>
+<translation id="5862579898803147654">ଷ୍ଟାକର୍ 8</translation>
 <translation id="5863847714970149516">ଆଗରେ ଆସୁଥିବା ପୃଷ୍ଠା ଆପଣଙ୍କ ଠାରୁ ଶୁଳ୍କ ନେବା ପାଇଁ ଚେଷ୍ଟା କରିପାରେ</translation>
 <translation id="5866257070973731571">ଫୋନ୍ ନମ୍ବର ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="5866898949289125849">ଆପଣ ଏକ ଡେଭେଲପର୍ ଟୁଲ୍ସର ପୃଷ୍ଠା ଦେଖୁଛନ୍ତି</translation>
@@ -1021,6 +1099,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> ( ସିଙ୍କ୍‍ କରାଯାଇଛି)</translation>
 <translation id="59174027418879706">ସାମର୍ଥ୍ୟ ହୋଇଛି</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">ଚାଲୁ ଅଛି</translation>
 <translation id="5921639886840618607">Google ଆକାଉଣ୍ଟରେ କାର୍ଡ ସେଭ୍‌ କରିବେ?</translation>
 <translation id="5922853866070715753">ପ୍ରାୟ ହୋଇଗଲାଣି!</translation>
 <translation id="5932224571077948991">ସାଇଟ୍, ଅନଧିକାର ପ୍ରବେଶ କରିଥିବା କିମ୍ବା ବିଭ୍ରାନ୍ତିକର ବିଜ୍ଞାପନ ଦେଖାଉଛି</translation>
@@ -1031,11 +1110,13 @@
 <translation id="5975083100439434680">ଜୁମ୍ କମାନ୍ତୁ</translation>
 <translation id="5979084224081478209">ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="5980920751713728343">ସୂଚୀ-3x5</translation>
+<translation id="5984570616552610254">ଚେମ୍ବରର ଆର୍ଦ୍ରତା</translation>
 <translation id="598637245381783098">ପେମେଣ୍ଟ ଆପ୍ ଖୋଲିପାରିଲା ନାହିଁ</translation>
 <translation id="5989320800837274978">ନା ସ୍ଥିର ପ୍ରକ୍ସି ସର୍ଭର୍‌ଗୁଡ଼ିକୁ ନା ଏକ .pac ସ୍କ୍ରିପ୍ଟ URL ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଛି।</translation>
 <translation id="5990559369517809815">ସର୍ଭର୍‌ରକୁ କରାଯାଇଥିବା ଅନୁରୋଧଗୁଡ଼ିକୁ ଏକ ଏକ୍ସଟେନ୍‌ସନ୍ ଦ୍ଵାରା ବ୍ଲକ୍ କରିଦିଆଯାଇଛି।</translation>
 <translation id="5992691462791905444">ଇଞ୍ଜିନିୟରିଂ Z-ଫୋଲ୍ଡ</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' ପାଇଁ <ph name="RESULT_COUNT" />ଟି ପରିଣାମ</translation>
+<translation id="6008122969617370890">N-ରୁ-1 ଅର୍ଡର୍</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">ଆପଣଙ୍କର ପାସ୍‌ୱାର୍ଡ୍ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="6015796118275082299">ବର୍ଷ</translation>
@@ -1045,15 +1126,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (ସିଙ୍କ୍ କରାଯାଇଛି)</translation>
 <translation id="6027201098523975773">ଏକ ନାମ ଲେଖନ୍ତୁ</translation>
 <translation id="603068602130820122">ଡାହାଣ ପଟରେ ଦୁଇଟି ଷ୍ଟାପଲ୍</translation>
+<translation id="6032524144326295339">ମେଲବକ୍ସ 2</translation>
 <translation id="6032955021262906325">ବାମ ପଟରେ ବାଇଣ୍ଡ</translation>
 <translation id="6034000775414344507">ହାଲ୍‌କା ଧୂସର</translation>
 <translation id="6034283069659657473">10x14 (ଏନଭଲପ୍)</translation>
 <translation id="6034514109191629503">ଅକର୍ଡିଅନ୍ ଫୋଲ୍ଡ</translation>
 <translation id="6039846035001940113">ଯଦି ସମସ୍ୟା ଜାରି ରହେ, ସାଇଟ୍‍ର ମାଲିକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="6040143037577758943">ବନ୍ଦ</translation>
+<translation id="6041777658117377052">ଚେମ୍ବରର ତାପମାତ୍ରା</translation>
 <translation id="6044573915096792553">ଆକାର 12</translation>
+<translation id="6045164183059402045">ଇମ୍ପୋଜିସନ୍ ଟେମ୍ପଲେଟ୍</translation>
 <translation id="6047233362582046994">ଆପଣଙ୍କ ସୁରକ୍ଷା ପ୍ରତି ଥିବା ବିପଦକୁ ଯଦି ଆପଣ ବୁଝିପାରନ୍ତି ତେବେ, ବିପଦପୂର୍ଣ୍ଣ ଆପ୍‌ଗୁଡ଼ିକୁ କଢ଼ାଯିବା ପୂର୍ବରୁ ଆପଣ <ph name="BEGIN_LINK" />ଏହି ସାଇଟ୍‍କୁ ଯାଇପାରିବେ<ph name="END_LINK" />।</translation>
 <translation id="6047927260846328439">ଏହି ବିଷୟବସ୍ତୁ ଆପଣଙ୍କୁ ଧୋକା ଦେଇ ସଫ୍ଟୱେର୍ ଇନ୍‍ଷ୍ଟଲ୍‌ କରାଇବା କିମ୍ବା ବ୍ୟକ୍ତିଗତ ସୂଚନା ପ୍ରକାଶ କରାଇବାକୁ ଚେଷ୍ଟା କରିପାରେ। <ph name="BEGIN_LINK" />ଯେକୌଣସି ଉପାୟରେ ଦେଖାନ୍ତୁ<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">ପୃଷ୍ଠା ଡେଲିଭେରୀ</translation>
 <translation id="6051221802930200923">ଆପଣ ବର୍ତ୍ତମାନ <ph name="SITE" />କୁ ଯାଇପାରିବେ ନାହିଁ, କାରଣ ଏହି ୱେବ୍‌ସାଇଟ୍ ସାର୍ଟିଫିକେଟ୍ ପିନିଂ ବ୍ୟବହାର କରୁଛି। ନେଟ୍‍ୱର୍କ ତ୍ରୁଟି ଏବଂ ଆକ୍ରମଣ ସାଧାରଣତଃ ଅସ୍ଥାୟୀ ଅଟେ, ତେଣୁ ସମ୍ଭବତଃ ଏହି ପୃଷ୍ଠା ପରେ କାର୍ଯ୍ୟ କରିବ।</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">ଆପଣଙ୍କର ସମସ୍ତ ଡିଭାଇସ୍‌ରେ ନିଜର କାର୍ଡ ବ୍ୟବହାର କରିବେ?</translation>
@@ -1073,6 +1158,7 @@
 <translation id="6157877588268064908">ସିପିଂ ପଦ୍ଧତି ଏବଂ ଆବଶ୍ୟକତାଗୁଡ଼ିକ ଦେଖିବାକୁ, ଗୋଟିଏ ଠିକଣା ଚୟନ କରନ୍ତୁ</translation>
 <translation id="6165508094623778733">ଅଧିକ ଜାଣନ୍ତୁ</translation>
 <translation id="6177128806592000436">ଏହି ସାଇଟ୍‌ରେ ଆପଣଙ୍କର ସଂଯୋଗ ସୁରକ୍ଷିତ ନୁହେଁ</translation>
+<translation id="6180316780098470077">ପୁଣି ଚେଷ୍ଟା କରିବା ଇଣ୍ଟରଭାଲ୍</translation>
 <translation id="6196640612572343990">ତୃତୀୟ ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation>
 <translation id="6203231073485539293">ଆପଣଙ୍କର ଇଣ୍ଟର୍‌ନେଟ୍ ସଂଯୋଗକୁ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="6218753634732582820">Chromiumରୁ ଠିକଣା କାଢ଼ି ଦେବେ?</translation>
@@ -1081,6 +1167,7 @@
 <translation id="6234122620015464377">ପ୍ରତ୍ୟେକ ଡକ୍ୟୁମେଣ୍ଟ ପରେ ଟ୍ରିମ୍ କରନ୍ତୁ</translation>
 <translation id="6240447795304464094">Google Pay ଲୋଗୋ</translation>
 <translation id="6241121617266208201">ପ୍ରସ୍ତାବଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ</translation>
+<translation id="624499991300733384">ପ୍ରିଣ୍ଟ କମ୍ପୋଜିଟର୍ ସେବା</translation>
 <translation id="6251924700383757765">ଗୋପନୀୟତା ନୀତି</translation>
 <translation id="6254436959401408446">ଏହି ପୃଷ୍ଠା ଖୋଲିବା ପାଇଁ ପର୍ଯ୍ୟାପ୍ତ ମେମୋରୀ ନାହିଁ</translation>
 <translation id="625755898061068298">ଆପଣ ଏହି ସାଇଟ୍ ପାଇଁ, ସୁରକ୍ଷା ଚେତାବନୀଗୁଡ଼ିକୁ ଅକ୍ଷମ କରିବା ନିମନ୍ତେ ବାଛିଛନ୍ତି।</translation>
@@ -1129,6 +1216,7 @@
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> ପାଇଁ ମିଆଦ ଶେଷ ହେଉଥିବା ତାରିଖ ଏବଂ CVC ଲେଖନ୍ତୁ</translation>
 <translation id="6415778972515849510">Chromium ଆପଣଙ୍କୁ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟକୁ ସୁରକ୍ଷିତ ରଖିବା ଏବଂ ଆପଣଙ୍କର ପାସ୍‍ୱାର୍ଡ ବଦଳାଇବାରେ ସାହାଯ୍ୟ କରିପାରିବ।</translation>
 <translation id="6423385022588644828">ବର୍ତ୍ତମାନ ଠାରୁ Touch ID ବ୍ୟବହାର କରି ଆପଣଙ୍କର କାର୍ଡଗୁଡ଼ିକୁ ଅତି ଶୀଘ୍ର ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
+<translation id="6425092077175753609">ସାମଗ୍ରୀ</translation>
 <translation id="6427730057873428458">ଗେଟ୍ ଫୋଲ୍ଡ</translation>
 <translation id="6433490469411711332">ଯୋଗାଯୋଗ ସୂଚନା ଏଡିଟ୍‍ କରନ୍ତୁ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ସଂଯୋଗ କରିବାକୁ ଅସ୍ୱୀକାର କରିଛନ୍ତି।</translation>
@@ -1166,6 +1254,7 @@
 <translation id="6604181099783169992">ମୋସନ୍ କିମ୍ବା ଲାଇଟ୍‌ ସେନ୍ସର୍</translation>
 <translation id="6609880536175561541">Prc7 (ଏନଭଲପ୍)</translation>
 <translation id="6612358246767739896">ସୁରକ୍ଷିତ ବିଷୟବସ୍ତୁ</translation>
+<translation id="6615297766614333076">ଷ୍ଟାକର୍ 2</translation>
 <translation id="6624427990725312378">ଯୋଗାଯୋଗ ସୂଚନା</translation>
 <translation id="6626291197371920147">ବୈଧ କାର୍ଡ୍ ନମ୍ବର ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="6628463337424475685"><ph name="ENGINE" /> ସନ୍ଧାନ</translation>
@@ -1181,6 +1270,8 @@
 <translation id="6670613747977017428">ନିରାପଦର ସହ ଫେରନ୍ତୁ</translation>
 <translation id="6671697161687535275">Chromiumରୁ ପରାମର୍ଶରୁ କାଢ଼ି ଦେବେ?</translation>
 <translation id="6685834062052613830">ସାଇନ୍‌ ଆଉଟ୍‌ କରନ୍ତୁ ଏବଂ ସେଟ୍‌ଅପ୍‌ ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ</translation>
+<translation id="6687335167692595844">ଅନୁରୋଧ କରାଯାଇଥିବା ଫଣ୍ଟ ଆକାର</translation>
+<translation id="6689249931105087298">ବ୍ଲାକ୍ ପଏଣ୍ଟ କମ୍ପ୍ରେସନ୍ ସହିତ ରିଲେଟିଭ୍</translation>
 <translation id="6689271823431384964">ଆପଣ ସାଇନ୍ ଇନ୍ କରିଥିବା ଯୋଗୁଁ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ଆପଣଙ୍କ କାର୍ଡଗୁଡ଼ିକ ସେଭ୍ କରିବାକୁ Chrome ଅଫର୍ ଦେଉଛି। ଆପଣ ସେଟିଂସ୍‌ରେ ଏହି ଆଚରଣ ପରିବର୍ତ୍ତନ କରିପାରିବେ। ଆପଣଙ୍କ ଆକାଉଣ୍ଟରୁ କାର୍ଡ ଧାରକଙ୍କ ନାମ ଆସିଛି।</translation>
 <translation id="6704582573942289642">ଏହା ସଠିକ୍ ସାଇଟ୍ ଅଟେ କି?</translation>
 <translation id="6710213216561001401">ପୂର୍ବବର୍ତ୍ତୀ</translation>
@@ -1226,6 +1317,7 @@
 <translation id="6964255747740675745">ନେଟ୍‌ୱର୍କ କନ୍‌ଫିଗରେସନ୍‌ ବିଶ୍ଳେଷଣ ହେବାରେ ବିଫଳ ହେଲା (ଅବୈଧ JSON)।</translation>
 <translation id="6965382102122355670">ଓକେ ବଟନ୍</translation>
 <translation id="6965978654500191972">ଡିଭାଇସ୍</translation>
+<translation id="696703987787944103">ପରସେପଚୁଆଲ୍</translation>
 <translation id="6970216967273061347">ଜିଲ୍ଲା</translation>
 <translation id="6973656660372572881">ଉଭୟ ନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରକ୍ସି ସର୍ଭର୍ ଓ .pac ସ୍କ୍ରିପ୍ଟ URL ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଛି।</translation>
 <translation id="6973932557599545801">କ୍ଷମା କରନ୍ତୁ, ମୁଁ ସାହାଯ୍ୟ କରିବା ପାଇଁ ସକ୍ଷମ ନୁହେଁ, ଦୟାକରି ଆପଣ ଏହାକୁ ନିଜେ କରିବା ଜାରି ରଖନ୍ତୁ।</translation>
@@ -1247,6 +1339,7 @@
 <translation id="7075452647191940183">ଅନୁରୋଧଟି ବହୁତ ଲମ୍ବା ଅଟେ</translation>
 <translation id="7079718277001814089">ଏହି ସାଇଟ୍‌ରେ ମାଲ୍‌ୱେର୍‌ ଅଛି।</translation>
 <translation id="7081308185095828845">ଆପଣଙ୍କର ଡିଭାଇସ୍‌ରେ ଏହି ଫିଚର୍‍ଟି ଉପଲବ୍ଧ ନାହିଁ</translation>
+<translation id="7083258188081898530">ଟ୍ରେ 9</translation>
 <translation id="7087282848513945231">ଦେଶ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> ପାଇଁ Googleରେ ଖୋଜନ୍ତୁ</translation>
 <translation id="7108338896283013870">ଲୁଚାନ୍ତୁ</translation>
@@ -1258,6 +1351,7 @@
 <translation id="7135130955892390533">ସ୍ଥିତି ଦେଖାନ୍ତୁ</translation>
 <translation id="7138472120740807366">ଡେଲିଭରୀ ପଦ୍ଧତି</translation>
 <translation id="7139724024395191329">ଏମିରାଟ୍</translation>
+<translation id="714064300541049402">ସାଇଡ୍ 2 ଇମେଜ୍ X ସିଫ୍ଟ</translation>
 <translation id="7152423860607593928">ନମ୍ବର-11 (ଏନଭଲପ୍)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ଏବଂ ଅଧିକ <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />ଟି}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ଏବଂ ଅଧିକ <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />ଟି}}</translation>
 <translation id="7153618581592392745">ଲାଭେଣ୍ଡର୍</translation>
@@ -1276,6 +1370,7 @@
 <translation id="721197778055552897">ଏହି ଅସୁବିଧା ସମ୍ଵନ୍ଧରେ <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /> ।</translation>
 <translation id="7219179957768738017">ସଂଯୋଗ <ph name="SSL_VERSION" />ର ବ୍ୟବହାର କରିଥାଏ।</translation>
 <translation id="7220786058474068424">ପ୍ରକ୍ରିୟାକରଣ ହେଉଛି</translation>
+<translation id="7233592378249864828">ପ୍ରିଣ୍ଟ ସୁନିଶ୍ଚିତକରଣ ସିଟ୍</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">ସାଇଟ୍‌ରେ ମାଲୱେର୍ ଅଛି</translation>
 <translation id="724975217298816891">ଆପଣଙ୍କର କ୍ରେଡିଟ୍ କାର୍ଡ ବିବରଣୀ ଅପ୍‌ଡେଟ୍ କରିବାକୁ <ph name="CREDIT_CARD" /> ପାଇଁ ମିଆଦ ସମାପ୍ତି ତାରିଖ ଏବଂ CVC ଲେଖନ୍ତୁ। ଆପଣ ଥରେ ସୁନିଶ୍ଚିତ କରିବା ପରେ ଆପଣଙ୍କର କାର୍ଡ ବିବରଣୀ ଏହି ସାଇଟ୍ ସହ ସେୟାର୍ କରାଯିବ।</translation>
@@ -1285,6 +1380,7 @@
 <translation id="725866823122871198"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />ରୁ ଏକ ବ୍ୟକ୍ତିଗତ ସଂଯୋଗ ସ୍ଥାପନ କରାଯାଇପାରିବ ନାହିଁ କାରଣ ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟର୍‌ର ତାରିଖ ଓ ସମୟ (<ph name="DATE_AND_TIME" />) ଭୁଲ୍‍ ଅଟେ।</translation>
 <translation id="7260504762447901703">ଆକ୍ସେସ୍‌ ପ୍ରତ୍ୟାହାର କରନ୍ତୁ</translation>
 <translation id="7275334191706090484">ବୁକ୍‍ମାର୍କଗୁଡ଼ିକୁ ପରିଚାଳନା କରାଯାଇଛି</translation>
+<translation id="7292031607255951991">ପ୍ରାପ୍ତକର୍ତ୍ତାଙ୍କ ନାମ</translation>
 <translation id="7298195798382681320">ସୁପାରିଶ୍ କରାଯାଇଛି</translation>
 <translation id="7300012071106347854">କୋବାଲ୍ଟ ନୀଳ</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1362,6 +1458,7 @@
 <translation id="7569983096843329377">କଳା</translation>
 <translation id="7575207903026901870">ପ୍ରସ୍ତାବ ବଟନ୍‍କୁ କାଢ଼ି ଦିଅନ୍ତୁ, ଏହି ପ୍ରସ୍ତାବକୁ କାଢ଼ିବା ପାଇଁ Enter ଦବାନ୍ତୁ</translation>
 <translation id="7578104083680115302">ଆପଣ Googleରେ ସେଭ୍ କରି ରଖିଥିବା କାର୍ଡଗୁଡ଼ିକୁ ବ୍ୟବହାର କରି ସମସ୍ତ ଡିଭାଇସ୍‌ରେ ସାଇଟ୍ ଏବଂ ଆପ୍ସରେ ଶୀଘ୍ର ପେମେଣ୍ଟ କରନ୍ତୁ।</translation>
+<translation id="7581199239021537589">ସାଇଡ୍ 2 ଇମେଜ୍ Y ସିଫ୍ଟ</translation>
 <translation id="7592362899630581445">ସର୍ଭର୍ ସାର୍ଟିଫିକେଟ୍ ନାମର କଟକଣାକୁ ଲଙ୍ଘନ କରେ।</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" />ଠାରୁ କମ୍</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> ବର୍ତ୍ତମାନ ଏହି ଅନୁରୋଧ ପରିଚାଳନା କରିବାକୁ ଅକ୍ଷମ।</translation>
@@ -1369,10 +1466,13 @@
 <translation id="7610193165460212391">ମୂଲ୍ୟ <ph name="VALUE" /> ପରିସୀମା ବାହାରେ ଅଛି।</translation>
 <translation id="7613889955535752492">ସମୟ ଅବଧିର ସମାପ୍ତି: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">ଆପଣଙ୍କ ପାଖରେ ପୂର୍ବରୁ ଡାଟା ଅଛି ଯାହା ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ ପାସ୍‌ୱର୍ଡର ଭିନ୍ନ ସଂସ୍କରଣ ବ୍ୟବହାର କରି ଏନ୍‌କ୍ରିପ୍ଟ କରାଯାଇଛି। ଦୟାକରି ନିମ୍ନରେ ଏହାକୁ ଲେଖନ୍ତୁ।</translation>
+<translation id="7619838219691048931">ଶେଷ ସିଟ୍</translation>
+<translation id="762844065391966283">ଥରକେ ଗୋଟିଏ</translation>
 <translation id="7633909222644580952">କାର୍ଯ୍ୟଦକ୍ଷତା ଡାଟା ଏବଂ କ୍ରାସ୍ ରିପୋର୍ଟଗୁଡ଼ିକ</translation>
 <translation id="7637571805876720304">Chromiumରୁ କ୍ରେଡିଟ୍ କାର୍ଡ କାଢ଼ିବେ?</translation>
 <translation id="7638605456503525968">କ୍ରମିକ ପୋର୍ଟଗୁଡ଼ିକ</translation>
 <translation id="7639968568612851608">ଗାଢ଼ ଧୂସର</translation>
+<translation id="7647206758853451655">ପ୍ରିଣ୍ଟ ଗୁଣବତ୍ତା</translation>
 <translation id="7653957176542370971">ପେମେଣ୍ଟ ହ୍ୟାଣ୍ଡଲର୍ ସିଟ୍ ବନ୍ଦ ଅଛି</translation>
 <translation id="765676359832457558">ଉନ୍ନତ ସେଟିଂସ୍ ଲୁଚାନ୍ତୁ...</translation>
 <translation id="7658239707568436148">ବାତିଲ୍</translation>
@@ -1381,10 +1481,13 @@
 <translation id="7667346355482952095">ଫେରସ୍ତ ପଲିସି ଟୋକନ୍ ଖାଲି ଅଛି ବା ସାମ୍ପ୍ରତିକ ଟୋକନ୍ ସହ ମେଳ ଖାଉନି।</translation>
 <translation id="7668654391829183341">ଅଜଣା ଡିଭାଇସ୍</translation>
 <translation id="7669271284792375604">ଏହି ସାଇଟ୍‌ରେ ଥିବା ଆକ୍ରମଣକାରୀମାନେ କୌଶଳରେ ଆପଣଙ୍କ ଦ୍ଵାରା ଏପରି ପ୍ରୋଗ୍ରାମ୍ ଇନ୍‌ଷ୍ଟଲ୍ କରିବାକୁ ଚେଷ୍ଟା କରିପାରନ୍ତି ଆପଣଙ୍କର ବ୍ରାଉଜିଂ ଅଭିଜ୍ଞତାର କ୍ଷତି କରିପାରେ (ଉଦାହରଣ ସ୍ଵରୂପ, ଆପଣଙ୍କର ମୂଳପୃଷ୍ଠାରେ ପରିବର୍ତ୍ତନ କରିବା କିମ୍ବା ଆପଣ ଦେଖୁଥିବା ସାଇଟ୍‌ଗୁଡ଼ିକରେ ଅତିରିକ୍ତ ବିଜ୍ଞାପନ ପ୍ରଦର୍ଶନ କରିବା)।</translation>
+<translation id="7673278391011283842">ମେଲବକ୍ସ 6</translation>
 <translation id="7676643023259824263">କ୍ଲିପ୍‌ବୋର୍ଡ ଟେକ୍ସଟ୍ <ph name="TEXT" /> ଖୋଜନ୍ତୁ</translation>
 <translation id="7681101578153515023">ସନ୍ଧାନ ଇଞ୍ଜିନ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation>
 <translation id="7682287625158474539">ଶିପିଂ</translation>
 <translation id="7687186412095877299">ଆପଣଙ୍କ ଦ୍ୱାରା ସେଭ୍‍ କରାଯାଇଥିବା ପେମେଣ୍ଟ ପଦ୍ଧତିକୁ ବ୍ୟବହାର କରି ପେମେଣ୍ଟ ଫର୍ମ ପୂରଣ କରନ୍ତୁ</translation>
+<translation id="7687305263118037187">ପୁଣି ଚେଷ୍ଟା କରିବା ସମୟ ସରିଗଲା</translation>
+<translation id="7693583928066320343">ପୃଷ୍ଠା ଅର୍ଡର ପ୍ରାପ୍ତ ହୋଇଛି</translation>
 <translation id="7697066736081121494">Prc8 (ଏନଭଲପ୍)</translation>
 <translation id="769721561045429135">ବର୍ତ୍ତମାନ, ଆପଣଙ୍କ ପାଖରେ ସେହି କାର୍ଡଗୁଡ଼ିକ ଅଛି ଯାହା କେବଳ ଏହି ଡିଭାଇସ୍‌ରେ ବ୍ୟବହାର କରାଯାଇପାରିବ। କାର୍ଡଗୁଡ଼ିକର ସମୀକ୍ଷା କରିବାକୁ ’ଜାରି ରଖନ୍ତୁ’ରେ କ୍ଲିକ୍‌ କରନ୍ତୁ।</translation>
 <translation id="7699293099605015246">ବର୍ତ୍ତମାନ ପ୍ରବନ୍ଧଗୁଡ଼ିକ ଉପଲବ୍ଧ ନାହିଁ</translation>
@@ -1403,7 +1506,9 @@
 <translation id="7761701407923456692">ସର୍ଭରର ସାର୍ଟିଫିକେଟ୍‌ URL ସହ ମେଳ ହେଉନାହିଁ</translation>
 <translation id="7763386264682878361">ପେମେଣ୍ଟ୍ ମେନିଫେଷ୍ଟ ପାର୍ସର୍</translation>
 <translation id="7764225426217299476">ଠିକଣା ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="7766518757692125295">ସ୍କର୍ଟ୍</translation>
 <translation id="7770259615151589601">ନିର୍ଦ୍ଧାରିତ-ଦୀର୍ଘତା</translation>
+<translation id="7773005668374414287">ସେହି ସମାନ ଅର୍ଡରରେ ଫେସ୍ ଅପ୍</translation>
 <translation id="777702478322588152">ପ୍ରଶାସକୀୟ କ୍ଷେତ୍ର</translation>
 <translation id="7791196057686275387">ବେଲ୍</translation>
 <translation id="7791543448312431591">ଯୋଡନ୍ତୁ</translation>
@@ -1421,9 +1526,11 @@
 <translation id="785549533363645510">ତଥାପି, ଆପଣ ଅଦୃଶ୍ୟ ନୁହନ୍ତି। ଇନ୍‍କଗ୍ନିଟୋ ହେବାର ଅର୍ଥ ଏହା ନୁହେଁ ଯେ ଆପଣଙ୍କୁ କେହି ଦେଖିପାରିବେ ନାହିଁ, ଆପଣଙ୍କ ବ୍ରାଉଜିଂକୁ ଆପଣଙ୍କର ନିଯୁକ୍ତିକାରୀ, ଆପଣଙ୍କର ଇଣ୍ଟର୍ନେଟ୍‌ ସେବା ପ୍ରଦାନକାରୀ କିମ୍ବା ଆପଣ ଯାଉଥିବା ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ଠାରୁ ଲୁଚାଯାଇପାରିବ ନାହିଁ।</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">ସାଇଟ୍ ଛାଡ଼ିବେ?</translation>
+<translation id="7865448901209910068">ଉତ୍ତମ ବେଗ</translation>
 <translation id="7878562273885520351">ଆପଣଙ୍କର ପାସ୍‌ୱର୍ଡରେ ହେର୍‍ଫେର୍‌ କରାଯାଇଥାଇପାରେ</translation>
 <translation id="7882421473871500483">ବାଦାମୀ</translation>
 <translation id="7887683347370398519">ଆପଣଙ୍କର CVC ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
+<translation id="7888575728750733395">ପ୍ରିଣ୍ଟ ରେଣ୍ଡରିଂ ଇଣ୍ଟେଣ୍ଟ</translation>
 <translation id="7904208859782148177">C3 (ଏନଭଲପ୍)</translation>
 <translation id="7932579305932748336">କୋଟ୍</translation>
 <translation id="79338296614623784">ଏକ ବୈଧ ଫୋନ୍ ନମ୍ଵର୍ ଲେଖନ୍ତୁ</translation>
@@ -1438,6 +1545,8 @@
 <translation id="7953569069500808819">ଉପର ପଟରେ ଏଜ୍ ଷ୍ଟିଚ୍</translation>
 <translation id="7956713633345437162">ମୋବାଇଲ୍‍ ବୁକ୍‍ମାର୍କ</translation>
 <translation id="7961015016161918242">ଆଦୌ ନୁହେଁ</translation>
+<translation id="7966803981046576691">ଜବ୍ ଆକାଉଣ୍ଟ ପ୍ରକାର</translation>
+<translation id="7977538094055660992">ଆଉଟପୁଟ୍ ଡିଭାଇସ୍</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">ବାଇଣ୍ଡ</translation>
 <translation id="7995512525968007366">ନିର୍ଦ୍ଦିଷ୍ଟ ହୋଇନାହିଁ</translation>
@@ -1495,6 +1604,7 @@
 <translation id="8221250263817408492">ଆପଣ ଏକ ପ୍ରତାରଣାମୂଳକ ସାଇଟ୍‌ରେ ଏବେ ଆପଣଙ୍କର ପାସ୍‍ୱାର୍ଡ ଲେଖିଛନ୍ତି। <ph name="WEBSITE_1" /> ଏବଂ ଏହି ପାସ୍‌ୱାର୍ଡକୁ ଆପଣ ବ୍ୟବହାର କରୁଥିବା ଅନ୍ୟ ସାଇଟ୍‌ଗୁଡ଼ିକୁ ଯାଇ ଏହାକୁ ବର୍ତ୍ତମାନ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ Chromium ସୁପାରିଶ କରେ।</translation>
 <translation id="8225771182978767009">ଯେଉଁ ବ୍ୟକ୍ତି ଏହି କମ୍ପ୍ୟୁଟର୍‌ ସେଟ୍‍ ଅପ୍‍ କରିଛନ୍ତି, ସିଏ ଏହି ସାଇଟ୍‍ ଅବରୋଧ କରିବାକୁ ବାଛିଛନ୍ତି।</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" /> <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">ପ୍ଲାଟଫର୍ମ ତାପମାତ୍ରା</translation>
 <translation id="8238581221633243064">ଏକ ନୂଆ ଇନ୍‌କଗ୍ନିଟୋ ଟାବ୍‌ରେ ପୃଷ୍ଠା ଖୋଲନ୍ତୁ</translation>
 <translation id="8241707690549784388">ଆପଣ ଯେଉଁ ପୃଷ୍ଠାଟି ଦେଖନ୍ତି ତାହା ଆପଣ ପ୍ରବିଷ୍ଟ କରିବା ବ୍ୟବହୃତ ସୂଚନା ଅଟେ । ସେହି ପୃଷ୍ଠାଟିକୁ ଫେରିବା ଦ୍ଵାରା ପୁନରାବୃତ୍ତି ଲାଗି ଆପଣ ରଖିଥିବା ଯେକୌଣସିଟି ନିଶ୍ଚିତରୂପେ ଘଟିପାରେ । ଆପଣ ଜାରି ରଖିବାକୁ ଚାହାଁନ୍ତି କି?</translation>
 <translation id="8241712895048303527">ଏହି ସାଇଟ୍‌ରେ ବ୍ଲକ୍ କରନ୍ତୁ</translation>
@@ -1506,6 +1616,7 @@
 <translation id="8261506727792406068">ବିଲୋପ</translation>
 <translation id="8262952874573525464">ତଳ ପଟରେ ଏଜ୍ ଷ୍ଟିଚ୍</translation>
 <translation id="8267698848189296333"><ph name="USERNAME" /> ଭାବେ ସାଇନ୍‍ ଇନ୍‍ କରୁଛନ୍ତି।</translation>
+<translation id="8269242089528251720">ଅଲଗା ଡକ୍ୟୁମେଣ୍ଟଗୁଡ଼ିକ/ସଂଗ୍ରହ କରାଯାଇଥିବା କପିଗୁଡ଼ିକ</translation>
 <translation id="8269981117540303696">ବର୍ତ୍ତମାନ ଆପଣ ବ୍ୟକ୍ତିଗତ ଭାବେ ବ୍ରାଉଜ୍ କରିପାରିବେ ଏବଂ ଏହି ଡିଭାଇସ୍‍କୁ ବ୍ୟବହାର କରୁଥିବା ଅନ୍ୟ ଲୋକମାନେ ଆପଣଙ୍କର କାର୍ଯ୍ୟକଳାପ ଦେଖିପାରିବେ ନାହିଁ। କିନ୍ତୁ ତଥାପି, ଡାଉନ୍‍‍ଲୋଡ୍ ଓ ବୁକ୍‍ମାର୍କଗୁଡ଼ିକ ସେଭ୍ କରାଯିବ।</translation>
 <translation id="8277900682056760511">ପେମେଣ୍ଟ ହ୍ୟାଣ୍ଡଲର୍ ସିଟ୍ ଖୋଲା ଅଛି</translation>
 <translation id="8281084378435768645">ବଡ଼-ଫଟୋ</translation>
@@ -1519,6 +1630,7 @@
 <translation id="8307358339886459768">ଛୋଟ-ଫଟୋ</translation>
 <translation id="8308427013383895095">ନେଟ୍‌ୱର୍କ ସଂଯୋଗରେ ସମସ୍ୟା ଥିବା କାରଣରୁ ଅନୁବାଦ ବିଫଳ ହେଲା।</translation>
 <translation id="831207732689920588">ଏହି ପୃଷ୍ଠାଟି ସନ୍ଦେହଜନକ ଅଟେ (Chrome ଦ୍ୱାରା ଫ୍ଲାଗ୍ କରାଯାଇଛି)।</translation>
+<translation id="831997045666694187">ସନ୍ଧ୍ୟା</translation>
 <translation id="8332188693563227489"><ph name="HOST_NAME" />କୁ ଆକ୍ସେସ୍‌ ପ୍ରତ୍ୟାଖ୍ୟାନ କରାଯାଇଥିଲା</translation>
 <translation id="833262891116910667">ହାଇଲାଇଟ୍</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1541,12 +1653,14 @@
 <translation id="8428213095426709021">ସେଟିଂସ୍</translation>
 <translation id="8433057134996913067">ଏହା ଆପଣଙ୍କୁ ଅଧିକାଂଶ ୱେବ୍‍ସାଇଟ୍‍ରୁ ସାଇନ୍ ଆଉଟ୍ କରିଦେବ।</translation>
 <translation id="8437238597147034694">&amp;ପୂର୍ବବତ୍‍ ଘୁଞ୍ଚାନ୍ତୁ</translation>
+<translation id="8457125768502047971">ଅନିର୍ଦ୍ଦିଷ୍ଟ</translation>
 <translation id="8461694314515752532">ଆପଣ ନିଜର ସିଙ୍କ୍‌ ପାସ୍‌ଫ୍ରେଜ୍ ସହିତ ସିଙ୍କ୍ କରାଯାଇଥିବା ଡାଟାକୁ ଏନ୍‌କ୍ରିପ୍ଟ କରନ୍ତୁ।</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1ଟି କ୍ରେଡିଟ୍ କାର୍ଡ}other{#ଟି କ୍ରେଡିଟ୍ କାର୍ଡ}}</translation>
 <translation id="8473863474539038330">ଠିକଣାଗୁଡ଼ିକ ଏବଂ ଅଧିକ</translation>
 <translation id="8479754468255770962">ତଳ ବାମ ପଟରେ ଷ୍ଟାପଲ୍</translation>
 <translation id="8483780878231876732">ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରୁ କାର୍ଡଗୁଡ଼ିକ ବ୍ୟବହାର କରିବାକୁ, Chromeରେ ସାଇନ୍‌ ଇନ୍‌ କରନ୍ତୁ</translation>
 <translation id="8488350697529856933">ରେ ଲାଗୁ ହୋଇଥାଏ</translation>
+<translation id="8490137692873530638">ଷ୍ଟାକର୍ 10</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> ପ୍ରତିକ୍ରିୟା ଦେବାକୁ ବହୁତ ସମୟ ନେଉଛି।</translation>
 <translation id="8503559462189395349">Chrome ପାସ୍‌ୱର୍ଡ</translation>
 <translation id="8503813439785031346">ଉପଯୋଗକର୍ତ୍ତାନାମ</translation>
@@ -1557,10 +1671,12 @@
 <translation id="8553075262323480129">ପୃଷ୍ଠାର ଭାଷା ନିର୍ଦ୍ଧିଷ୍ଟ ହୋ‍ଇନପାରିବା ହେତୁ ଅନୁବାଦ ବିଫଳ ହେଲା।</translation>
 <translation id="8557066899867184262">CVC ଆପଣଙ୍କ କାର୍ଡର ପଛପଟେ ଅଛି।</translation>
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />କୁ ଏକ ବ୍ୟକ୍ତିଗତ ସଂଯୋଗ ସ୍ଥାପନ କରାଯାଇପାରିବ ନାହିଁ କାରଣ, ଆପଣଙ୍କ ଡିଭାଇସ୍‌ର ତାରିଖ ଏବଂ ସମୟ (<ph name="DATE_AND_TIME" />) ଭୁଲ ଅଛି।</translation>
+<translation id="8564182942834072828">ଅଲଗା ଡକ୍ୟୁମେଣ୍ଟଗୁଡ଼ିକ/ସଂଗ୍ରହ କରାଯାଇନଥିବା କପିଗୁଡ଼ିକ</translation>
 <translation id="8564985650692024650">ଆପଣ ଯଦି ଆପଣଙ୍କର <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ପାସ୍‌ୱାର୍ଡକୁ ଅନ୍ୟ ସାଇଟ୍‌ଗୁଡ଼ିକରେ ପୁନଃ ବ୍ୟବହାର କରିଛନ୍ତି, ତେବେ Chromium ଆପଣଙ୍କୁ ଏହି ପାସ୍‌ୱାର୍ଡକୁ ରିସେଟ୍ କରିବା ପାଇଁ ସୁପାରିଶ କରୁଛି।</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" />ରେ ପୃଷ୍ଠା ଅନୁବାଦ କରୁଛି...</translation>
 <translation id="8574899947864779331">କାର୍ଡଗୁଡ଼ିକୁ ଅତି ଶୀଘ୍ର ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ Touch ID ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="858637041960032120">ଫୋନ୍‌ ନମ୍ବର୍‍ ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="8589998999637048520">ଉତ୍ତମ ଗୁଣବତ୍ତା</translation>
 <translation id="860043288473659153">କାର୍ଡହୋଲ୍ଡର୍‌ର ନାମ</translation>
 <translation id="8616822740383114808">"<ph name="SETTINGS_PAGE" />" ରେ "<ph name="ENFORCING_SETTING" />" ଦ୍ୱାରା ଏହି ସେଟିଂ ଲାଗୁ କରାଯାଇଛି</translation>
 <translation id="861775596732816396">ଆକାର 4</translation>
@@ -1568,10 +1684,13 @@
 <translation id="8625384913736129811">ଏହି ଡିଭାଇସ୍‌ରେ କାର୍ଡଟିକୁ ସେଭ୍ କରନ୍ତୁ</translation>
 <translation id="8647750283161643317">ସବୁ ଡିଫଲ୍ଟରେ ସେଟ୍ କରନ୍ତୁ</translation>
 <translation id="8663226718884576429">ଅର୍ଡର ସାରାଂଶ, <ph name="TOTAL_LABEL" />, ଅଧିକ ବିବରଣୀ</translation>
+<translation id="867224526087042813">ଦସ୍ତଖତ</translation>
+<translation id="8676424191133491403">କୌଣସି ବିଳମ୍ବ ନାହିଁ</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, ଉତ୍ତର ଦିଅନ୍ତୁ, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054"><ph name="PAGE" />ରେ ୱେବ୍‌ପୃଷ୍ଠା ଲୋଡ୍ କରାଯାଇପାରିଲା ନାହିଁ, କାରଣ:</translation>
 <translation id="8685155993131031756">PRC 16K</translation>
 <translation id="8688672835843460752">ଉପଲବ୍ଧ</translation>
+<translation id="868922510921656628">ପ୍ରତି ସେଟ୍ ପୃଷ୍ଠାଗୁଡ଼ିକ</translation>
 <translation id="869891660844655955">ମିଆଦ ଶେଷ ହେଉଥିବା ତାରିଖ</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" /> ସହ ଆପଣଙ୍କର ସଂଯୋଜନା ଏନକ୍ରିପ୍ଟ ହୋଇ ନାହିଁ ।</translation>
 <translation id="8718314106902482036">ପେମେଣ୍ଟ ସମ୍ପୂର୍ଣ ହେଲାନାହିଁ</translation>
@@ -1603,8 +1722,10 @@
 <translation id="8866928039507595380">ଫୋଲ୍ଡ</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">ନିକଟରେ ବନ୍ଦ କରାଯାଇଛି</translation>
+<translation id="8870494189203302833">ସେହି ସମାନ ଅର୍ଡରରେ ଫେସ୍ ଡାଉନ୍</translation>
 <translation id="8874824191258364635">ଏକ ବୈଧ କାର୍ଡ ନମ୍ବର୍ ଲେଖନ୍ତୁ</translation>
 <translation id="8891727572606052622">ଅବୈଧ ପ୍ରକ୍ସି ମୋଡ୍</translation>
+<translation id="8894794286471754040">ପ୍ରଥମେ ଲମ୍ବା ଏଡଜ୍</translation>
 <translation id="8903921497873541725">ଜୁମ୍ ବଢ଼ାନ୍ତୁ</translation>
 <translation id="890485472659500557">ଇଞ୍ଜିନିୟରିଂ-C</translation>
 <translation id="890493561996401738">ପ୍ରସ୍ତାବ ବଟନ୍‍କୁ କାଢ଼ି ଦିଅନ୍ତୁ, କାଢ଼ିବା ପାଇଁ Enter ଦବାନ୍ତୁ, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1653,6 +1774,7 @@
 <translation id="9080712759204168376">ନିର୍ଦ୍ଦେଶ ସାରାଂଶ</translation>
 <translation id="9089260154716455634">ଛୁଟି ସମୟର ନୀତି:</translation>
 <translation id="9095388113577226029">ଅଧିକ ଭାଷା...</translation>
+<translation id="9101630580131696064">ଟ୍ରେ 1</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> ଆପଣଙ୍କ ସୂଚନାର ସୁରକ୍ଷା ପାଇଁ ସାଧାରଣତଃ ଏନକ୍ରିପ୍‌ସନ୍‌ର ବ୍ୟବହାର କରେ। ଯେତେବେଳେ Chromium ଏଥର <ph name="SITE" />କୁ ସଂଯୋଗ କରିବାକୁ ଚେଷ୍ଟା କଲା, ସେତେବେଳେ ୱେବ୍‌ସାଇଟ୍‌ଟି ଅସ୍ୱାଭାବିକ ଏବଂ ଭୁଲ୍ ବିଶ୍ୱସନୀୟତା ଫେରାଇଲା। ଏହା ସେତେବେଳେ ହୋ‍ଇପାରେ ଯେତେବେଳେ ଆକ୍ରମଣକାରୀ <ph name="SITE" /> ଥିବାର ଛଳନା କରୁଛି କିମ୍ବା ଏକ ୱାଇ-ଫାଇ ସାଇନ୍‌-ଇନ୍‌ ସ୍କ୍ରିନ୍‌ ସଂଯୋଗରେ ବ୍ୟାଘାତ ସୃଷ୍ଟି କରୁଛି। ଆପଣଙ୍କର ସୂଚନା ଏବେ ମଧ୍ୟ ସୁରକ୍ଷିତ ଅଛି, କାରଣ କୌଣସି ପ୍ରକାର ଡାଟାର ଆଦାନ ପ୍ରଦାନ କରିବା ପୂର୍ବରୁ Chromium ସଂଯୋଗଟିକୁ ବନ୍ଦ କରିଦେଇଥିଲା।</translation>
 <translation id="9106062320799175032">ବିଲିଂ ଠିକଣା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="9114524666733003316">କାର୍ଡ ସୁନିଶ୍ଚିତ କରାଯାଉଛି...</translation>
@@ -1668,6 +1790,7 @@
 <translation id="9169664750068251925">ସର୍ବଦା ଏହି ସାଇଟ୍‌ରେ ବ୍ଲକ୍ କରନ୍ତୁ</translation>
 <translation id="9170848237812810038">&amp;ପୂର୍ବବତ୍</translation>
 <translation id="9171296965991013597">ଆପ୍‌ ଛାଡିବେ?</translation>
+<translation id="9173282814238175921">ଗୋଟିଏ ଡକ୍ୟୁମେଣ୍ଟ/ନୂଆ ସିଟ୍</translation>
 <translation id="917450738466192189">ସର୍ଭର୍‍ର ସାର୍ଟିଫିକେଟ୍ ଅବୈଧ ଅଟେ।</translation>
 <translation id="9174917557437862841">ଟାବ୍ ସ୍ୱିଚ୍ କରିବାର ବଟନ୍, ଏହି ଟାବ୍‍କୁ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ଏଣ୍ଟର୍ ଦବାନ୍ତୁ</translation>
 <translation id="9183302530794969518">Google ଡକସ୍</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb
index 21250f1..97c71e5 100644
--- a/components/strings/components_strings_pa.xtb
+++ b/components/strings/components_strings_pa.xtb
@@ -635,13 +635,13 @@
 <translation id="3765032636089507299">ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਪੰਨਾ ਨਿਰਮਾਣ ਅਧੀਨ ਹੈ।</translation>
 <translation id="3765588406864124894">ਮੇਲਬਾਕਸ 9</translation>
 <translation id="3778403066972421603">ਕੀ ਤੁਸੀਂ ਇਸ ਕਾਰਡ ਨੂੰ ਆਪਣੇ Google ਖਾਤੇ ਅਤੇ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਰੱਖਿਅਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation>
-<translation id="3780694243617746492">ਆਊਟਪੁਟ ਬਿਨ</translation>
+<translation id="3780694243617746492">ਆਊਟਪੁੱਟ ਬਿਨ</translation>
 <translation id="3781428340399460090">ਗੂੜ੍ਹਾ ਗੁਲਾਬੀ</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569">ਮਿਆਦ ਸਮਾਪਤੀ ਦੀ ਮਿਤੀ <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="3789155188480882154">ਆਕਾਰ 16</translation>
 <translation id="3797522431967816232">Prc3 (ਲਿਫ਼ਾਫ਼ਾ)</translation>
-<translation id="3799805948399000906">ਫ਼ੌਟ ਲਈ ਬੇਨਤੀ ਕੀਤੀ</translation>
+<translation id="3799805948399000906">ਫ਼ੌਂਟ ਲਈ ਬੇਨਤੀ ਕੀਤੀ</translation>
 <translation id="3807366285948165054">ਚਿੱਤਰ X ਸ਼ਿਫਟ</translation>
 <translation id="3807873520724684969">ਨੁਕਸਾਨਦੇਹ ਸਮੱਗਰੀ ਬਲਾਕ ਕੀਤੀ ਗਈ।</translation>
 <translation id="3808375843007691220">ਚੇਤਾਵਨੀ: ਪ੍ਰਯੋਗਮਈ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅੱਗੇ ਹਨ!</translation>
@@ -781,7 +781,7 @@
 <translation id="4372948949327679948">ਸੰਭਾਵਿਤ <ph name="VALUE_TYPE" /> ਵੈਲਯੂ।</translation>
 <translation id="4377125064752653719">ਤੁਸੀਂ <ph name="DOMAIN" />, ਤੱਕ ਪਹੁੰਚਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ, ਪਰ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਜੋ ਸਰਵਰ ਨੇ ਪੇਸ਼ ਕੀਤਾ ਹੈ, ਉਹ ਜਾਰੀਕਰਤਾ ਵੱਲੋਂ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਸਰਵਰ ਵੱਲੋਂ ਪੇਸ਼ ਕੀਤੇ ਗਏ ਸੁਰੱਖਿਆ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ 'ਤੇ ਬਿਲਕੁਲ ਵੀ ਭਰੋਸਾ ਨਹੀਂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ। ਸ਼ਾਇਦ ਤੁਸੀਂ ਇੱਕ ਹਮਲਾਵਰ ਨਾਲ ਸੰਚਾਰ ਕਰ ਰਹੇ ਹੋ।</translation>
 <translation id="4378154925671717803">ਫ਼ੋਨ</translation>
-<translation id="4390472908992056574">Brim</translation>
+<translation id="4390472908992056574">ਬ੍ਰਿਮ</translation>
 <translation id="4406896451731180161">ਖੋਜ ਨਤੀਜੇ</translation>
 <translation id="4408413947728134509"><ph name="NUM_COOKIES" /> ਕੁਕੀਜ਼</translation>
 <translation id="4415426530740016218">ਪਿਕਅੱਪ ਪਤਾ</translation>
@@ -1029,7 +1029,7 @@
 <translation id="552553974213252141">ਕੀ ਟੈਕਸਟ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਖੋਜਿਆ ਗਿਆ ਸੀ?</translation>
 <translation id="55293785478302737">ਕਿਨਾਰੇ ਤੋਂ ਸਿਲਾਈ</translation>
 <translation id="553484882784876924">Prc6 (ਲਿਫ਼ਾਫ਼ਾ)</translation>
-<translation id="5539243836947087108">Raft</translation>
+<translation id="5539243836947087108">ਰਾਫ਼ਟ</translation>
 <translation id="5540224163453853">ਬੇਨਤੀ ਕੀਤਾ ਲੇਖ ਨਹੀਂ ਲੱਭ ਸਕਿਆ।</translation>
 <translation id="5541086400771735334">ਮੇਲਬਾਕਸ 7</translation>
 <translation id="5541546772353173584">ਈਮੇਲ ਸ਼ਾਮਲ ਕਰੋ</translation>
@@ -1285,7 +1285,7 @@
 <translation id="6670613747977017428">ਸੁਰੱਖਿਆ 'ਤੇ ਵਾਪਸ ਜਾਓ।</translation>
 <translation id="6671697161687535275">ਕੀ Chromium ਤੋਂ ਫ਼ਾਰਮ ਸੰਬੰਧੀ ਸੁਝਾਅ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</translation>
 <translation id="6685834062052613830">ਸਾਈਨ-ਆਊਟ ਕਰੋ ਅਤੇ ਸਥਾਪਨਾ ਨੂੰ ਪੂਰਾ ਕਰੋ</translation>
-<translation id="6687335167692595844">ਫੌਂਟ ਆਕਾਰ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਗਈ</translation>
+<translation id="6687335167692595844">ਫ਼ੌਂਟ ਆਕਾਰ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਗਈ</translation>
 <translation id="6689249931105087298">ਕਾਲੇ ਬਿੰਦੂ ਨਪੀੜਨ ਨਾਲ ਸੰਬੰਧਿਤ</translation>
 <translation id="6689271823431384964">ਤੁਹਾਡੇ ਸਾਈਨ-ਇਨ ਹੋਣ ਕਰਕੇ Chrome ਤੁਹਾਡੇ ਕਾਰਡਾਂ ਨੂੰ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਰਿਹਾ ਹੈ। ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਸ ਵਤੀਰੇ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ। ਕਾਰਡਧਾਰਕ ਦੇ ਨਾਮ ਦੀ ਜਾਣਕਾਰੀ ਤੁਹਾਡੇ ਖਾਤੇ ਤੋਂ ਮਿਲਦੀ ਹੈ।</translation>
 <translation id="6704582573942289642">ਕੀ ਇਹ ਸਹੀ ਸਾਈਟ ਹੈ?</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index aab05e8..415e5afc 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -301,7 +301,7 @@
 <translation id="2263079731045660823">Atualizar as informações de preenchimento automático do cartão de crédito nas definições do Chrome</translation>
 <translation id="2267047181501709434">A validar a sua identidade…</translation>
 <translation id="2270484714375784793">Número de telefone</translation>
-<translation id="2276057643614339130">Imprimir base</translation>
+<translation id="2276057643614339130">Base de impressão</translation>
 <translation id="2277103315734023688">Procurar para a frente</translation>
 <translation id="2283340219607151381">Guardar e preencher endereços</translation>
 <translation id="2288422996159078444">Tudo o que escreve, todas as páginas que visualiza ou quaisquer outras atividades que realiza na Web estão a ser monitorizadas. O conteúdo dos sites pode ser alterado sem o seu conhecimento.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index d44e1a5..0e40c06 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -194,7 +194,7 @@
 <translation id="1743520634839655729">Pentru a plăti mai rapid data viitoare, salvează cardul, numele și adresa de facturare în Contul Google și pe acest dispozitiv.</translation>
 <translation id="1743570585616704562">Nu este recunoscută</translation>
 <translation id="1745880797583122200">Browserul tău este gestionat</translation>
-<translation id="1746113442205726301">Deplasarea imaginii Y</translation>
+<translation id="1746113442205726301">Deplasarea poziției Y a imaginii</translation>
 <translation id="17513872634828108">File deschise</translation>
 <translation id="1752021286346845558">Căsuța de e-mail 8</translation>
 <translation id="1753706481035618306">Numărul paginii</translation>
@@ -423,7 +423,7 @@
 <translation id="2799020568854403057">Site-ul pe care urmează să îl accesezi conține aplicații dăunătoare</translation>
 <translation id="2799223571221894425">Repornește</translation>
 <translation id="2803306138276472711">Navigarea sigură Google <ph name="BEGIN_LINK" />a detectat recent programe malware<ph name="END_LINK" /> pe <ph name="SITE" />. Site-urile care sunt de obicei sigure sunt uneori infectate cu programe malware.</translation>
-<translation id="2807052079800581569">Poziția imaginii Y</translation>
+<translation id="2807052079800581569">Poziția Y a imaginii</translation>
 <translation id="2809804249696361569">Ambele foi</translation>
 <translation id="2824775600643448204">Bara de adrese și de căutare</translation>
 <translation id="2826760142808435982">Conexiunea este criptată și autentificată utilizând <ph name="CIPHER" /> și folosește <ph name="KX" /> ca mecanism de schimb al cheii.</translation>
@@ -567,7 +567,7 @@
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">Această politică este ignorată deoarece o altă politică din același grup de politici are prioritate ridicată.</translation>
 <translation id="3513704683820682405">Realitate augmentată</translation>
-<translation id="3518941727116570328">Manipularea mai multor obiecte</translation>
+<translation id="3518941727116570328">Gestionarea mai multor obiecte</translation>
 <translation id="3528171143076753409">Certificatul serverului nu este de încredere.</translation>
 <translation id="3528485271872257980">Maro închis</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{Cel puțin 1 element pe dispozitivele sincronizate}=1{1 element (și mai multe pe dispozitivele sincronizate)}few{# elemente (și mai multe pe dispozitivele sincronizate)}other{# de elemente (și mai multe pe dispozitivele sincronizate)}}</translation>
@@ -644,7 +644,7 @@
 <translation id="3789155188480882154">Mărimea 16</translation>
 <translation id="3797522431967816232">Prc3 (Plic)</translation>
 <translation id="3799805948399000906">Font solicitat</translation>
-<translation id="3807366285948165054">Deplasarea imaginii X</translation>
+<translation id="3807366285948165054">Deplasarea poziției X a imaginii</translation>
 <translation id="3807873520724684969">Conținutul dăunător a fost blocat.</translation>
 <translation id="3808375843007691220">Avertisment: acestea sunt funcții experimentale!</translation>
 <translation id="3810973564298564668">Gestionează</translation>
@@ -693,7 +693,7 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">Configurația pentru proxy este setată să utilizeze o adresă URL pentru scripturi .pac, și nu servere proxy fixe.</translation>
 <translation id="4082393374666368382">Setări – Administrator</translation>
-<translation id="4088981014127559358">Deplasarea feței 1 a imaginii Y</translation>
+<translation id="4088981014127559358">Deplasarea poziției Y a imaginii de pe fața 1</translation>
 <translation id="4098354747657067197">Urmează un site înșelător</translation>
 <translation id="4101413244023615925">Text și elemente grafice</translation>
 <translation id="4103249731201008433">Numărul de serie al gadgetului este nevalid</translation>
@@ -979,7 +979,7 @@
 <translation id="5287240709317226393">Afișați cookie-urile</translation>
 <translation id="5287456746628258573">Site-ul folosește o configurație de securitate învechită, care îți poate expune informațiile (de exemplu, parolele sau numerele cardurilor de credit) când sunt trimise la acest site.</translation>
 <translation id="5288108484102287882">Validarea valorilor de politică a returnat avertismente</translation>
-<translation id="5289384342738547352">Manipularea mai multor documente</translation>
+<translation id="5289384342738547352">Gestionarea mai multor documente</translation>
 <translation id="5295292838686006428">O încălcare a securității datelor de pe un site sau dintr-o aplicație ți-a expus parola. Chrome recomandă să verifici acum parolele salvate.</translation>
 <translation id="5299298092464848405">Eroare la analizarea politicii</translation>
 <translation id="5300589172476337783">Afișează</translation>
@@ -1058,13 +1058,13 @@
 <translation id="5632627355679805402">Datele au fost criptate cu <ph name="BEGIN_LINK" />parola Google<ph name="END_LINK" /> începând cu <ph name="TIME" />. Introdu parola pentru a începe sincronizarea.</translation>
 <translation id="5633066919399395251">Atacatorii de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pot încerca să instaleze programe periculoase pe computerul tău, care să îți fure sau să îți șteargă informațiile (de exemplu, fotografii, parole, mesaje sau date despre cardurile de credit). <ph name="BEGIN_LEARN_MORE_LINK" />Află mai multe<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">Conținutul înșelător a fost blocat.</translation>
-<translation id="5644090287519800334">Deplasarea feței 1 a imaginii X</translation>
+<translation id="5644090287519800334">Deplasarea poziției X a imaginii de pe fața 1</translation>
 <translation id="5645854190134202180">A doua tură</translation>
 <translation id="5659593005791499971">Adresă de e-mail</translation>
 <translation id="5663614846592581799">9x11 (Plic)</translation>
 <translation id="5663955426505430495">Administratorul acestui dispozitiv a instalat extensii pentru funcții suplimentare. Extensiile au acces la unele dintre datele tale.</translation>
 <translation id="5675650730144413517">Pagina nu funcționează</translation>
-<translation id="568292603005599551">Poziția imaginii X</translation>
+<translation id="568292603005599551">Poziția X a imaginii</translation>
 <translation id="5684874026226664614">Hopa. Această pagină nu a putut fi tradusă.</translation>
 <translation id="5685654322157854305">Adaugă adresa de expediere</translation>
 <translation id="5689199277474810259">Exportă în format JSON</translation>
@@ -1369,7 +1369,7 @@
 <translation id="7135130955892390533">Arată starea</translation>
 <translation id="7138472120740807366">Metodă de livrare</translation>
 <translation id="7139724024395191329">Emirat</translation>
-<translation id="714064300541049402">Deplasarea feței 2 a imaginii X</translation>
+<translation id="714064300541049402">Deplasarea poziției X a imaginii de pe fața 2</translation>
 <translation id="7152423860607593928">Number-14 (Plic)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> și încă <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}few{<ph name="PAYMENT_METHOD_PREVIEW" /> și încă <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> și încă <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Lavandă</translation>
@@ -1476,7 +1476,7 @@
 <translation id="7569983096843329377">Negru</translation>
 <translation id="7575207903026901870">Butonul Elimină sugestia, apasă pe Enter pentru a elimina această sugestie</translation>
 <translation id="7578104083680115302">Plătește rapid pe site-uri și în aplicații pe diferite dispozitive folosind cardurile pe care le-ai salvat pe Google.</translation>
-<translation id="7581199239021537589">Deplasarea feței 2 a imaginii Y</translation>
+<translation id="7581199239021537589">Deplasarea poziției Y a imaginii de pe fața 2</translation>
 <translation id="7592362899630581445">Certificatul serverului încalcă limitările privind numele.</translation>
 <translation id="7598391785903975535">Mai puțin de <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187">Momentan, <ph name="HOST_NAME" /> nu poate procesa această solicitare.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index ba2e783..c133930 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -390,7 +390,7 @@
 <translation id="2687555958734450033">Оптимальный вариант</translation>
 <translation id="2691924980723297736">Предупреждение</translation>
 <translation id="2699302886720511147">Карты, которые принимаются к оплате</translation>
-<translation id="2701514975700770343">Оборотной стороной вверх</translation>
+<translation id="2701514975700770343">Лицевой стороной вниз</translation>
 <translation id="2702801445560668637">Список для чтения</translation>
 <translation id="2704283930420550640">Значение не соответствует формату.</translation>
 <translation id="2705137772291741111">Невозможно прочитать копию сайта, сохраненную в кеше.</translation>
@@ -623,7 +623,7 @@
 <translation id="3765032636089507299">Страница безопасного просмотра находится в разработке.</translation>
 <translation id="3765588406864124894">Почтовый ящик 9</translation>
 <translation id="3778403066972421603">Хотите сохранить карту в аккаунте Google и на этом устройстве?</translation>
-<translation id="3780694243617746492">Приёмник</translation>
+<translation id="3780694243617746492">Выходной лоток</translation>
 <translation id="3781428340399460090">Ярко-розовый</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569">Срок действия: до <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -812,7 +812,7 @@
 <translation id="4628948037717959914">Фото</translation>
 <translation id="4635654612248442824">Ко всем запросам сайта <ph name="ORIGIN" /> требуется применять правила в отношении источников, однако это сейчас невозможно.</translation>
 <translation id="464342062220857295">Функции поиска</translation>
-<translation id="4644670975240021822">В обратном порядке на оборотной стороне</translation>
+<translation id="4644670975240021822">В обратном порядке лицевой стороной вниз</translation>
 <translation id="4646534391647090355">Перейти сейчас</translation>
 <translation id="4658638640878098064">Скоба в левом верхнем углу</translation>
 <translation id="4668929960204016307">,</translation>
@@ -994,7 +994,7 @@
 <translation id="5430298929874300616">Удалить закладку</translation>
 <translation id="5431657950005405462">Файл не найден</translation>
 <translation id="5439770059721715174">Ошибка проверки схемы, <ph name="ERROR_PATH" />: <ph name="ERROR" /></translation>
-<translation id="5443468954631487277">В обратном порядке на лицевой стороне</translation>
+<translation id="5443468954631487277">В обратном порядке лицевой стороной вверх</translation>
 <translation id="5452270690849572955">Страница <ph name="HOST_NAME" /> не найдена</translation>
 <translation id="5455374756549232013">Неверная временная метка политики</translation>
 <translation id="5457113250005438886">Недопустимые данные</translation>
@@ -1511,7 +1511,7 @@
 <translation id="7764225426217299476">Добавить адрес</translation>
 <translation id="7766518757692125295">Юбка</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
-<translation id="7773005668374414287">В том же порядке на лицевой стороне</translation>
+<translation id="7773005668374414287">В том же порядке лицевой стороной вверх</translation>
 <translation id="777702478322588152">Префектура</translation>
 <translation id="7791196057686275387">Прессование</translation>
 <translation id="7791543448312431591">Добавить</translation>
@@ -1725,7 +1725,7 @@
 <translation id="8866928039507595380">Фальцовка</translation>
 <translation id="886872106311861689">В3</translation>
 <translation id="8870413625673593573">Недавно закрытые</translation>
-<translation id="8870494189203302833">В том же порядке на оборотной стороне</translation>
+<translation id="8870494189203302833">В том же порядке лицевой стороной вниз</translation>
 <translation id="8874824191258364635">Введите действительный номер карты.</translation>
 <translation id="8891727572606052622">Недопустимый режим работы прокси-сервера.</translation>
 <translation id="8894794286471754040">Начиная с длинного края</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index 60f354d..21029da 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -10,7 +10,7 @@
 <translation id="1032854598605920125">Otočiť v smere hodinových ručičiek</translation>
 <translation id="1036348656032585052">Vypnúť</translation>
 <translation id="1038842779957582377">neznámy názov</translation>
-<translation id="1041998700806130099">Správa hárku úlohu</translation>
+<translation id="1041998700806130099">Správa hárku úlohy</translation>
 <translation id="1050038467049342496">Zavrite ostatné aplikácie</translation>
 <translation id="1055184225775184556">&amp;Vrátiť späť pridanie</translation>
 <translation id="1056898198331236512">Upozornenie</translation>
@@ -136,7 +136,7 @@
 <translation id="1521655867290435174">Tabuľky Google</translation>
 <translation id="1527263332363067270">Čaká sa na pripojenie...</translation>
 <translation id="1529521330346880926">10x15 (obálka)</translation>
-<translation id="1529789484829130889">Panel č. 8</translation>
+<translation id="1529789484829130889">Priehradka č. 8</translation>
 <translation id="1530707389502320859">Web, ktorý sa pokúšate navštíviť, vyzerá falošne. Útočníci niekedy weby napodobňujú tak, že vo webovej adrese vykonajú drobné, ťažko odhaliteľné zmeny.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">Táto stránka hovorí</translation>
@@ -178,7 +178,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť od zajtra. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}few{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť o # dni. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}many{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť o # dňa. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}other{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť o # dní. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}}</translation>
 <translation id="1710259589646384581">OS</translation>
-<translation id="1713628304598226412">Panel č. 2</translation>
+<translation id="1713628304598226412">Priehradka č. 2</translation>
 <translation id="1715874602234207">F</translation>
 <translation id="1717494416764505390">Poštová schránka č. 3</translation>
 <translation id="1718029547804390981">Dokument nie je možné anotovať, pretože je príliš veľký</translation>
@@ -245,7 +245,7 @@
 <translation id="2025186561304664664">Proxy je nastavené na automatickú konfiguráciu.</translation>
 <translation id="2030481566774242610">Mysleli ste stránku <ph name="LINK" />?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Skontrolovať proxy server a bránu firewall<ph name="END_LINK" /></translation>
-<translation id="2042213636306070719">Panel č. 7</translation>
+<translation id="2042213636306070719">Priehradka č. 7</translation>
 <translation id="2053111141626950936">Stránky v jazyku <ph name="LANGUAGE" /> nebudú prekladané.</translation>
 <translation id="2053553514270667976">PSČ</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 návrh}few{# návrhy}many{# návrhu}other{# návrhov}}</translation>
@@ -283,7 +283,7 @@
 <translation id="2187317261103489799">Rozpoznávať (predvolené)</translation>
 <translation id="2188375229972301266">Viacero dierok dole</translation>
 <translation id="2202020181578195191">Zadajte platný rok vypršania platnosti</translation>
-<translation id="22081806969704220">Panel č. 3</translation>
+<translation id="22081806969704220">Priehradka č. 3</translation>
 <translation id="2212735316055980242">Pravidlo sa nenašlo</translation>
 <translation id="2213606439339815911">Načítavanie záznamov...</translation>
 <translation id="2215727959747642672">Úprava súborov</translation>
@@ -390,7 +390,7 @@
 <translation id="2687555958734450033">Prispôsobená veľkosť</translation>
 <translation id="2691924980723297736">Bezpečnostné upozornenie</translation>
 <translation id="2699302886720511147">Akceptované karty</translation>
-<translation id="2701514975700770343">Stranou nadol</translation>
+<translation id="2701514975700770343">Lícom nadol</translation>
 <translation id="2702801445560668637">Čitateľský zoznam</translation>
 <translation id="2704283930420550640">Hodnota nezodpovedá formátu.</translation>
 <translation id="2705137772291741111">Uložená kópia tohto webu (vo vyrovnávacej pamäti) bola nečitateľná.</translation>
@@ -408,7 +408,7 @@
 <translation id="2742870351467570537">Odstrániť vybraté položky</translation>
 <translation id="277133753123645258">Spôsob dodania</translation>
 <translation id="277499241957683684">Chýbajúci záznam zariadenia</translation>
-<translation id="2775884851269838147">Strana prvej tlače</translation>
+<translation id="2775884851269838147">Prvá tlačená strana</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">Spojenie bolo resetované.</translation>
 <translation id="2792012897584536778">Správcovia tohto zariadenia nastavili bezpečnostné certifikáty, ktoré im môžu umožniť zobraziť obsah vami navštívených webov.</translation>
@@ -456,7 +456,7 @@
 <translation id="2991174974383378012">Zdieľanie s webmi</translation>
 <translation id="2991571918955627853">Web <ph name="SITE" /> momentálne nemôžete navštíviť, pretože používa certifikát HSTS. Chyby siete a útoky sú zvyčajne dočasné, takže by táto stránka mala neskôr pravdepodobne fungovať.</translation>
 <translation id="2996674880327704673">Návrhy od Googlu</translation>
-<translation id="3002501248619246229">Skontrolujte média vstupného panela</translation>
+<translation id="3002501248619246229">Skontrolujte médiá vstupnej priehradky</translation>
 <translation id="3005723025932146533">Zobraziť uloženú kópiu</translation>
 <translation id="3008447029300691911">Zadajte kód CVC karty <ph name="CREDIT_CARD" />. Po potvrdení budú podrobnosti o karte zdieľané s týmto webom.</translation>
 <translation id="3010559122411665027">Položka zoznamu „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -476,7 +476,7 @@
 <translation id="3096100844101284527">Pridať adresu vyzdvihnutia</translation>
 <translation id="3105172416063519923">Identifikátor obsahu:</translation>
 <translation id="3109728660330352905">Nemáte povolenie na zobrazenie tejto stránky.</translation>
-<translation id="3113284927548439113">Tretia smena</translation>
+<translation id="3113284927548439113">Tretia zmena</translation>
 <translation id="3116158981186517402">Laminovať</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />Skúste spustiť nástroj Diagnostika konektivity<ph name="END_LINK" />.</translation>
@@ -543,7 +543,7 @@
 <translation id="3447661539832366887">Vlastník tohto zariadenia vypol hru Dinosaur.</translation>
 <translation id="3447884698081792621">Zobraziť certifikát (od vydavateľa <ph name="ISSUER" />)</translation>
 <translation id="3452404311384756672">Interval načítania:</translation>
-<translation id="3453962258458347894">Počet opakovaní</translation>
+<translation id="3453962258458347894">Počet opakovaných pokusov</translation>
 <translation id="3456231139987291353">Number-11 (obálka)</translation>
 <translation id="3461824795358126837">Zvýrazňovač</translation>
 <translation id="3462200631372590220">Skryť rozšírené podrobnosti</translation>
@@ -551,7 +551,7 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" />, aktuálne otvorené, stlačením klávesov Tab a Enter prepnete na otvorenú kartu</translation>
 <translation id="3479552764303398839">Teraz nie</translation>
 <translation id="3484560055331845446">Môžete stratiť prístup do účtu Google. Chrome odporúča, aby ste si ihneď zmenili heslo. Zobrazí sa výzva na prihlásenie.</translation>
-<translation id="3487845404393360112">Panel č. 4</translation>
+<translation id="3487845404393360112">Priehradka č. 4</translation>
 <translation id="3495081129428749620">Nájsť na stránke
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">Toto pravidlo sa ignoruje, pretože iné pravidlo z rovnakej skupiny má vyššiu prioritu.</translation>
@@ -584,7 +584,7 @@
 <translation id="362276910939193118">Zobraziť celú históriu</translation>
 <translation id="3630155396527302611">Ak je už uvedený ako program s prístupom k sieti, skúste ho odstrániť zo zoznamu a znova ho pridať.</translation>
 <translation id="3631244953324577188">Biometria</translation>
-<translation id="3634530185120165534">Panel č. 5</translation>
+<translation id="3634530185120165534">Priehradka č. 5</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">Overenie bolo úspešné</translation>
 <translation id="3655670868607891010">Ak sa vám táto stránka zobrazuje často, skúste použiť tieto stránky <ph name="HELP_LINK" />.</translation>
@@ -691,7 +691,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 ďalšia}few{# ďalšie}many{# ďalšej}other{# ďalších}}</translation>
 <translation id="4130226655945681476">Skontrolovať sieťové káble, modem a smerovač</translation>
 <translation id="413544239732274901">Ďalšie informácie</translation>
-<translation id="4142935452406587478">Panel č. 10</translation>
+<translation id="4142935452406587478">Priehradka č. 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">Použiť globálne predvolené nastavenie (zistiť)</translation>
 <translation id="4159784952369912983">Purpurová</translation>
@@ -793,7 +793,7 @@
 <translation id="4522570452068850558">Podrobnosti</translation>
 <translation id="4524138615196389145">Odteraz môžete potvrdzovať karty rýchlejšie pomocou funkcie WebAuthn</translation>
 <translation id="4524805452350978254">Spravovať karty</translation>
-<translation id="4542971377163063093">Panel č. 6</translation>
+<translation id="4542971377163063093">Priehradka č. 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
 <translation id="4558551763791394412">Skúste deaktivovať rozšírenia.</translation>
@@ -809,7 +809,7 @@
 <translation id="4628948037717959914">Fotografia</translation>
 <translation id="4635654612248442824">Web <ph name="ORIGIN" /> požiadal, aby sa na všetky jeho žiadosti vzťahovalo pravidlo pre zdroj, ale toto pravidlo sa momentálne nepodarilo uplatniť.</translation>
 <translation id="464342062220857295">Funkcie vyhľadávania</translation>
-<translation id="4644670975240021822">V opačnom poradí stranou nadol</translation>
+<translation id="4644670975240021822">V opačnom poradí lícom nadol</translation>
 <translation id="4646534391647090355">Prejsť do daného umiestnenia</translation>
 <translation id="4658638640878098064">Predierkovať vľavo hore</translation>
 <translation id="4668929960204016307">,</translation>
@@ -922,7 +922,7 @@
 <translation id="5138227688689900538">Zobraziť menej</translation>
 <translation id="5141240743006678641">Šifrovať synchronizované heslá pomocou poverení Google</translation>
 <translation id="5145883236150621069">V odpovedi na pravidlo sa nachádza kód chyby</translation>
-<translation id="5148809049217731050">Stranou nahor</translation>
+<translation id="5148809049217731050">Lícom nahor</translation>
 <translation id="515292512908731282">C4 (obálka)</translation>
 <translation id="5158275234811857234">Titulná strana</translation>
 <translation id="5159010409087891077">Otvorte stránku v novom okne inkognito (⇧⌘N)</translation>
@@ -991,7 +991,7 @@
 <translation id="5430298929874300616">Odstrániť záložku</translation>
 <translation id="5431657950005405462">Súbor sa nenašiel</translation>
 <translation id="5439770059721715174">Pri overení schémy sa vyskytla chyba na mieste <ph name="ERROR_PATH" />: <ph name="ERROR" /></translation>
-<translation id="5443468954631487277">V opačnom poradí stranou nahor</translation>
+<translation id="5443468954631487277">V opačnom poradí lícom nahor</translation>
 <translation id="5452270690849572955">Táto stránka webu <ph name="HOST_NAME" /> sa nenašla</translation>
 <translation id="5455374756549232013">Chybná časová pečiatka pravidla</translation>
 <translation id="5457113250005438886">Neplatné</translation>
@@ -1041,7 +1041,7 @@
 <translation id="5633066919399395251">Útočníci na webe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> sa môžu pokúsiť nainštalovať nebezpečné programy vo vašom počítači, pomocou ktorých ukradnú alebo odstránia informácie (napríklad fotky, heslá, správy a kreditné karty). <ph name="BEGIN_LEARN_MORE_LINK" />Ďalšie informácie<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">Klamlivý obsah bol zablokovaný.</translation>
 <translation id="5644090287519800334">Posun obrázka strany č. 1 na osi X</translation>
-<translation id="5645854190134202180">Druhá smena</translation>
+<translation id="5645854190134202180">Druhá zmena</translation>
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5663614846592581799">9x11 (obálka)</translation>
 <translation id="5663955426505430495">Správca tohto zariadenia nainštaloval rozšírenia pre ďalšie funkcie. Rozšírenia majú prístup k niektorým vašim údajom.</translation>
@@ -1157,7 +1157,7 @@
 <translation id="6157877588268064908">Ak chcete zobraziť spôsoby a požiadavky dodania, vyberte adresu</translation>
 <translation id="6165508094623778733">Ďalšie informácie</translation>
 <translation id="6177128806592000436">Spojenie s týmto webom nie je zabezpečené</translation>
-<translation id="6180316780098470077">Interval opakovaní</translation>
+<translation id="6180316780098470077">Interval opakovania pokusov</translation>
 <translation id="6196640612572343990">Blokovať súbory cookie tretích strán</translation>
 <translation id="6203231073485539293">Skontrolujte internetové pripojenie</translation>
 <translation id="6218753634732582820">Chcete adresu odstrániť z prehliadača Chromium?</translation>
@@ -1338,7 +1338,7 @@
 <translation id="7075452647191940183">Žiadosť je príliš veľká</translation>
 <translation id="7079718277001814089">Tento web obsahuje malvér</translation>
 <translation id="7081308185095828845">Táto funkcia nie je vo vašom zariadení k dispozícii</translation>
-<translation id="7083258188081898530">Panel č. 9</translation>
+<translation id="7083258188081898530">Priehradka č. 9</translation>
 <translation id="7087282848513945231">Okres</translation>
 <translation id="7090678807593890770">Vyhľadajte na Googli výraz <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Skryť</translation>
@@ -1465,7 +1465,7 @@
 <translation id="7610193165460212391">Hodnota (<ph name="VALUE" />) presahuje povolený rozsah.</translation>
 <translation id="7613889955535752492">Dátum vypršania platnosti: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">Už máte údaje, ktoré sú šifrované pomocou inej verzie vášho hesla účtu Google. Zadajte ho nižšie.</translation>
-<translation id="7619838219691048931">Konečný hárok</translation>
+<translation id="7619838219691048931">Koncový hárok</translation>
 <translation id="762844065391966283">Jednotlivo</translation>
 <translation id="7633909222644580952">Údaje o výkonnosti a správy o zlyhaní</translation>
 <translation id="7637571805876720304">Chcete kreditnú kartu odstrániť z prehliadača Chromium?</translation>
@@ -1507,7 +1507,7 @@
 <translation id="7764225426217299476">Pridať adresu</translation>
 <translation id="7766518757692125295">Lem</translation>
 <translation id="7770259615151589601">Určené – dlhé</translation>
-<translation id="7773005668374414287">V rovnakom poradí stranou nahor</translation>
+<translation id="7773005668374414287">V rovnakom poradí lícom nahor</translation>
 <translation id="777702478322588152">Prefektúra</translation>
 <translation id="7791196057686275387">Zviazať do balíka</translation>
 <translation id="7791543448312431591">Pridať</translation>
@@ -1722,7 +1722,7 @@
 <translation id="8866928039507595380">Zahnúť</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">Nedávno zatvorené</translation>
-<translation id="8870494189203302833">V rovnakom poradí stranou nadol</translation>
+<translation id="8870494189203302833">V rovnakom poradí lícom nadol</translation>
 <translation id="8874824191258364635">Zadajte platné číslo karty</translation>
 <translation id="8891727572606052622">Neplatný režim proxy.</translation>
 <translation id="8894794286471754040">Dlhým okrajom</translation>
@@ -1774,7 +1774,7 @@
 <translation id="9080712759204168376">Súhrn objednávky</translation>
 <translation id="9089260154716455634">Pravidlo intervalov nečinnosti:</translation>
 <translation id="9095388113577226029">Ďalšie jazyky…</translation>
-<translation id="9101630580131696064">Panel č. 1</translation>
+<translation id="9101630580131696064">Priehradka č. 1</translation>
 <translation id="9103872766612412690">Web <ph name="SITE" /> zvyčajne chráni vaše informácie pomocou šifrovania. Keď sa prehliadač Chromium tentokrát pokúsil pripojiť k webu <ph name="SITE" />, odoslal späť nezvyčajné a nesprávne poverenia. Môže sa to stať vtedy, keď sa za web <ph name="SITE" /> snaží vydávať útočník alebo keď pripojenie preruší prihlasovacia obrazovka siete Wi‑Fi. Vaše informácie sú stále zabezpečené, pretože prehliadač Chromium zastavil pripojenie ešte pred výmenou dát.</translation>
 <translation id="9106062320799175032">Pridanie fakturačnej adresy</translation>
 <translation id="9114524666733003316">Overuje sa karta…</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 3d794744..ef76359 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">Jo tani</translation>
 <translation id="1010200102790553230">Ngarkoje faqen më vonë</translation>
 <translation id="1015730422737071372">Jep detaje të tjera</translation>
+<translation id="1019413721762100891">Joaktive</translation>
 <translation id="1021110881106174305">Kartat e pranuara</translation>
 <translation id="1021753677514347426">Ky problem ndodh për shkak të një certifikate që instalove ti ose dikush tjetër në pajisjen tënde. Certifikata njihet se është përdorur për të monitoruar dhe ndërhyrë në rrjete dhe nuk është e besuar nga Chromium. Megjithëse ekzistojnë disa raste legjitime për monitorimin, si p.sh. një rrjet shkolle ose kompanie, Chromium dëshiron të sigurohet që je në dijeni se kjo ndodh, edhe nëse nuk arrin ta ndalosh. Monitorimi mund të ndodhë në çdo shfletues ose aplikacion që ka qasje në ueb.</translation>
 <translation id="1032854598605920125">Rrotullo në drejtim të akrepave të orës</translation>
 <translation id="1036348656032585052">Çaktivizo</translation>
 <translation id="1038842779957582377">emër i panjohur</translation>
+<translation id="1041998700806130099">Mesazhi i fletës së punës</translation>
 <translation id="1050038467049342496">Mbyll aplikacionet e tjera</translation>
 <translation id="1055184225775184556">&amp;Zhbëj shtimin</translation>
 <translation id="1056898198331236512">Paralajmërim</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">Nuk u ruaj asnjëherë</translation>
 <translation id="1062160989074299343">Prc10 (Zarf)</translation>
 <translation id="106701514854093668">Faqeshënuesit e desktopit</translation>
+<translation id="1070901266639972381">Natë</translation>
 <translation id="1074497978438210769">Jo i sigurt</translation>
 <translation id="1080116354587839789">Përshtate sipas gjerësisë</translation>
 <translation id="1086953900555227778">Index-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">Ndrysho fjalëkalimin</translation>
 <translation id="1096545575934602868">Kjo fushë nuk duhet të ketë më shumë se <ph name="MAX_ITEMS_LIMIT" /> regjistrime. Të gjitha regjistrimet e mëtejshme do të refuzohen.</translation>
 <translation id="109743633954054152">Menaxho fjalëkalimet te cilësimet e Chrome</translation>
+<translation id="1101672080107056897">Veprimi i gabimit</translation>
 <translation id="1103523840287552314">Përkthe gjithmonë nga <ph name="LANGUAGE" /></translation>
 <translation id="1107591249535594099">Nëse zgjidhet, Chrome do të ruajë një kopje të kartës tënde në këtë pajisje për një plotësim më të shpejtë të formularit.</translation>
 <translation id="1110994991967754504">Përzgjidh autorizimin për <ph name="PERMISSION_NAME" /></translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">Lista e leximit</translation>
 <translation id="1264126396475825575">U regjistrua raport i ndërprerjes aksidentale në <ph name="CRASH_TIME" /> (nuk është ngarkuar apo shpërfillur ende)</translation>
 <translation id="1270502636509132238">Mënyra e marrjes</translation>
+<translation id="1281476433249504884">Stivuesi 1</translation>
 <translation id="1285320974508926690">Asnjëherë mos e përkthe këtë sajt</translation>
 <translation id="1285400217480592994">Skano përmbajtjen e skedarëve që shkarkon ose ngarkon në Chrome.</translation>
 <translation id="1292701964462482250">"Një softuer në kompjuterin tënd po e ndalon Chrome që të lidhet në mënyrë të sigurt me uebin" (vetëm kompjuterët me Windows)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">Tri kapje me tel lart</translation>
 <translation id="1413809658975081374">Gabim i privatësisë</translation>
 <translation id="1426410128494586442">Po</translation>
+<translation id="1428146450423315676">Stivuesi 7</translation>
 <translation id="1430915738399379752">Printo</translation>
 <translation id="1442386063175183758">Palosje me dritare djathtas</translation>
 <translation id="1442987760062738829">Shpim</translation>
@@ -130,6 +136,7 @@
 <translation id="1521655867290435174">Fletët e Google</translation>
 <translation id="1527263332363067270">Në pritje të lidhjes...</translation>
 <translation id="1529521330346880926">10x15 (Zarf)</translation>
+<translation id="1529789484829130889">Tabakaja 8</translation>
 <translation id="1530707389502320859">Sajti ku sapo u përpoqe të hyje duket i rremë. Sulmuesit ndonjëherë i imitojnë sajtet duke bërë tek URL-ja ndryshime të vogla që janë të vështira për t'u shikuar.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">Kjo faqe thotë</translation>
@@ -156,6 +163,7 @@
 <translation id="1639239467298939599">Po ngarkohet...</translation>
 <translation id="1640180200866533862">Politikat e përdoruesit</translation>
 <translation id="1640244768702815859">Provo <ph name="BEGIN_LINK" />të vizitosh faqen kryesore të sajtit<ph name="END_LINK" />.</translation>
+<translation id="1641976391427233992">Vonoje daljen deri në</translation>
 <translation id="1644574205037202324">Historiku</translation>
 <translation id="1645368109819982629">Protokolli nuk mbështetet</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -164,12 +172,15 @@
 <translation id="1663943134801823270">Kartat dhe adresat janë nga Chrome. Ato mund t'i menaxhosh te <ph name="BEGIN_LINK" />Cilësimet<ph name="END_LINK" />.</translation>
 <translation id="1671391448414634642">Faqet në <ph name="SOURCE_LANGUAGE" /> do të përkthehen në <ph name="TARGET_LANGUAGE" /> nga tani e në vazhdim.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> përdor zakonisht enkriptimin për mbrojtjen e informacioneve të tua. Kur Google Chrome u përpoq të lidhej me <ph name="SITE" /> këtë herë, sajti i uebit dërgoi prapa kredenciale të pazakonta dhe të pasakta. Kjo mund të ndodhë kur një sulmues pretendon se është <ph name="SITE" /> ose kur lidhja është ndërprerë nga një ekran i identifikimit të Wi-Fi. Informacionet e tua janë ende të sigurta sepse Google Chrome e ndaloi lidhjen para se të shkëmbeheshin të dhënat.</translation>
+<translation id="1682696192498422849">Ana e shkurtër në fillim</translation>
 <translation id="168841957122794586">Certifikata e serverit përmban një çelës të dobët kriptografik.</translation>
 <translation id="1697532407822776718">Je gati!</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Ky server nuk mund të vërtetonte se është <ph name="DOMAIN" />; certifikata e tij e sigurisë supozohet se është nga dita e nesërme. Kjo mund të jetë shkaktuar nga një konfigurim i gabuar ose nga ndërhyrja e një sulmuesi në lidhjen tënde.}other{ky server nuk mund të vërtetonte se është <ph name="DOMAIN" />; certifikata e tij e sigurisë supozohet se është nga # ditë në të ardhmen. Kjo mund të jetë shkaktuar nga një konfigurim i gabuar ose nga ndërhyrja e një sulmuesi në lidhjen tënde.}}</translation>
 <translation id="1710259589646384581">Sistemi operativ</translation>
+<translation id="1713628304598226412">Tabakaja 2</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">Kutia postare 3</translation>
 <translation id="1718029547804390981">Dokumenti është shumë i madh për t'u shënuar</translation>
 <translation id="1721424275792716183">* Fusha është e detyrueshme</translation>
 <translation id="1727741090716970331">Shto numër të vlefshëm karte</translation>
@@ -183,7 +194,9 @@
 <translation id="1743520634839655729">Për të paguar më shpejt herën tjetër, ruaje kartën, emrin dhe adresën tënde të faturimit në "Llogarinë tënde të Google" dhe në këtë pajisje.</translation>
 <translation id="1743570585616704562">Nuk njihet</translation>
 <translation id="1745880797583122200">Shfletuesi yt është i menaxhuar</translation>
+<translation id="1746113442205726301">Zhvendosja e imazhit në boshtin Y</translation>
 <translation id="17513872634828108">Hap skedat</translation>
+<translation id="1752021286346845558">Kutia postare 8</translation>
 <translation id="1753706481035618306">Numri i faqes</translation>
 <translation id="1763864636252898013">Ky server nuk mundi të dëshmonte se ky është <ph name="DOMAIN" />; certifikata e tij e sigurisë nuk është e besueshme nga Chromium. Kjo mund të shkaktohet nga keqkonfigurimi ose ndonjë sulmues që po kap lidhjen tënde.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Provo të ekzekutosh diagnostikimin e rrjetit të Windows<ph name="END_LINK" />.</translation>
@@ -193,6 +206,7 @@
 <translation id="1791429645902722292">Smart Lock-u i Google</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">Emri i mbajtësit të kartës</translation>
+<translation id="1807528111851433570">Fleta e fillimit</translation>
 <translation id="1821930232296380041">Kërkesë e pavlefshme ose parametra të pavlefshme të kërkesës</translation>
 <translation id="1822540298136254167">Sajtet e uebit që viziton dhe koha që kalon në to</translation>
 <translation id="1826516787628120939">Po kontrollon</translation>
@@ -221,6 +235,7 @@
 <translation id="1973335181906896915">Gabim serializimi</translation>
 <translation id="1974060860693918893">I përparuar</translation>
 <translation id="1974883374937189061">Ndihmo me përmirësimin e sigurisë së Chrome duke dërguar <ph name="BEGIN_WHITEPAPER_LINK" />URL-të e disa faqeve që viziton, informacione të kufizuara të sistemit, si dhe disa përmbajtje faqeje<ph name="END_WHITEPAPER_LINK" /> te Google. <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">Kutia postare 10</translation>
 <translation id="1978555033938440688">Versioni i firmuerit</translation>
 <translation id="1981206234434200693">Pastro të dhënat e historikut të shfletimit të Chrome</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -230,6 +245,7 @@
 <translation id="2025186561304664664">Përfaqësuesi është i caktuar për konfigurim automatik.</translation>
 <translation id="2030481566774242610">Mos dëshiron të thuash <ph name="LINK" />?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Të kontrollosh përfaqësuesin dhe murin mbrojtës<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">Tabakaja 7</translation>
 <translation id="2053111141626950936">Faqet në <ph name="LANGUAGE" /> nuk do të përkthehen.</translation>
 <translation id="2053553514270667976">Kodi postar</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 sugjerim}other{# sugjerime}}</translation>
@@ -242,6 +258,7 @@
 <translation id="2096368010154057602">Departamenti</translation>
 <translation id="2099652385553570808">Tri kapje me tel majtas</translation>
 <translation id="2102134110707549001">Sugjero fjalëkalim të fortë…</translation>
+<translation id="2107021941795971877">Mbështetjet e printimit</translation>
 <translation id="2108755909498034140">Rinis kompjuterin</translation>
 <translation id="2111256659903765347">Super-A</translation>
 <translation id="2113977810652731515">Karta</translation>
@@ -266,6 +283,7 @@
 <translation id="2187317261103489799">Zbulo (parazgjedhja)</translation>
 <translation id="2188375229972301266">Shumë shpime poshtë</translation>
 <translation id="2202020181578195191">Fut një vit të vlefshëm skadimi</translation>
+<translation id="22081806969704220">Tabakaja 3</translation>
 <translation id="2212735316055980242">Politika nuk u gjet</translation>
 <translation id="2213606439339815911">Po merr hyrjet...</translation>
 <translation id="2215727959747642672">Modifikimi i skedarëve</translation>
@@ -283,6 +301,7 @@
 <translation id="2263079731045660823">Përditëso informacionet për plotësimin automatik të kartës së kreditit te cilësimet e Chrome</translation>
 <translation id="2267047181501709434">Po verifikon identitetin tënd...</translation>
 <translation id="2270484714375784793">Numër telefoni</translation>
+<translation id="2276057643614339130">Baza e printimit</translation>
 <translation id="2277103315734023688">Kërko përpara</translation>
 <translation id="2283340219607151381">Ruaj dhe plotëso adresat</translation>
 <translation id="2288422996159078444">Çdo gjë që shkruan, çdo faqe që shikon ose çdo aktivitet tjetër në ueb po shikohet. Përmbajtjet në sajte mund të ndryshohen pa dijeninë tënde.</translation>
@@ -322,6 +341,7 @@
 <translation id="2465655957518002998">Zgjidh mënyrën e dorëzimit</translation>
 <translation id="2465688316154986572">Kapje me tel</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />Po ekzekuton diagnostikimin e rrjetit<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">Renditja 1 deri në N</translation>
 <translation id="2473195200299095979">Përktheje këtë faqe</translation>
 <translation id="2479410451996844060">URL-ja e kërkimit është e pavlefshme.</translation>
 <translation id="2482878487686419369">Njoftimet</translation>
@@ -340,6 +360,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{dhe 1 tjetër}other{dhe # të tjera}}</translation>
 <translation id="2536110899380797252">Shto adresë</translation>
 <translation id="2539524384386349900">Zbulo</translation>
+<translation id="2544644783021658368">Një dokument i vetëm</translation>
 <translation id="254947805923345898">Vlera e politikës nuk është e vlefshme.</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> dërgoi një përgjigje të pavlefshme.</translation>
 <translation id="2556876185419854533">&amp;Zhbëje redaktimin</translation>
@@ -366,8 +387,10 @@
 <translation id="2676271551327853224">Roc-8K</translation>
 <translation id="2677748264148917807">Largohu</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">Përshtatja më e mirë</translation>
 <translation id="2691924980723297736">Paralajmërimi i sigurisë</translation>
 <translation id="2699302886720511147">Kartat e pranuara</translation>
+<translation id="2701514975700770343">E kthyer poshtë</translation>
 <translation id="2702801445560668637">Lista e leximit</translation>
 <translation id="2704283930420550640">Vlera nuk përputhet me formatin.</translation>
 <translation id="2705137772291741111">Kopja e ruajtur (në memorien specifike) të këtij sajti ishte e palexueshme.</translation>
@@ -385,12 +408,15 @@
 <translation id="2742870351467570537">Hiq artikujt e zgjedhur</translation>
 <translation id="277133753123645258">Mënyra e dërgimit</translation>
 <translation id="277499241957683684">Mungon një regjistrim i pajisjes</translation>
+<translation id="2775884851269838147">Faqja e parë e printimit</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">Lidhja u rivendos.</translation>
 <translation id="2792012897584536778">Administratorët e kësaj pajisjeje kanë konfiguruar certifikatat e sigurisë që mund t'i lejojnë të shohin përmbajtjen e sajteve të uebit që viziton.</translation>
 <translation id="2799020568854403057">Sajti përpara përmban aplikacione të dëmshme</translation>
 <translation id="2799223571221894425">Nis sërish</translation>
 <translation id="2803306138276472711">Kohët e fundit "Shfletimi i sigurt me Google" <ph name="BEGIN_LINK" />zbuloi softuerin keqdashës<ph name="END_LINK" /> në <ph name="SITE" />. Faqet që zakonisht janë të sigurta ndonjëherë infektohen me softuerë keqdashës.</translation>
+<translation id="2807052079800581569">Pozicioni i imazhit në boshtin Y</translation>
+<translation id="2809804249696361569">Të dyja fletët</translation>
 <translation id="2824775600643448204">Shiriti i adresës dhe i kërkimit</translation>
 <translation id="2826760142808435982">Lidhja është e enkriptuar dhe e vërtetuar me <ph name="CIPHER" /> dhe përdor <ph name="KX" /> si mekanizëm kryesor shkëmbimi.</translation>
 <translation id="2835170189407361413">Pastro formularin</translation>
@@ -405,6 +431,7 @@
 <translation id="290376772003165898">Faqja nuk është në <ph name="LANGUAGE" />?</translation>
 <translation id="2909946352844186028">U zbulua një ndryshim i rrjetit.</translation>
 <translation id="2910133103376701357">Pajisja dhe llogaria jote menaxhohen nga <ph name="ENROLLMENT_DOMAIN" />.</translation>
+<translation id="2911973620368911614">ID-ja e përdoruesit të llogarisë së punës</translation>
 <translation id="2916038427272391327">Mbyll programet e tjera</translation>
 <translation id="2922350208395188000">Certifikata e serverit nuk mund të kontrollohet.</translation>
 <translation id="2925673989565098301">Mënyra e dorëzimit</translation>
@@ -414,6 +441,7 @@
 <translation id="2934466151127459956">Government-Letter</translation>
 <translation id="2941952326391522266">Ky server nuk mund të dëshmonte se është <ph name="DOMAIN" />; certifikata e tij e sigurisë është nga <ph name="DOMAIN2" />. Kjo mund të shkaktohet nga një konfigurim i pasaktë ose nga ndërhyrja e një sulmuesi në lidhjen tënde.</translation>
 <translation id="2948083400971632585">Mund të çaktivizosh çdo përfaqësues të konfiguruar për një lidhje nga faqja e cilësimeve.</translation>
+<translation id="2951588413176968965">Kutia ime postare</translation>
 <translation id="295526156371527179">Paralajmërim: Kjo politikë nuk është bashkuar si fjalor siç specifikohet nga politika sepse nuk është fjalor.</translation>
 <translation id="2955913368246107853">Mbylle shiritin e gjetjes</translation>
 <translation id="2969319727213777354">Për të krijuar një lidhje të sigurt, ora duhet të vendoset në mënyrë të saktë. Kjo ndodh sepse certifikatat që përdorin faqet e internetit për t'u identifikuar janë të vlefshme vetëm për periudha të caktuara kohore. Meqenëse ora e pajisjes është e pasaktë, Google Chrome nuk mund t'i verifikojë këto certifikata.</translation>
@@ -428,6 +456,7 @@
 <translation id="2991174974383378012">Ndarja me sajtet e uebit</translation>
 <translation id="2991571918955627853">Nuk mund ta vizitosh <ph name="SITE" /> në këtë moment sepse sajti i uebit përdor HSTS. Gabimet dhe sulmet e rrjetit janë zakonisht të përkohshme, prandaj kjo faqe ndoshta do të funksionojë më vonë.</translation>
 <translation id="2996674880327704673">Sugjerime nga Google</translation>
+<translation id="3002501248619246229">Kontrollo median e tabakasë së hyrjes</translation>
 <translation id="3005723025932146533">Shfaq një kopje të ruajtur</translation>
 <translation id="3008447029300691911">Shkruaj kodin CVC për <ph name="CREDIT_CARD" />. Pasi të konfirmohet, të dhënat e kartës do të ndahen me këtë sajt.</translation>
 <translation id="3010559122411665027">Hyrja e listës "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -440,12 +469,14 @@
 <translation id="3060227939791841287">C9 (Zarf)</translation>
 <translation id="3061707000357573562">Shërbimi i korrigjimit</translation>
 <translation id="3064966200440839136">Po del nga modaliteti "i fshehur" për të paguar nëpërmjet një aplikacioni të jashtëm. Do të vazhdosh?</translation>
+<translation id="3080254622891793721">Grafika</translation>
 <translation id="3086579638707268289">Aktiviteti yt në ueb po monitorohet</translation>
 <translation id="3087734570205094154">Në fund</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Shto adresën e marrjes</translation>
 <translation id="3105172416063519923">ID-ja e elementit:</translation>
 <translation id="3109728660330352905">Nuk ke autorizim për të parë këtë faqe.</translation>
+<translation id="3113284927548439113">Turni i tretë</translation>
 <translation id="3116158981186517402">Laminim</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />Provo të ekzekutosh diagnostikimin e lidhjes<ph name="END_LINK" />.</translation>
@@ -470,6 +501,7 @@
 <translation id="3209034400446768650">Faqja mund të tarifojë para</translation>
 <translation id="3212581601480735796">Aktiviteti yt në <ph name="HOSTNAME" /> po monitorohet</translation>
 <translation id="3215092763954878852">WebAuthn nuk mund të përdorej</translation>
+<translation id="3218181027817787318">Relativ</translation>
 <translation id="3225919329040284222">Serveri paraqiti një certifikatë që nuk përputhet me pritshmëritë e integruara. Këto pritshmëri përfshihen për uebsajte të caktuara të sigurisë së lartë, me qëllim që të të mbrojnë.</translation>
 <translation id="3226128629678568754">Shtyp butonin e ringarkimit për të dorëzuar përsëri të dhënat që duhen për të ngarkuar faqen.</translation>
 <translation id="3227137524299004712">Mikrofoni</translation>
@@ -504,6 +536,7 @@
 <translation id="3399952811970034796">Adresa e dorëzimit</translation>
 <translation id="3422248202833853650">Provo të dalësh nga programet e tjera për të liruar memorien.</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> nuk është i arritshëm aktualisht.</translation>
+<translation id="3423742043356668186">Specifikuar nga sistemi</translation>
 <translation id="3427092606871434483">Lejo (parazgjedhja)</translation>
 <translation id="3427342743765426898">&amp;Ribëj redaktimin</translation>
 <translation id="342781501876943858">Chromium rekomandon rivendosjen e fjalëkalimit tënd nëse e ke ripërdorur në sajte të tjera.</translation>
@@ -513,6 +546,7 @@
 <translation id="3447661539832366887">Zotëruesi i kësaj pajisjeje ka çaktivizuar lojën me dinozaurë.</translation>
 <translation id="3447884698081792621">Shfaq certifikatën (lëshuar nga <ph name="ISSUER" />)</translation>
 <translation id="3452404311384756672">Intervali i marrjes:</translation>
+<translation id="3453962258458347894">Numri i ripërpjekjeve</translation>
 <translation id="3456231139987291353">Number-11 (Zarf)</translation>
 <translation id="3461824795358126837">Theksuesi</translation>
 <translation id="3462200631372590220">Fshih të përparuarat</translation>
@@ -520,15 +554,20 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" /> - aktualisht e hapur. Shtyp "Tab" dhe më pas "Enter" për të kaluar te skeda e hapur</translation>
 <translation id="3479552764303398839">Jo tani</translation>
 <translation id="3484560055331845446">Mund të humbësh qasjen në "Llogarinë tënde të Google". Chrome rekomandon që ta ndryshosh fjalëkalimin tani. Do të të kërkohet që të identifikohesh.</translation>
+<translation id="3487845404393360112">Tabakaja 4</translation>
 <translation id="3495081129428749620">Gjej në faqen
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">Kjo politikë shpërfillet pasi një politikë tjetër nga i njëjti grup politikash ka përparësi më të lartë.</translation>
 <translation id="3513704683820682405">Realiteti i zgjeruar</translation>
+<translation id="3518941727116570328">Menaxhimi i shumë objekteve</translation>
 <translation id="3528171143076753409">Certifikata e serverit nuk është e besuar.</translation>
 <translation id="3528485271872257980">Kafe e errët</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{Të paktën 1 artikull në pajisjet e sinkronizuara}=1{1 artikull (dhe më shumë në pajisjet e sinkronizuara)}other{# artikuj (dhe më shumë në pajisjet e sinkronizuara)}}</translation>
+<translation id="3531780078352352885">Fletët e punës</translation>
+<translation id="3533328374079021623">Kutia postare 5</translation>
 <translation id="3539171420378717834">Mbaj një kopje të kësaj karte në këtë pajisje</translation>
 <translation id="3553513561058684206">Për ty</translation>
+<translation id="3558573058928565255">Dita dhe ora</translation>
 <translation id="3566021033012934673">Lidhja jote nuk është private.</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635">Një faqe e integruar në <ph name="SITE" /> thotë</translation>
@@ -537,8 +576,10 @@
 <translation id="3583757800736429874">&amp;Bëje përsëri zhvendosjen</translation>
 <translation id="3584299510153766161">Dy shpime poshtë</translation>
 <translation id="3586931643579894722">Fshih detajet</translation>
+<translation id="3587738293690942763">Mesatar</translation>
 <translation id="3592413004129370115">Italian (Zarf)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">Orientimi i furnizimit</translation>
 <translation id="3614103345592970299">Madhësia 2</translation>
 <translation id="361438452008624280">Regjistrimi i listës "<ph name="LANGUAGE_ID" />": Gjuhë e panjohur ose e pambështetur.</translation>
 <translation id="3615877443314183785">Fut një datë të vlefshme skadimi</translation>
@@ -547,6 +588,7 @@
 <translation id="3630155396527302611">Nëse tashmë është i listuar si program që lejohet të ketë qasje te rrjeti,
       provo që ta heqësh nga lista dhe ta shtosh përsëri.</translation>
 <translation id="3631244953324577188">Sistemet biometrike</translation>
+<translation id="3634530185120165534">Tabakaja 5</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">Vlerësimi është i suksesshëm</translation>
 <translation id="3655670868607891010">Nëse e shikon këtë vazhdimisht, provo këto <ph name="HELP_LINK" />.</translation>
@@ -580,16 +622,21 @@
 <translation id="3760561303380396507">Të përdoret Windows Hello në vend të CVC?</translation>
 <translation id="3761718714832595332">Fshihe statusin</translation>
 <translation id="3765032636089507299">Faqja e "Shfletimit të sigurt" është duke u ndërtuar.</translation>
+<translation id="3765588406864124894">Kutia postare 9</translation>
 <translation id="3778403066972421603">Dëshiron që ta ruash këtë kartë te llogaria jote e Google dhe në këtë pajisje?</translation>
+<translation id="3780694243617746492">Koshi i daljes</translation>
 <translation id="3781428340399460090">Rozë e ndezur</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569">Skadon më <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="3789155188480882154">Madhësia 16</translation>
 <translation id="3797522431967816232">Prc3 (Zarf)</translation>
+<translation id="3799805948399000906">Fonti i kërkuar</translation>
+<translation id="3807366285948165054">Zhvendosja e imazhit në boshtin X</translation>
 <translation id="3807873520724684969">Përmbajtja e dëmshme është bllokuar.</translation>
 <translation id="3808375843007691220">Paralajmërim: Përpara ka funksione eksperimentale!</translation>
 <translation id="3810973564298564668">Menaxho</translation>
 <translation id="382518646247711829">Nëse përdor një server përfaqësues...</translation>
+<translation id="3827112369919217609">Absolut</translation>
 <translation id="3828924085048779000">Lënia bosh e frazës së kalimit nuk lejohet.</translation>
 <translation id="3831915413245941253"><ph name="ENROLLMENT_DOMAIN" /> ka instaluar shtesa për funksione shtesë. Shtesat kanë qasje te disa prej të dhënave të tua.</translation>
 <translation id="3832522519263485449">Shumë shpime majtas</translation>
@@ -598,6 +645,7 @@
 <translation id="3884278016824448484">Identifikuesi i pajisjes bie në konflikt</translation>
 <translation id="3885155851504623709">Famullia</translation>
 <translation id="388632593194507180">U zbulua monitorim</translation>
+<translation id="3886948180919384617">Stivuesi 3</translation>
 <translation id="3890664840433101773">Shto një email</translation>
 <translation id="3897092660631435901">Menyja</translation>
 <translation id="3901925938762663762">Karta ka skaduar</translation>
@@ -632,7 +680,9 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">Konfigurimi i përfaqësuesit është caktuar të përdorë një shkrim URL-je .pac, jo serverë të fiksuar përfaqësues.</translation>
 <translation id="4082393374666368382">Cilësimet - Menaxhimi</translation>
+<translation id="4088981014127559358">Zhvendosja e imazhit në boshtin Y në anën 1</translation>
 <translation id="4098354747657067197">Sajt mashtrues përpara</translation>
+<translation id="4101413244023615925">Teksti dhe grafika</translation>
 <translation id="4103249731201008433">Numri i serisë së pajisjes është i pavlefshëm</translation>
 <translation id="4103763322291513355">Vizito &lt;strong&gt;chrome://policy&lt;/strong&gt; për të parë listën e URL-ve të vendosura në listën e zezë dhe politika të tjera të detyruara nga administratori i sistemit tënd.</translation>
 <translation id="4108231218301530806">Përdor gjurmën e gishtit për të verifikuar këtë kartë herën tjetër.</translation>
@@ -645,6 +695,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 tjetër}other{# të tjerë}}</translation>
 <translation id="4130226655945681476">Të kontrollosh kabllot e rrjetit, modemin dhe router-in</translation>
 <translation id="413544239732274901">Mëso më shumë</translation>
+<translation id="4142935452406587478">Tabakaja 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">Përdor parazgjedhjen globale (zbulo)</translation>
 <translation id="4159784952369912983">Vjollcë</translation>
@@ -687,6 +738,7 @@
 <translation id="4258748452823770588">Nënshkrim i gabuar</translation>
 <translation id="4261046003697461417">Dokumentet e mbrojtura nuk mund të shënohen</translation>
 <translation id="4265872034478892965">Lejuar nga administratori yt</translation>
+<translation id="4270541775497538019">Stivuesi 6</translation>
 <translation id="4275830172053184480">Rinise pajisjen</translation>
 <translation id="4277028893293644418">Rivendos fjalëkalimin</translation>
 <translation id="4279811152705618813">Pajisja jote <ph name="DEVICE_TYPE" /> menaxhohet nga <ph name="ENROLLMENT_DOMAIN" /></translation>
@@ -702,6 +754,7 @@
 <translation id="4318566738941496689">Emri i pajisjes dhe adresa e rrjetit</translation>
 <translation id="4325863107915753736">Dështoi në gjetjen e artikullit</translation>
 <translation id="4326324639298822553">Kontrollo datën e skadimit dhe provo përsëri</translation>
+<translation id="4331519897422864041">Stivuesi 5</translation>
 <translation id="4331708818696583467">Jo e sigurt</translation>
 <translation id="4340982228985273705">Ky kompjuter nuk është zbuluar si i menaxhuar nga ndërmarrja, prandaj politika mund të instalojë automatikisht vetëm shtesat e strehuara në "Dyqanin e uebit të Chrome". URL-ja e përditësimit të "Dyqanit të uebit të Chrome" është "<ph name="CWS_UPDATE_URL" />".</translation>
 <translation id="4346197816712207223">Kartat e pranuara të kreditit</translation>
@@ -717,6 +770,7 @@
 <translation id="4372948949327679948">Pritet një vlerë <ph name="VALUE_TYPE" />.</translation>
 <translation id="4377125064752653719">U përpoqe të arrije domenin <ph name="DOMAIN" />, por certifikata që paraqiti serveri është revokuar nga lëshuesi i saj. Kjo do të thotë se kredencialet e sigurisë që paraqiti serveri nuk duhet të besohen në mënyrë absolute. Mund të jesh duke komunikuar me ndonjë sulmues.</translation>
 <translation id="4378154925671717803">Telefoni</translation>
+<translation id="4390472908992056574">Buza</translation>
 <translation id="4406896451731180161">rezultatet e kërkimit</translation>
 <translation id="4408413947728134509">Kukit <ph name="NUM_COOKIES" /></translation>
 <translation id="4415426530740016218">Adresa e marrjes</translation>
@@ -743,6 +797,7 @@
 <translation id="4522570452068850558">Detajet</translation>
 <translation id="4524138615196389145">Konfirmo kartat e tua më shpejt duke përdorur WebAuthn nga tani e tutje</translation>
 <translation id="4524805452350978254">Menaxho kartat</translation>
+<translation id="4542971377163063093">Tabakaja 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Blici</translation>
 <translation id="4558551763791394412">Provo të çaktivizosh shtesat.</translation>
@@ -758,6 +813,7 @@
 <translation id="4628948037717959914">Fotografia</translation>
 <translation id="4635654612248442824">Sajti <ph name="ORIGIN" /> ka kërkuar që të zbatohet një politikë e origjinës për të gjitha kërkesat e tij, por kjo politikë nuk mund të zbatohet aktualisht.</translation>
 <translation id="464342062220857295">Veçoritë e kërkimit</translation>
+<translation id="4644670975240021822">Renditja e kundërt e kthyer poshtë</translation>
 <translation id="4646534391647090355">Më ço atje tani</translation>
 <translation id="4658638640878098064">Kapje me tel lart majtas</translation>
 <translation id="4668929960204016307">,</translation>
@@ -766,6 +822,7 @@
 <translation id="4690462567478992370">Ndalo përdorimin e një certifikate të pavlefshme</translation>
 <translation id="4691835149146451662">Architecture-A (Zarf)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">Ana</translation>
 <translation id="4708268264240856090">Lidhja jote u ndërpre</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />Po ekzekuton diagnostikimin e rrjetit të Windows<ph name="END_LINK" /></translation>
@@ -783,9 +840,11 @@
 <translation id="4764776831041365478">Faqja e internetit në <ph name="URL" /> mund të mos ofrohet përkohësisht ose është zhvendosur përgjithmonë në një adresë të re interneti.</translation>
 <translation id="4766713847338118463">Dy kapje me tel në fund</translation>
 <translation id="4771973620359291008">Ka ndodhur një gabim i panjohur.</translation>
+<translation id="4780366598804516005">Kutia postare 1</translation>
 <translation id="4780900888022378816">Pajisja jote menaxhohet nga <ph name="ENROLLMENT_DOMAIN" /> dhe llogaria jote menaxhohet nga <ph name="ACCOUNT_DOMAIN" />.</translation>
 <translation id="4785689107224900852">Kalo te kjo skedë</translation>
 <translation id="4791134497475588553">Aplikacionet e instaluara të Linux dhe kur janë përdorur për herë të fundit</translation>
+<translation id="4796594887379589189">ID-ja e llogarisë së punës</translation>
 <translation id="4798078619018708837">Shkruaj datën e skadimit dhe kodin CVC për <ph name="CREDIT_CARD" /> për të përditësuar detajet e kartës. Pasi t'i konfirmosh, detajet e kartës nga "Llogaria jote e Google" do të ndahen me këtë sajt.</translation>
 <translation id="4800132727771399293">Kontrollo datën e skadimit dhe CVC-në dhe provo sërish.</translation>
 <translation id="480334179571489655">Gabim i politikës së origjinës</translation>
@@ -793,6 +852,7 @@
 <translation id="4807049035289105102">Nuk mund ta vizitosh <ph name="SITE" /> tani sepse sajti i uebit dërgoi kredenciale të koduara që nuk mund të përpunohen nga Google Chrome. Gabimet dhe sulmet në rrjet zakonisht janë të përkohshme, kështu që kjo faqe ndoshta do të punojë më vonë.</translation>
 <translation id="4813512666221746211">Gabim në rrjet</translation>
 <translation id="4816492930507672669">Përshtate me faqen</translation>
+<translation id="484462545196658690">Automatike</translation>
 <translation id="4850886885716139402">Pamja</translation>
 <translation id="4854362297993841467">Kjo mënyrë dorëzimi nuk ofrohet. Provo një mënyrë tjetër.</translation>
 <translation id="4876188919622883022">Pamja e thjeshtuar</translation>
@@ -802,6 +862,7 @@
 <translation id="4879491255372875719">Automatike (e parazgjedhur)</translation>
 <translation id="4880827082731008257">Historiku i kërkimeve</translation>
 <translation id="4881695831933465202">Hap</translation>
+<translation id="4892518386797173871">Prapa</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">Ruaj...</translation>
 <translation id="4913987521957242411">Shpim lart majtas</translation>
@@ -811,6 +872,7 @@
 <translation id="4926049483395192435">Duhet të specifikohet.</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> thotë</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">Kapaciteti i madh</translation>
 <translation id="4943703118917034429">Realiteti virtual</translation>
 <translation id="4943872375798546930">Asnjë rezultat</translation>
 <translation id="4950898438188848926">Butoni i ndërrimit të skedës. Shtyp "Enter" për të kaluar te skeda e hapur, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -843,8 +905,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1 në përdorim)}other{(# në përdorim)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />Të kontrollosh adresën e përfaqësuesit<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">Kutia postare 4</translation>
 <translation id="5087286274860437796">Certifikata e serverit është e pavlefshme në këtë moment.</translation>
 <translation id="5087580092889165836">Shto kartë</translation>
+<translation id="5088142053160410913">Mesazhi për operatorin</translation>
 <translation id="5089810972385038852">Shteti</translation>
 <translation id="5093232627742069661">Palosje Z</translation>
 <translation id="5094747076828555589">Ky server nuk mundi të dëshmonte se kjo është <ph name="DOMAIN" />; certifikata e tij e sigurisë nuk është e besueshme nga Chromium. Kjo mund të shkaktohet nga keqkonfigurimi ose një sulmues që po kap lidhjen tënde.</translation>
@@ -855,15 +919,18 @@
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
 <translation id="5121469660360593280">Ndaj me administratorin tënd të dhëna për ngjarjet e sigurisë që janë raportuar nga "Mbrojtja e përdoruesit" të Chrome Enterprise. Kjo mund të përfshijë URL-të e faqeve që viziton ti, emrat e skedarëve ose të dhënat meta dhe emrin e përdoruesit që përdor për t'u identifikuar në pajisjen tënde dhe në Chrome.</translation>
+<translation id="5123063207673082822">Fundjavë</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verifiko kartën tënde</translation>
 <translation id="5135404736266831032">Menaxho adresat...</translation>
 <translation id="5138227688689900538">Shfaq më pak</translation>
 <translation id="5141240743006678641">Enkripto fjalëkalimet e sinkronizuara me kredencialet e tua të Google</translation>
 <translation id="5145883236150621069">Një kod gabimi i pranishëm në përgjigjen e politikës</translation>
+<translation id="5148809049217731050">E kthyer lart</translation>
 <translation id="515292512908731282">C4 (Zarf)</translation>
 <translation id="5158275234811857234">Kapak</translation>
 <translation id="5159010409087891077">Hape faqen në një dritare të re "të fshehtë" (⇧⌘N)</translation>
+<translation id="5161506081086828129">Stivuesi 9</translation>
 <translation id="516920405563544094">Shkruaj kodin CVC për <ph name="CREDIT_CARD" />. Pasi t'i konfirmosh, detajet e kartës nga "Llogaria jote e Google" do të ndahen me këtë sajt.</translation>
 <translation id="5169827969064885044">Mund të humbasësh qasjen në llogarinë e organizatës ose mund të pësosh vjedhje të identitetit. Chrome rekomandon që ta ndryshosh fjalëkalimin tani.</translation>
 <translation id="5170017743895942767">"Mbrojtja e përdoruesit" e Chrome Enterprise</translation>
@@ -884,6 +951,7 @@
 <translation id="5250209940322997802">"Lidhu me rrjetin"</translation>
 <translation id="5251803541071282808">Reja kompjuterike</translation>
 <translation id="5252000469029418751">C7 (Zarf)</translation>
+<translation id="5254043433801397071">Optimizo përmbajtjen e printimit</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">Pagesa përfundoi</translation>
 <translation id="5266128565379329178">Lidhje lart</translation>
@@ -897,6 +965,7 @@
 <translation id="5287240709317226393">Shfaq kukit</translation>
 <translation id="5287456746628258573">Ky sajt përdor një konfigurim të vjetruar të sigurisë, i cili mund t'i ekspozojë informacionet e tua (p.sh. fjalëkalimin ose numrat e kartës së kreditit) kur dërgohen te ky sajt.</translation>
 <translation id="5288108484102287882">Vërtetimi i vlerave të politikës ka ngritur shqetësime</translation>
+<translation id="5289384342738547352">Menaxhimi i shumë dokumenteve</translation>
 <translation id="5295292838686006428">Një nxjerrje e paautorizuar të dhënash në një sajt apo në një prej aplikacioneve të tua e ka ekspozuar fjalëkalimin tënd. Chrome rekomandon që t’i kontrollosh menjëherë fjalëkalimet e tua të ruajtura.</translation>
 <translation id="5299298092464848405">Gabim gjatë analizimit të politikës</translation>
 <translation id="5300589172476337783">Shfaq</translation>
@@ -921,10 +990,12 @@
 <translation id="5396631636586785122">Qepje anësore djathtas</translation>
 <translation id="5400836586163650660">Gri</translation>
 <translation id="540969355065856584">Ky server nuk mund të provojë se është <ph name="DOMAIN" />; certifikata e tij e sigurisë është e pavlefshme në këtë moment. Kjo mund të shkaktohet për shkak të konfigurimit të pasaktë ose në rast të ndërhyrjes së ndonjë sulmuesi në lidhjen tënde.</translation>
+<translation id="541416427766103491">Stivuesi 4</translation>
 <translation id="5421136146218899937">Pastro të dhënat e shfletimit...</translation>
 <translation id="5430298929874300616">Hiqe faqeshënuesin</translation>
 <translation id="5431657950005405462">Skedari yt nuk u gjet</translation>
 <translation id="5439770059721715174">Gabim i miratimit të skemës në "<ph name="ERROR_PATH" />": <ph name="ERROR" /></translation>
+<translation id="5443468954631487277">Renditja e kundërt e kthyer lart</translation>
 <translation id="5452270690849572955">Kjo faqe e <ph name="HOST_NAME" /> nuk mund të gjendet</translation>
 <translation id="5455374756549232013">Vulë kohore politike e gabuar</translation>
 <translation id="5457113250005438886">E pavlefshme</translation>
@@ -946,7 +1017,9 @@
 <translation id="552553974213252141">A ishte nxjerrë teksti saktësisht?</translation>
 <translation id="55293785478302737">Qepje anësore</translation>
 <translation id="553484882784876924">Prc6 (Zarf)</translation>
+<translation id="5539243836947087108">Bazamenti i kapjes</translation>
 <translation id="5540224163453853">Artikulli i kërkuar nuk u gjet.</translation>
+<translation id="5541086400771735334">Kutia postare 7</translation>
 <translation id="5541546772353173584">Shto email</translation>
 <translation id="5545756402275714221">Artikuj për ty</translation>
 <translation id="5552137475244467770">Chrome i kontrollon periodikisht fjalëkalimet e tua për t'i krahasuar me listat që janë publikuar në linjë. Kur vepron kështu, fjalëkalimet dhe emrat e tu të përdoruesit janë të enkriptuara, në mënyrë që të mos lexohen nga askush, duke përfshirë Google.</translation>
@@ -971,10 +1044,13 @@
 <translation id="5632627355679805402">Të dhënat e tua janë enkriptuar me <ph name="BEGIN_LINK" />fjalëkalimin tënd të Google<ph name="END_LINK" /> në <ph name="TIME" />. Fute atë për të nisur sinkronizimin.</translation>
 <translation id="5633066919399395251">Sulmuesit aktualisht në <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mund të tentojnë të instalojnë programe të rrezikshme që vjedhin ose fshijnë informacionin tënd (për shembull, fotografi, fjalëkalime, mesazhe dhe karta krediti). <ph name="BEGIN_LEARN_MORE_LINK" />Mëso më shumë<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">U bllokua një përmbajtje mashtruese.</translation>
+<translation id="5644090287519800334">Zhvendosja e imazhit në boshtin X në anën 1</translation>
+<translation id="5645854190134202180">Turni i dytë</translation>
 <translation id="5659593005791499971">Mail-i</translation>
 <translation id="5663614846592581799">9x11 (Zarf)</translation>
 <translation id="5663955426505430495">Administratori i kësaj pajisjeje ka instaluar shtesa për funksionet shtesë. Shtesat kanë qasje te disa prej të dhënave të tua.</translation>
 <translation id="5675650730144413517">Kjo faqe nuk punon</translation>
+<translation id="568292603005599551">Pozicioni i imazhit në boshtin X</translation>
 <translation id="5684874026226664614">Mos! Kjo faqe nuk mund të përkthehej.</translation>
 <translation id="5685654322157854305">Shto adresën e dërgimit</translation>
 <translation id="5689199277474810259">Eksporto në JSON</translation>
@@ -992,6 +1068,7 @@
 <translation id="5763042198335101085">Fut një adresë të vlefshme email-i</translation>
 <translation id="5763703224595565476">Administratori yt ka aktivizuar "Mbrojtjen e përdoruesit" të Chrome Enterprise në shfletuesin tënd. "Mbrojtja e përdoruesit" të Chrome Enterprise ka qasje te disa nga të dhënat e tua.</translation>
 <translation id="5765072501007116331">Për të parë mënyrat dhe kërkesat e dorëzimit, zgjidh një adresë</translation>
+<translation id="5776313857861697733">Përparësia</translation>
 <translation id="5778550464785688721">Kontroll i plotë i pajisjeve MIDI</translation>
 <translation id="5781136890105823427">Eksperimenti u aktivizua</translation>
 <translation id="578305955206182703">E verdhë portokalli</translation>
@@ -1012,6 +1089,7 @@
 <translation id="5855253129151731373">Emri i këtij domeni duket i ngjashëm me <ph name="LOOKALIKE_DOMAIN" />. Sulmuesit ndonjëherë i imitojnë sajtet duke bërë tek emri i domenit ndryshime të vogla që janë të vështira për t'u dalluar.
 
     Nëse beson se kjo është shfaqur gabimisht, vizito https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals.</translation>
+<translation id="5862579898803147654">Stivuesi 8</translation>
 <translation id="5863847714970149516">Faqja në vijim mund të përpiqet të të tarifojë në para</translation>
 <translation id="5866257070973731571">Shto numër telefoni</translation>
 <translation id="5866898949289125849">Po shikon një faqe të veglave të zhvilluesit</translation>
@@ -1024,6 +1102,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (sinkronizuar)</translation>
 <translation id="59174027418879706">Aktivizuar</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">Aktive</translation>
 <translation id="5921639886840618607">Të ruhet karta te "Llogaria e Google"?</translation>
 <translation id="5922853866070715753">Pothuajse mbaroi</translation>
 <translation id="5932224571077948991">Sajti shfaq reklama ndërhyrëse ose mashtruese</translation>
@@ -1034,11 +1113,13 @@
 <translation id="5975083100439434680">Zvogëlo</translation>
 <translation id="5979084224081478209">Kontrollo fjalëkalimet</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
+<translation id="5984570616552610254">Lagështia e dhomës</translation>
 <translation id="598637245381783098">Aplikacioni i pagesës nuk mund të hapet</translation>
 <translation id="5989320800837274978">Nuk janë specifikuar serverë përfaqësues fiksë dhe as ndonjë URL e skriptit .pac.</translation>
 <translation id="5990559369517809815">Kërkesat për serverin janë bllokuar nga një shtesë.</translation>
 <translation id="5992691462791905444">Palosje inxhinierike Z</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> rezultate për "<ph name="SEARCH_TEXT" />"</translation>
+<translation id="6008122969617370890">Renditja N deri në 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Kontrollo fjalëkalimet e tua</translation>
 <translation id="6015796118275082299">Viti</translation>
@@ -1048,15 +1129,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (sinkronizuar)</translation>
 <translation id="6027201098523975773">Fut një emër</translation>
 <translation id="603068602130820122">Dy kapje me tel djathtas</translation>
+<translation id="6032524144326295339">Kutia postare 2</translation>
 <translation id="6032955021262906325">Lidhje majtas</translation>
 <translation id="6034000775414344507">Gri e çelur</translation>
 <translation id="6034283069659657473">10x14 (Zarf)</translation>
 <translation id="6034514109191629503">Palosje fizarmonikë</translation>
 <translation id="6039846035001940113">Nëse problemi vazhdon, kontakto me zotëruesin e sajtit.</translation>
 <translation id="6040143037577758943">Mbyll</translation>
+<translation id="6041777658117377052">Temperatura e dhomës</translation>
 <translation id="6044573915096792553">Madhësia 12</translation>
+<translation id="6045164183059402045">Shablloni i vendosjes</translation>
 <translation id="6047233362582046994">Nëse i kupton rreziqet për sigurinë tënde, mund <ph name="BEGIN_LINK" />ta vizitosh këtë sajt<ph name="END_LINK" /> para se të jenë hequr aplikacionet e dëmshme.</translation>
 <translation id="6047927260846328439">Kjo përmbajtje mund të përpiqet të të mashtrojë që të instalosh softuerë ose të zbulosh informacionet e tua personale. <ph name="BEGIN_LINK" />Shfaqe gjithsesi<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">Dorëzimi i faqes</translation>
 <translation id="6051221802930200923">Nuk mund ta vizitosh <ph name="SITE" /> në këtë moment sepse sajti i uebit përdor gozhdimin e certifikatës. Gabimet dhe sulmet e rrjetit janë zakonisht të përkohshme, prandaj kjo faqe ndoshta do të funksionojë më vonë.</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">Dëshiron t'i përdorësh kartat në të gjitha pajisjet e tua?</translation>
@@ -1076,6 +1161,7 @@
 <translation id="6157877588268064908">Për të parë mënyrat dhe kërkesat e dërgimit, zgjidh një adresë</translation>
 <translation id="6165508094623778733">Mëso më shumë</translation>
 <translation id="6177128806592000436">Lidhja jote me këtë sajt nuk është e sigurt</translation>
+<translation id="6180316780098470077">Intervali i ripërpjekjes</translation>
 <translation id="6196640612572343990">Blloko kukit e palëve të treta</translation>
 <translation id="6203231073485539293">Kontrollo lidhjen e internetit.</translation>
 <translation id="6218753634732582820">Të hiqet adresa nga Chromium?</translation>
@@ -1084,6 +1170,7 @@
 <translation id="6234122620015464377">Prerje pas çdo dokumenti</translation>
 <translation id="6240447795304464094">Logo e Google Pay</translation>
 <translation id="6241121617266208201">Fshih sugjerimet</translation>
+<translation id="624499991300733384">Shërbimi i krijuesit të printimit</translation>
 <translation id="6251924700383757765">Politika e privatësisë</translation>
 <translation id="6254436959401408446">Nuk ka memorie të mjaftueshme për të hapur këtë faqe</translation>
 <translation id="625755898061068298">Ke zgjedhur që të çaktivizosh paralajmërimet e sigurisë për këtë sajt.</translation>
@@ -1170,6 +1257,7 @@
 <translation id="6604181099783169992">Sensorët e lëvizjes ose të dritës</translation>
 <translation id="6609880536175561541">Prc7 (Zarf)</translation>
 <translation id="6612358246767739896">Përmbajtje e mbrojtur</translation>
+<translation id="6615297766614333076">Stivuesi 2</translation>
 <translation id="6624427990725312378">Informacionet e kontaktit</translation>
 <translation id="6626291197371920147">Shto numër të vlefshëm karte</translation>
 <translation id="6628463337424475685">Kërkimi me <ph name="ENGINE" /></translation>
@@ -1185,6 +1273,8 @@
 <translation id="6670613747977017428">Kthehu aty ku je i sigurt.</translation>
 <translation id="6671697161687535275">Të hiqet sugjerimi i formularit nga Chromium?</translation>
 <translation id="6685834062052613830">Dil dhe përfundo konfigurimin</translation>
+<translation id="6687335167692595844">Kërkohet madhësia e fontit</translation>
+<translation id="6689249931105087298">Relative me ngjeshjen e pikës së zezë</translation>
 <translation id="6689271823431384964">Chrome po ofron që të ruash kartat e tua në "Llogarinë tënde të Google" sepse je identifikuar. Mund ta ndryshosh këtë sjellje te cilësimet. Emri i mbajtësit të kartës vjen nga llogaria jote.</translation>
 <translation id="6704582573942289642">A është ky sajti i duhur?</translation>
 <translation id="6710213216561001401">Prapa</translation>
@@ -1230,6 +1320,7 @@
 <translation id="6964255747740675745">Konfigurimi i rrjetit dështoi në analizim (JSON i pavlefshëm).</translation>
 <translation id="6965382102122355670">Në rregull</translation>
 <translation id="6965978654500191972">Pajisja</translation>
+<translation id="696703987787944103">Perceptues</translation>
 <translation id="6970216967273061347">Distrikti</translation>
 <translation id="6973656660372572881">Janë specifikuar serverë përfaqësues fiksë dhe një URL e skriptit .pac.</translation>
 <translation id="6973932557599545801">Më vjen keq që nuk mund të të ndihmoj. Vazhdo vetë.</translation>
@@ -1251,6 +1342,7 @@
 <translation id="7075452647191940183">Kërkesa është tepër e madhe</translation>
 <translation id="7079718277001814089">Ky sajt përmban softuerë keqdashës</translation>
 <translation id="7081308185095828845">Kjo veçori nuk ofrohet në pajisjen tënde</translation>
+<translation id="7083258188081898530">Tabakaja 9</translation>
 <translation id="7087282848513945231">Konteja</translation>
 <translation id="7090678807593890770">Kërko në Google për <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Fshih</translation>
@@ -1262,6 +1354,7 @@
 <translation id="7135130955892390533">Shfaq statusin</translation>
 <translation id="7138472120740807366">Mënyra e dorëzimit</translation>
 <translation id="7139724024395191329">Emirati</translation>
+<translation id="714064300541049402">Zhvendosja e imazhit në boshtin X në anën 2</translation>
 <translation id="7152423860607593928">Number-14 (Zarf)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> dhe <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> tjetër}other{<ph name="PAYMENT_METHOD_PREVIEW" /> dhe <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> të tjera}}</translation>
 <translation id="7153618581592392745">Vjollcë e çelur</translation>
@@ -1280,6 +1373,7 @@
 <translation id="721197778055552897"><ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /> rreth këtij problemi.</translation>
 <translation id="7219179957768738017">Lidhja përdor <ph name="SSL_VERSION" />.</translation>
 <translation id="7220786058474068424">Po përpunohet</translation>
+<translation id="7233592378249864828">Printo fletën e konfirmimit</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">Sajti përpara përmban softuerë keqdashës</translation>
 <translation id="724975217298816891">Shkruaj datën e skadimit dhe kodin CVC për <ph name="CREDIT_CARD" /> për të përditësuar të dhënat e kartës. Pasi të konfirmohet, të dhënat e kartës do të ndahen me këtë sajt.</translation>
@@ -1289,6 +1383,7 @@
 <translation id="725866823122871198">Nuk mund të vendoset një lidhje private me <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> sepse data dhe ora (<ph name="DATE_AND_TIME" />) e kompjuterit tënd nuk janë të sakta.</translation>
 <translation id="7260504762447901703">Revoko qasjen</translation>
 <translation id="7275334191706090484">Faqeshënuesit e menaxhuar</translation>
+<translation id="7292031607255951991">Emri i marrësit</translation>
 <translation id="7298195798382681320">I rekomanduar</translation>
 <translation id="7300012071106347854">Blu kobalti</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1366,6 +1461,7 @@
 <translation id="7569983096843329377">E zezë</translation>
 <translation id="7575207903026901870">Butoni "Hiq sugjerimin", shtyp Enter për ta hequr këtë sugjerim</translation>
 <translation id="7578104083680115302">Paguaj me shpejtësi në sajte dhe aplikacione mes pajisjeve të ndryshme duke përdorur kartat që ke ruajtur me Google.</translation>
+<translation id="7581199239021537589">Zhvendosja e imazhit në boshtin Y në anën 2</translation>
 <translation id="7592362899630581445">Certifikata e serverit shkel kufizimet për serverin.</translation>
 <translation id="7598391785903975535">Më pak se <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> nuk mund ta administrojë këtë kërkesë aktualisht.</translation>
@@ -1373,10 +1469,13 @@
 <translation id="7610193165460212391">Vlera është jashtë gamës <ph name="VALUE" />.</translation>
 <translation id="7613889955535752492">Data e skadimit: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">Ke tashmë të dhëna që janë të enkriptuara me një version të ndryshëm të fjalëkalimit tënd të Llogarisë Google. Futi ato më poshtë.</translation>
+<translation id="7619838219691048931">Fleta e fundit</translation>
+<translation id="762844065391966283">Një nga një</translation>
 <translation id="7633909222644580952">Raportet e të dhënave të cilësisë së funksionimit dhe të ndërprerjeve aksidentale</translation>
 <translation id="7637571805876720304">Të hiqet karta e kreditit nga Chromium?</translation>
 <translation id="7638605456503525968">Portat seriale</translation>
 <translation id="7639968568612851608">Gri e errët</translation>
+<translation id="7647206758853451655">Cilësia e printimit</translation>
 <translation id="7653957176542370971">Fleta e përpunuesit të pagesës është mbyllur</translation>
 <translation id="765676359832457558">Fshih cilësimet e përparuara...</translation>
 <translation id="7658239707568436148">Anulo</translation>
@@ -1385,10 +1484,13 @@
 <translation id="7667346355482952095">Shenja e kthyer e politikës është bosh ose nuk përputhet me shenjën aktuale</translation>
 <translation id="7668654391829183341">Pajisje e panjohur</translation>
 <translation id="7669271284792375604">Sulmuesit në këtë sajt mund të përpiqen të të mashtrojnë të instalosh programe që dëmtojnë përvojën tënde të shfletimit (për shembull, duke ndryshuar faqen kryesore ose duke shfaqur reklama shtesë në sajtet që viziton).</translation>
+<translation id="7673278391011283842">Kutia postare 6</translation>
 <translation id="7676643023259824263">Kërko për tekstin e kujtesës së fragmenteve, <ph name="TEXT" /></translation>
 <translation id="7681101578153515023">Ndrysho motorin e kërkimit</translation>
 <translation id="7682287625158474539">Transporti</translation>
 <translation id="7687186412095877299">Plotëson formularët e pagesës me mënyrat e ruajtura të pagesës</translation>
+<translation id="7687305263118037187">Skadimi i ripërpjekjes</translation>
+<translation id="7693583928066320343">Renditja e faqeve u mor</translation>
 <translation id="7697066736081121494">Prc8 (Zarf)</translation>
 <translation id="769721561045429135">Në këtë moment, ke karta që mund të përdoren vetëm në këtë pajisje. Kliko te "Vazhdo" për të rishikuar kartat.</translation>
 <translation id="7699293099605015246">Artikujt nuk janë të disponueshëm në këtë moment</translation>
@@ -1407,7 +1509,9 @@
 <translation id="7761701407923456692">Certifikata e serverit nuk përputhet me URL-në.</translation>
 <translation id="7763386264682878361">Analizuesi i manifestit të pagesës</translation>
 <translation id="7764225426217299476">Shto adresë</translation>
+<translation id="7766518757692125295">Bordura</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
+<translation id="7773005668374414287">E njëjta renditje e kthyer lart</translation>
 <translation id="777702478322588152">Prefektura</translation>
 <translation id="7791196057686275387">Lidhja në stivë</translation>
 <translation id="7791543448312431591">Shtoje</translation>
@@ -1425,9 +1529,11 @@
 <translation id="785549533363645510">Sidoqoftë, ti nuk je i padukshëm. Kalimi në modalitetin "e fshehtë" nuk e fsheh shfletimin tënd nga punëdhënësi yt, ofruesi i shërbimit të internetit apo sajtet e uebit që viziton.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">Dëshiron të largohesh nga sajti?</translation>
+<translation id="7865448901209910068">Shpejtësia më e mirë</translation>
 <translation id="7878562273885520351">Fjalëkalimet e tua mund të jenë kompromentuar</translation>
 <translation id="7882421473871500483">Kafe</translation>
 <translation id="7887683347370398519">Kontrollo CVC-në tënde dhe provo përsëri</translation>
+<translation id="7888575728750733395">Synimi i paraqitjes për printimin</translation>
 <translation id="7904208859782148177">C3 (Zarf)</translation>
 <translation id="7932579305932748336">Veshje</translation>
 <translation id="79338296614623784">Fut një numër të vlefshëm telefoni</translation>
@@ -1442,6 +1548,8 @@
 <translation id="7953569069500808819">Qepje anësore lart</translation>
 <translation id="7956713633345437162">Faqeshënuesit celularë</translation>
 <translation id="7961015016161918242">Asnjëherë</translation>
+<translation id="7966803981046576691">Lloji i llogarisë së punës</translation>
+<translation id="7977538094055660992">Pajisja e daljes</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">Lidhje</translation>
 <translation id="7995512525968007366">Nuk është specifikuar</translation>
@@ -1499,6 +1607,7 @@
 <translation id="8221250263817408492">Sapo fute fjalëkalimin tënd në një sajt mashtrues. Chromium rekomandon që të shkosh te <ph name="WEBSITE_1" /> dhe sajte të tjera ku e përdor këtë fjalëkalim dhe ta ndryshosh atë.</translation>
 <translation id="8225771182978767009">Personi që ka konfiguruar këtë kompjuter ka zgjedhur ta bllokojë këtë sajt.</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">Temperatura e platformës</translation>
 <translation id="8238581221633243064">Hape faqen në një skedë të re "të fshehtë"</translation>
 <translation id="8241707690549784388">Faqja që po kërkon i përdori informacionet që fute. Kthimi tek ajo faqe mund të bëjë që çdo veprim që bëre të përsëritet përsëri. Dëshiron që të vazhdosh?</translation>
 <translation id="8241712895048303527">Blloko në këtë sajt</translation>
@@ -1510,6 +1619,7 @@
 <translation id="8261506727792406068">Fshi</translation>
 <translation id="8262952874573525464">Qepje anësore poshtë</translation>
 <translation id="8267698848189296333">Po identifikohet si <ph name="USERNAME" /></translation>
+<translation id="8269242089528251720">Dokumente të ndara/kopje të renditura</translation>
 <translation id="8269981117540303696">Tani mund të shfletosh në mënyrë private dhe personat e tjerë që përdorin këtë pajisje nuk do ta shikojnë aktivitetin tënd. Sidoqoftë, shkarkimet dhe faqeshënuesit do të ruhen.</translation>
 <translation id="8277900682056760511">Fleta e përpunuesit të pagesës është hapur</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1523,6 +1633,7 @@
 <translation id="8307358339886459768">Small-Photo</translation>
 <translation id="8308427013383895095">Përkthimi dështoi për shkak të një problemi me lidhjen e rrjetit.</translation>
 <translation id="831207732689920588">Kjo faqe është e dyshimtë (raportuar nga Chrome).</translation>
+<translation id="831997045666694187">Mbrëmje</translation>
 <translation id="8332188693563227489">Qasja te <ph name="HOST_NAME" /> u refuzua</translation>
 <translation id="833262891116910667">Thekso</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1545,12 +1656,14 @@
 <translation id="8428213095426709021">Cilësimet</translation>
 <translation id="8433057134996913067">Kjo do të bëjë të dalësh nga shumica e sajteve të uebit.</translation>
 <translation id="8437238597147034694">&amp;Zhbëj zhvendosjen</translation>
+<translation id="8457125768502047971">E papërcaktuar</translation>
 <translation id="8461694314515752532">Enkripto të dhënat e sinkronizuara me frazën tënde të kalimit për sinkronizimin</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 kartë krediti}other{# karta krediti}}</translation>
 <translation id="8473863474539038330">Adresat dhe të tjera</translation>
 <translation id="8479754468255770962">Kapje me tel poshtë majtas</translation>
 <translation id="8483780878231876732">Për të përdorur kartat nga llogaria jote e Google, identifikohu në Chrome</translation>
 <translation id="8488350697529856933">Zbatohet për</translation>
+<translation id="8490137692873530638">Stivuesi 10</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> kërkoi shumë kohë për t'u përgjigjur.</translation>
 <translation id="8503559462189395349">Fjalëkalimet e Chrome</translation>
 <translation id="8503813439785031346">Emri i përdoruesit</translation>
@@ -1561,10 +1674,12 @@
 <translation id="8553075262323480129">Përkthimi dështoi pasi gjuha e faqes nuk mund të përcaktohet.</translation>
 <translation id="8557066899867184262">Kodi CVC ndodhet në pjesën e pasme të kartës.</translation>
 <translation id="8559762987265718583">Nuk mund të vendoset një lidhje private me <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />sepse data dhe ora (<ph name="DATE_AND_TIME" />) e pajisjes tënde nuk janë të sakta.</translation>
+<translation id="8564182942834072828">Dokumente të ndara/kopje të parenditura</translation>
 <translation id="8564985650692024650">Chromium rekomandon rivendosjen e fjalëkalimit tënd të <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> nëse e ke ripërdorur në sajte të tjera.</translation>
 <translation id="8571890674111243710">Po përkthen faqen në <ph name="LANGUAGE" />...</translation>
 <translation id="8574899947864779331">Përdor Touch ID për të konfirmuar kartat më shpejt</translation>
 <translation id="858637041960032120">Shto numrin e telefonit</translation>
+<translation id="8589998999637048520">Cilësia më e mirë</translation>
 <translation id="860043288473659153">Emri i mbajtësit të kartës</translation>
 <translation id="8616822740383114808">Ky cilësim zbatohet nga "<ph name="ENFORCING_SETTING" />" në "<ph name="SETTINGS_PAGE" />"</translation>
 <translation id="861775596732816396">Madhësia 4</translation>
@@ -1572,10 +1687,13 @@
 <translation id="8625384913736129811">Ruaje këtë kartë në këtë pajisje</translation>
 <translation id="8647750283161643317">Rivendosi të gjitha te parazgjedhjet</translation>
 <translation id="8663226718884576429">Përmbledhje e porosisë, <ph name="TOTAL_LABEL" />, detaje të tjera</translation>
+<translation id="867224526087042813">Nënshkrimi</translation>
+<translation id="8676424191133491403">Pa vonesë</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, përgjigjja, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054">Faqja e uebit në <ph name="PAGE" /> nuk mund të ngarkohej sepse:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">E disponueshme</translation>
+<translation id="868922510921656628">Faqe për grup</translation>
 <translation id="869891660844655955">Data e skadimit</translation>
 <translation id="8703575177326907206">Lidhja me <ph name="DOMAIN" /> nuk është e enkriptuar.</translation>
 <translation id="8718314106902482036">Pagesa nuk përfundoi</translation>
@@ -1607,8 +1725,10 @@
 <translation id="8866928039507595380">Palosje</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">Të mbyllura së fundi</translation>
+<translation id="8870494189203302833">E njëjta renditje e kthyer poshtë</translation>
 <translation id="8874824191258364635">Fut një numër të vlefshëm karte</translation>
 <translation id="8891727572606052622">Modalitet i pavlefshëm përfaqësuesi.</translation>
+<translation id="8894794286471754040">Ana e gjatë në fillim</translation>
 <translation id="8903921497873541725">Zmadho</translation>
 <translation id="890485472659500557">Engineering-C</translation>
 <translation id="890493561996401738">Butoni "Hiq sugjerimin", shtyp Enter për ta hequr, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1657,6 +1777,7 @@
 <translation id="9080712759204168376">Përmbledhja e porosisë</translation>
 <translation id="9089260154716455634">Politika për jashtë orarit:</translation>
 <translation id="9095388113577226029">Gjuhë të tjera...</translation>
+<translation id="9101630580131696064">Tabakaja 1</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> përdor zakonisht enkriptimin për mbrojtjen e informacioneve të tua. Kur Chromium u përpoq të lidhej me <ph name="SITE" /> këtë herë, sajti i uebit dërgoi prapa kredenciale të pazakonta dhe të pasakta. Kjo mund të ndodhë kur një sulmues pretendon se është <ph name="SITE" /> ose kur lidhja është ndërprerë nga një ekran i identifikimit të Wi-Fi. Informacionet e tua janë ende të sigurta sepse Chromium e ndaloi lidhjen përpara se të shkëmbeheshin të dhënat.</translation>
 <translation id="9106062320799175032">Shto adresë faturimi</translation>
 <translation id="9114524666733003316">Karta po konfirmohet…</translation>
@@ -1672,6 +1793,7 @@
 <translation id="9169664750068251925">Bllokoje gjithmonë në këtë faqe</translation>
 <translation id="9170848237812810038">&amp;Zhbëj</translation>
 <translation id="9171296965991013597">Dëshiron të dalësh nga aplikacioni?</translation>
+<translation id="9173282814238175921">Një dokument i vetëm/fletë e re</translation>
 <translation id="917450738466192189">Certifikata e serverit është e pavlefshme.</translation>
 <translation id="9174917557437862841">Butoni i ndërrimit të skedës, shtyp "Enter" për të kaluar te kjo skedë</translation>
 <translation id="9183302530794969518">Dokumentet e Google</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index d907cbf..a0a859cb 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -341,7 +341,7 @@
 <translation id="2465655957518002998">Одаберите начин доставе</translation>
 <translation id="2465688316154986572">Спајање</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />да покренете дијагностику мреже<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">Редослед од 1 до Н</translation>
+<translation id="2469153820345007638">Редослед од 1 до n</translation>
 <translation id="2473195200299095979">Преведите ову страницу</translation>
 <translation id="2479410451996844060">Неважећа URL адреса претраге.</translation>
 <translation id="2482878487686419369">Обавештења</translation>
@@ -479,7 +479,7 @@
 <translation id="3060227939791841287">C9 (коверат)</translation>
 <translation id="3061707000357573562">Услуга крпљења</translation>
 <translation id="3064966200440839136">Напустићете режим без архивирања да бисте платили у спољној апликацији. Желите ли да наставите?</translation>
-<translation id="3080254622891793721">Графика</translation>
+<translation id="3080254622891793721">Слика</translation>
 <translation id="3086579638707268289">Ваше активности на вебу се прате</translation>
 <translation id="3087734570205094154">Дно</translation>
 <translation id="3095940652251934233">Изјава</translation>
@@ -697,7 +697,7 @@
 <translation id="4082393374666368382">Подешавања – управљање</translation>
 <translation id="4088981014127559358">Померање слике 1. стране по Y оси</translation>
 <translation id="4098354747657067197">Пред вама је обмањујући сајт</translation>
-<translation id="4101413244023615925">Текст и графика</translation>
+<translation id="4101413244023615925">Текст и слика</translation>
 <translation id="4103249731201008433">Серијски број уређаја је неважећи</translation>
 <translation id="4103763322291513355">Посетите &lt;strong&gt;chrome://policy&lt;/strong&gt; да бисте видели листу URL-ова стављених на црну листу и друге смернице које је наметнуо администратор система.</translation>
 <translation id="4108231218301530806">Следећи пут верификуј ову картицу помоћу дигиталног отиска.</translation>
@@ -1135,7 +1135,7 @@
 <translation id="5990559369517809815">Додатак је блокирао захтеве упућене серверу.</translation>
 <translation id="5992691462791905444">Пресавијање у облику полу-хармонике</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> резултата за „<ph name="SEARCH_TEXT" />“</translation>
-<translation id="6008122969617370890">Редослед од Н до 1</translation>
+<translation id="6008122969617370890">Редослед од n до 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Проверите лозинке</translation>
 <translation id="6015796118275082299">Година</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index fa7b89bf..c7c51a8 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -476,7 +476,7 @@
 <translation id="3096100844101284527">เพิ่มที่อยู่สำหรับรับสินค้า</translation>
 <translation id="3105172416063519923">รหัสสินทรัพย์:</translation>
 <translation id="3109728660330352905">คุณไม่มีสิทธิ์ดูหน้านี้</translation>
-<translation id="3113284927548439113">กะสาม</translation>
+<translation id="3113284927548439113">กะที่ 3</translation>
 <translation id="3116158981186517402">แยกออกเป็นชั้นๆ</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />ลองเรียกใช้การวินิจฉัยการเชื่อมต่อ<ph name="END_LINK" /></translation>
@@ -1044,7 +1044,7 @@
 <translation id="5633066919399395251">ผู้โจมตีที่กำลังอยู่ใน <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> อาจพยายามติดตั้งโปรแกรมอันตรายซึ่งจะขโมยหรือลบข้อมูล (ตัวอย่างเช่น รูปภาพ รหัสผ่าน ข้อความ และบัตรเครดิต) ลงในคอมพิวเตอร์ของคุณ <ph name="BEGIN_LEARN_MORE_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">บล็อกเนื้อหาที่หลอกลวงแล้ว</translation>
 <translation id="5644090287519800334">เปลี่ยนตำแหน่งรูปภาพด้าน 1 ตามแกน X</translation>
-<translation id="5645854190134202180">กะสอง</translation>
+<translation id="5645854190134202180">กะที่ 2</translation>
 <translation id="5659593005791499971">อีเมล</translation>
 <translation id="5663614846592581799">9x11 (ซองจดหมาย)</translation>
 <translation id="5663955426505430495">ผู้ดูแลระบบของอุปกรณ์นี้ได้ติดตั้งส่วนขยายสำหรับฟังก์ชันเพิ่มเติม ส่วนขยายเข้าถึงข้อมูลบางส่วนของคุณได้</translation>
@@ -1533,7 +1533,7 @@
 <translation id="7878562273885520351">รหัสผ่านของคุณอาจถูกขโมยได้</translation>
 <translation id="7882421473871500483">น้ำตาล</translation>
 <translation id="7887683347370398519">ตรวจสอบ CVC และลองอีกครั้ง</translation>
-<translation id="7888575728750733395">Intent การแสดงภาพการพิมพ์</translation>
+<translation id="7888575728750733395">การปรับค่าสีการพิมพ์</translation>
 <translation id="7904208859782148177">C3 (ซองจดหมาย)</translation>
 <translation id="7932579305932748336">เคลือบ</translation>
 <translation id="79338296614623784">ป้อนหมายเลขโทรศัพท์ที่ถูกต้อง</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index eb8cc6d8..3cb0eb7 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -163,7 +163,7 @@
 <translation id="1639239467298939599">لوڈ ہو رہی ہے</translation>
 <translation id="1640180200866533862">صارف کی پالیسیاں</translation>
 <translation id="1640244768702815859"><ph name="BEGIN_LINK" />سائٹ کا ہوم پیج ملاحظہ کرنے<ph name="END_LINK" /> کی کوشش کریں۔</translation>
-<translation id="1641976391427233992">تک آؤٹ پٹ میں تاخیر</translation>
+<translation id="1641976391427233992">اس وقت تک آؤٹ پٹ میں تاخیر کریں</translation>
 <translation id="1644574205037202324">سرگزشت</translation>
 <translation id="1645368109819982629">غیر تعاون یافتہ پروٹوکول</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -195,7 +195,7 @@
 <translation id="1743520634839655729">‏اگلی بار زیادہ تیزی سے ادائیگی کرنے کیلئے، اپنے کارڈ، نام اور بلنگ پتہ کو اپنے Google اکاؤنٹ اور اس آلہ میں محفوظ کریں۔</translation>
 <translation id="1743570585616704562">تسلیم شدہ نہیں ہے</translation>
 <translation id="1745880797583122200">آپ کا براؤزر زیر انتظام ہے</translation>
-<translation id="1746113442205726301">‏امیج Y شفٹ</translation>
+<translation id="1746113442205726301">‏تصویر Y شفٹ</translation>
 <translation id="17513872634828108">کھلے ٹیبز</translation>
 <translation id="1752021286346845558">میل باکس 8</translation>
 <translation id="1753706481035618306">صفحہ نمبر</translation>
@@ -207,7 +207,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">کارڈ کے حامل کا نام</translation>
-<translation id="1807528111851433570">شیٹ شروع کریں</translation>
+<translation id="1807528111851433570">ابتدائی شیٹ</translation>
 <translation id="1821930232296380041">غلط درخواست یا درخواست کے پیرامیٹرز</translation>
 <translation id="1822540298136254167">آپ کی ملاحظہ کردہ ویب سائٹس اور ان پر گزارا گیا وقت</translation>
 <translation id="1826516787628120939">چیک کیا جا رہا ہے</translation>
@@ -342,7 +342,7 @@
 <translation id="2465655957518002998">ڈیلیوری کا طریقہ منتخب کریں</translation>
 <translation id="2465688316154986572">سٹیپل</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />نیٹ ورک کی تشخیصات چلانے کی<ph name="END_LINK" /></translation>
-<translation id="2469153820345007638">‏1 سے N آرڈر تک</translation>
+<translation id="2469153820345007638">‏1 سے N ترتیب</translation>
 <translation id="2473195200299095979">اس صفحہ کا ترجمہ کریں</translation>
 <translation id="2479410451996844060">‏غلط تلاش URL۔</translation>
 <translation id="2482878487686419369">اطلاعات</translation>
@@ -543,7 +543,7 @@
 <translation id="3399952811970034796">ڈیلیوری کا پتہ</translation>
 <translation id="3422248202833853650">میموری خالی کرنے کیلئے دیگر پروگرامز سے باہر نکلنے کی کوشش کریں۔</translation>
 <translation id="3422472998109090673"><ph name="HOST_NAME" /> فی الحال ناقابل رسائی ہے۔</translation>
-<translation id="3423742043356668186">سسٹم کا تعین کیا گیا</translation>
+<translation id="3423742043356668186">سسٹم کا متعین کردہ</translation>
 <translation id="3427092606871434483">اجازت دیں (ڈیفالٹ)</translation>
 <translation id="3427342743765426898">ترمیم کو &amp;واپس لائیں</translation>
 <translation id="342781501876943858">‏اگر آپ نے اپنا پاس ورڈ دیگر سائٹس پر دوبارہ استعمال کیا ہے تو Chromium آپ کو اپنا پاس ورڈ ری سیٹ کرنے کی تجویز کرتا ہے۔</translation>
@@ -638,7 +638,7 @@
 <translation id="3789155188480882154">سائز 16</translation>
 <translation id="3797522431967816232">Prc3 ‎(Envelope‎)‎</translation>
 <translation id="3799805948399000906">فونٹ کی درخواست کی گئی</translation>
-<translation id="3807366285948165054">‏امیج X شفٹ</translation>
+<translation id="3807366285948165054">‏تصویر X شفٹ</translation>
 <translation id="3807873520724684969">نقصان دہ مواد مسدود ہے۔</translation>
 <translation id="3808375843007691220">انتباہ: تجرباتی خصوصیات آگے ہیں!</translation>
 <translation id="3810973564298564668">نظم کریں</translation>
@@ -820,7 +820,7 @@
 <translation id="4628948037717959914">تصویر</translation>
 <translation id="4635654612248442824">اس سائٹ <ph name="ORIGIN" /> نے درخواست کی ہے کہ ایک اصل پالیسی اس کی سبھی درخواست پر لاگو ہوگی، لیکن فی الحال اس پالیسی کو لاگو نہیں کیا جا سکتا۔</translation>
 <translation id="464342062220857295">خصوصیات تلاش کریں</translation>
-<translation id="4644670975240021822">معکوس آرڈر کو نیچے رکھیں</translation>
+<translation id="4644670975240021822">اُلٹ ترتیب میں، صفحات کا رُخ نیچے کی جانب</translation>
 <translation id="4646534391647090355">اب مجھے وہاں لے چلیں</translation>
 <translation id="4658638640878098064">اوپر بائیں طرف سٹیپل</translation>
 <translation id="4668929960204016307">،</translation>
@@ -851,7 +851,7 @@
 <translation id="4780900888022378816">آپ کا آلہ <ph name="ENROLLMENT_DOMAIN" /> کے زیر انتظام ہے اور آپ کا اکاؤنٹ <ph name="ACCOUNT_DOMAIN" /> کے زیر انتظام ہے۔</translation>
 <translation id="4785689107224900852">اس ٹیب پر سوئچ کریں</translation>
 <translation id="4791134497475588553">‏Linux ایپس انسٹال کی گئیں اور کب آخری بار استعمال کی گئیں</translation>
-<translation id="4796594887379589189">‏جاب اکاؤنٹ کی ID</translation>
+<translation id="4796594887379589189">‏جاب اکاؤنٹ ID</translation>
 <translation id="4798078619018708837">‏اپنے کارڈ کی تفصیلات کو اپ ڈیٹ کرنے کے لیے <ph name="CREDIT_CARD" /> کی تاریخ اختتام اور CVC درج کریں۔ آپ کے توثیق کرنے کے بعد، آپ کے Google اکاؤنٹ سے کارڈ کی تفصیلات کا اس سائٹ کے ساتھ اشتراک کر دیا جائے گا۔</translation>
 <translation id="4800132727771399293">‏اپنی اختتامی تاریخ اور CVC چیک کریں اور دوبارہ کوشش کریں</translation>
 <translation id="480334179571489655">اصل پالیسی کی خرابی</translation>
@@ -1002,7 +1002,7 @@
 <translation id="5430298929874300616">بُک مارک کو ہٹائیں</translation>
 <translation id="5431657950005405462">آپ کی فائل نہیں ملی</translation>
 <translation id="5439770059721715174">"<ph name="ERROR_PATH" />" پر سکیما کی توثیق میں خرابی: <ph name="ERROR" /></translation>
-<translation id="5443468954631487277">معکوس آرڈر کا اوپری حصہ</translation>
+<translation id="5443468954631487277">اُلٹ ترتیب میں، صفحات کا رُخ اوپر کی جانب</translation>
 <translation id="5452270690849572955">یہ <ph name="HOST_NAME" /> صفحہ تلاش نہیں کیا جا سکتا ہے</translation>
 <translation id="5455374756549232013">غلط پالیسی ٹائم اسٹامپ</translation>
 <translation id="5457113250005438886">غلط</translation>
@@ -1126,7 +1126,7 @@
 <translation id="5990559369517809815">سرور تک درخواستوں کو ایک ایکسٹینشن نے مسدود کر دیا ہے۔</translation>
 <translation id="5992691462791905444">‏انجینیئرنگ Z-فولڈ</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' کے <ph name="RESULT_COUNT" /> نتائج</translation>
-<translation id="6008122969617370890">‏N سے 1 آرڈر تک</translation>
+<translation id="6008122969617370890">‏N سے 1 ترتیب</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">اپنے پاس ورڈز چیک کریں</translation>
 <translation id="6015796118275082299">سال</translation>
@@ -1179,7 +1179,7 @@
 <translation id="6234122620015464377">ہر دستاویز کے بعد تراشیں</translation>
 <translation id="6240447795304464094">‏Google pay کا لوگو</translation>
 <translation id="6241121617266208201">تجاویز چھپائیں</translation>
-<translation id="624499991300733384">کمپوزیٹر سروس پرنٹ کریں</translation>
+<translation id="624499991300733384">پرنٹ کمپوزیٹر سروس</translation>
 <translation id="6251924700383757765">رازداری کی پالیسی</translation>
 <translation id="6254436959401408446">اس صفحہ کو کھولنے کیلئے کافی میموری نہیں ہے</translation>
 <translation id="625755898061068298">آپ نے اس سائٹ کیلئے سیکیورٹی وارننگز کو غیر فعال کرنے کا انتخاب کیا ہے۔</translation>
@@ -1470,7 +1470,7 @@
 <translation id="7569983096843329377">سیاہ</translation>
 <translation id="7575207903026901870">‏تجویز کا بٹن ہٹائیں، اس تجویز کو ہٹانے کے لیے Enter دبائیں</translation>
 <translation id="7578104083680115302">‏Google کے ساتھ اپنے محفوظ کردہ کارڈز کا استعمال کر کے سبھی آلات پر موجود سائٹس اور ایپس پر جلدی سے ادائیگی کریں۔</translation>
-<translation id="7581199239021537589">‏سائیڈ 2 امیج Y شفٹ</translation>
+<translation id="7581199239021537589">‏سائیڈ 2 تصویر Y شفٹ</translation>
 <translation id="7592362899630581445">سرور سرٹیفیکیٹ نام کی پابندیوں کی خلاف ورزی کرتا ہے۔</translation>
 <translation id="7598391785903975535"><ph name="UPPER_ESTIMATE" /> سے کم</translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> فی الحال اس درخواست کو نمٹانے سے قاصر ہے۔</translation>
@@ -1499,7 +1499,7 @@
 <translation id="7682287625158474539">ترسیل</translation>
 <translation id="7687186412095877299">آپ کے محفوظ کردہ ادائیگی کے طریقوں سے ادائیگی کے فارمز پُر کرتا ہے</translation>
 <translation id="7687305263118037187">دوبارہ کوشش ٹائم آؤٹ</translation>
-<translation id="7693583928066320343">صفحہ آرڈر موصول ہوا</translation>
+<translation id="7693583928066320343">صفحات کی ترتیب موصول ہوئی</translation>
 <translation id="7697066736081121494">Prc8 ‎(Envelope‎)‎</translation>
 <translation id="769721561045429135">ابھی، آپ کے پاس ایسے کارڈز ہیں جنہیں صرف اس آلہ پر استعمال کیا جا سکتا ہے کارڈز کا جائزہ لینے کیلئے 'جاری رکھیں' پر کلک کریں۔</translation>
 <translation id="7699293099605015246">مضامین ابھی دستیاب نہیں ہیں</translation>
@@ -1520,7 +1520,7 @@
 <translation id="7764225426217299476">پتہ شامل کریں</translation>
 <translation id="7766518757692125295">اسکرٹ</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
-<translation id="7773005668374414287">ہو بہو آرڈر کا اوپری حصہ</translation>
+<translation id="7773005668374414287">اسی ترتیب میں، صفحات کا رُخ اوپر کی جانب</translation>
 <translation id="777702478322588152">انتظامی حلقہ</translation>
 <translation id="7791196057686275387">گانٹھ باندھیں</translation>
 <translation id="7791543448312431591">شامل کریں</translation>
@@ -1542,7 +1542,7 @@
 <translation id="7878562273885520351">لگتا ہے کسی نے آپ کے پاسورڈ کے ساتھ چھیڑ چھاڑ کی ہے</translation>
 <translation id="7882421473871500483">بھورا</translation>
 <translation id="7887683347370398519">‏اپنا CVC چیک کریں اور دوبارہ کوشش کریں</translation>
-<translation id="7888575728750733395">رینڈرنگ انٹینٹ پرنٹ کریں</translation>
+<translation id="7888575728750733395">پرنٹ رینڈرنگ انٹینٹ</translation>
 <translation id="7904208859782148177">C3 ‎(Envelope‎)‎</translation>
 <translation id="7932579305932748336">کوٹ</translation>
 <translation id="79338296614623784">ایک درست فون نمبر درج کریں</translation>
@@ -1734,7 +1734,7 @@
 <translation id="8866928039507595380">فولڈ</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">حال ہی میں بند کردہ</translation>
-<translation id="8870494189203302833">ہو بہو آرڈر کا نچلا حصہ</translation>
+<translation id="8870494189203302833">اسی ترتیب میں، صفحات کا رُخ نیچے کی جانب</translation>
 <translation id="8874824191258364635">ایک درست کارڈ نمبر درج کریں</translation>
 <translation id="8891727572606052622">پراکسی کی غلط وضع۔</translation>
 <translation id="8894794286471754040">طویل کنارہ پہلے</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index 8a5146559..b3ef9ed 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -692,7 +692,7 @@
 <translation id="4082393374666368382">Sozlamalar – Boshqaruv</translation>
 <translation id="4088981014127559358">Tasvirning old tomondagi Y oʻqidagi siljish</translation>
 <translation id="4098354747657067197">Ehtiyot bo‘ling, qalbaki sayt!</translation>
-<translation id="4101413244023615925">Matn va tasvirlar</translation>
+<translation id="4101413244023615925">Matn va grafika</translation>
 <translation id="4103249731201008433">Qurilma seriya raqami noto‘g‘ri</translation>
 <translation id="4103763322291513355">Administrator tomonidan qora ro‘yxatga qo‘shilgan URL manzillar va boshqa parametrlarni ko‘rish uchun quyidagi sahifaga o‘ting: &lt;strong&gt;chrome://policy&lt;/strong&gt;</translation>
 <translation id="4108231218301530806">Keyingi safar bu karta barmoq izi bilan tasdiqlansin.</translation>
@@ -1481,7 +1481,7 @@
 <translation id="7613889955535752492">Muddati: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">Sizda allaqachon boshqa Google hisobi paroli orqali shifrlangan ma’lumotlar mavjud. O‘sha parolni quyida kiriting.</translation>
 <translation id="7619838219691048931">Oxirgi varaq</translation>
-<translation id="762844065391966283">Bir obektdan</translation>
+<translation id="762844065391966283">Bir obyektdan</translation>
 <translation id="7633909222644580952">Foydalanish statistikasi va ishdan chiqishlar hisoboti</translation>
 <translation id="7637571805876720304">Bu kredit karta Chromium’dan o‘chirib tashlansinmi?</translation>
 <translation id="7638605456503525968">Ketma-ket portlar</translation>
@@ -1704,7 +1704,7 @@
 <translation id="8681531050781943054"><ph name="PAGE" /> veb-sahifasi quyidagi sabablarga ko‘ra yuklanmadi:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">Bo‘sh</translation>
-<translation id="868922510921656628">Toʻplamdagi sahifalar soni</translation>
+<translation id="868922510921656628">Majmuadagi sahifalar soni</translation>
 <translation id="869891660844655955">Tugash muddati</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" /> domeniga ulanish shifrlanmagan.</translation>
 <translation id="8718314106902482036">To‘lov amalga oshirilmagan</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index d10a0f9..a09987b5 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -4,11 +4,13 @@
 <translation id="1008557486741366299">Không phải Bây giờ</translation>
 <translation id="1010200102790553230">Tải trang vào lúc khác</translation>
 <translation id="1015730422737071372">Cung cấp chi tiết bổ sung</translation>
+<translation id="1019413721762100891">Đang tắt</translation>
 <translation id="1021110881106174305">Thẻ được chấp nhận</translation>
 <translation id="1021753677514347426">Sự cố này xảy ra do một chứng chỉ mà bạn hoặc ai đó đã cài đặt trên thiết bị của bạn. Chromium không tin cậy chứng chỉ này vì chứng chỉ được xác định là dùng để chặn và giám sát mạng. Mặc dù có một số trường hợp trong đó hoạt động giám sát là hợp pháp, chẳng hạn như mạng của trường học hay công ty, nhưng Chromium muốn đảm bảo rằng bạn biết điều này, ngay cả khi bạn không thể ngăn chặn. Hoạt động giám sát có thể diễn ra trong bất kỳ trình duyệt hoặc ứng dụng nào có quyền truy cập vào web.</translation>
 <translation id="1032854598605920125">Xoay theo chiều kim đồng hồ</translation>
 <translation id="1036348656032585052">Tắt</translation>
 <translation id="1038842779957582377">tên không biết</translation>
+<translation id="1041998700806130099">Thông báo tờ công việc</translation>
 <translation id="1050038467049342496">Đóng các ứng dụng khác</translation>
 <translation id="1055184225775184556">&amp;Hoàn tác thêm</translation>
 <translation id="1056898198331236512">Cảnh báo</translation>
@@ -16,6 +18,7 @@
 <translation id="10614374240317010">Không bao giờ lưu</translation>
 <translation id="1062160989074299343">Prc10 (Phong bì)</translation>
 <translation id="106701514854093668">Dấu trang máy tính</translation>
+<translation id="1070901266639972381">Đêm</translation>
 <translation id="1074497978438210769">Không bảo mật</translation>
 <translation id="1080116354587839789">Vừa với chiều rộng</translation>
 <translation id="1086953900555227778">Index-5x8</translation>
@@ -23,6 +26,7 @@
 <translation id="1089439967362294234">Thay đổi mật khẩu</translation>
 <translation id="1096545575934602868">Trường này không được chứa nhiều hơn <ph name="MAX_ITEMS_LIMIT" /> mục. Mọi mục thừa sẽ bị hủy.</translation>
 <translation id="109743633954054152">Quản lý mật khẩu trong mục cài đặt của Chrome</translation>
+<translation id="1101672080107056897">Thao tác bị lỗi</translation>
 <translation id="1103523840287552314">Luôn dịch <ph name="LANGUAGE" /></translation>
 <translation id="1107591249535594099">Nếu được chọn, Chrome sẽ lưu trữ bản sao thẻ của bạn trên thiết bị này để điền biểu mẫu nhanh hơn.</translation>
 <translation id="1110994991967754504">Chọn quyền cho <ph name="PERMISSION_NAME" /></translation>
@@ -67,6 +71,7 @@
 <translation id="1263231323834454256">Danh sách đọc</translation>
 <translation id="1264126396475825575">Báo cáo sự cố được ghi lại vào <ph name="CRASH_TIME" /> (nhưng chưa tải lên hoặc đã bị bỏ qua)</translation>
 <translation id="1270502636509132238">Phương thức nhận hàng</translation>
+<translation id="1281476433249504884">Khay xếp chồng 1</translation>
 <translation id="1285320974508926690">Không bao giờ dịch trang web này</translation>
 <translation id="1285400217480592994">Quét nội dung của các tệp mà bạn tải lên hoặc tải xuống trên Chrome.</translation>
 <translation id="1292701964462482250">"Phần mềm trên máy tính của bạn đang ngăn không cho Chrome kết nối an toàn với web" (chỉ trên máy tính Windows)</translation>
@@ -108,6 +113,7 @@
 <translation id="1408787208417187241">Dập 3 ghim trên cùng</translation>
 <translation id="1413809658975081374">Lỗi bảo mật</translation>
 <translation id="1426410128494586442">Có</translation>
+<translation id="1428146450423315676">Khay xếp chồng 7</translation>
 <translation id="1430915738399379752">In</translation>
 <translation id="1442386063175183758">Gấp dạng cửa bên phải</translation>
 <translation id="1442987760062738829">Đục lỗ</translation>
@@ -130,6 +136,7 @@
 <translation id="1521655867290435174">Google Trang tính</translation>
 <translation id="1527263332363067270">Đang chờ kết nối…</translation>
 <translation id="1529521330346880926">10x15 (Phong bì)</translation>
+<translation id="1529789484829130889">Khay 8</translation>
 <translation id="1530707389502320859">Có vẻ như trang web bạn vừa cố truy cập là giả mạo. Kẻ tấn công đôi khi bắt chước các trang web bằng cách thực hiện các thay đổi nhỏ, khó phát hiện đối với URL.</translation>
 <translation id="1531205177818805254">Exec</translation>
 <translation id="1532118530259321453">Trang này cho biết</translation>
@@ -156,6 +163,7 @@
 <translation id="1639239467298939599">Đang tải</translation>
 <translation id="1640180200866533862">Chính sách người dùng</translation>
 <translation id="1640244768702815859">Hãy thử <ph name="BEGIN_LINK" />truy cập trang chủ của trang web<ph name="END_LINK" />.</translation>
+<translation id="1641976391427233992">Trì hoãn giấy ra cho đến</translation>
 <translation id="1644574205037202324">Lịch sử</translation>
 <translation id="1645368109819982629">Giao thức không được hỗ trợ</translation>
 <translation id="1652415888492971589">JIS B8</translation>
@@ -164,12 +172,15 @@
 <translation id="1663943134801823270">Thẻ và địa chỉ từ Chrome. Bạn có thể quản lý thẻ và địa chỉ trong <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" />.</translation>
 <translation id="1671391448414634642">Kể từ bây giờ trở đi, các trang viết bằng <ph name="SOURCE_LANGUAGE" /> sẽ được dịch sang <ph name="TARGET_LANGUAGE" />.</translation>
 <translation id="1676269943528358898"><ph name="SITE" /> thường sử dụng mã hóa để bảo vệ thông tin của bạn. Khi Google Chrome tìm cách kết nối với <ph name="SITE" /> tại thời điểm này, trang web đã gửi lại thông tin đăng nhập không chính xác và bất thường. Điều này có thể xảy ra khi kẻ tấn công đang cố gắng giả mạo là <ph name="SITE" /> hoặc màn hình đăng nhập Wi-Fi đã làm gián đoạn kết nối. Thông tin của bạn vẫn an toàn do Google Chrome đã ngừng kết nối trước khi bất kỳ dữ liệu nào được trao đổi.</translation>
+<translation id="1682696192498422849">Cạnh ngắn trước</translation>
 <translation id="168841957122794586">Chứng chỉ máy chủ chứa khóa mật mã yếu.</translation>
 <translation id="1697532407822776718">Bạn đã hoàn tất!</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này được đề từ ngày mai. Điều này có thể do cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.}other{Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này được đề # ngày trong tương lai. Điều này có thể do cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1713628304598226412">Khay 2</translation>
 <translation id="1715874602234207">F</translation>
+<translation id="1717494416764505390">Hộp thư 3</translation>
 <translation id="1718029547804390981">Tài liệu quá lớn nên không thể chú thích được</translation>
 <translation id="1721424275792716183">Trường * là bắt buộc</translation>
 <translation id="1727741090716970331">Thêm số thẻ hợp lệ</translation>
@@ -183,7 +194,9 @@
 <translation id="1743520634839655729">Để thanh toán nhanh hơn vào lần tới, hãy lưu địa chỉ thanh toán, tên và thẻ vào thiết bị này và Tài khoản Google của bạn.</translation>
 <translation id="1743570585616704562">Không nhận dạng được</translation>
 <translation id="1745880797583122200">Trình duyệt của bạn được quản lý</translation>
+<translation id="1746113442205726301">Trục Y của hình ảnh</translation>
 <translation id="17513872634828108">Tab đang mở</translation>
+<translation id="1752021286346845558">Hộp thư 8</translation>
 <translation id="1753706481035618306">Số trang</translation>
 <translation id="1763864636252898013">Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này không được hệ điều hành thiết bị của bạn tin cậy. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.</translation>
 <translation id="1768211456781949159"><ph name="BEGIN_LINK" />Thử chạy Chẩn đoán mạng của Windows<ph name="END_LINK" />.</translation>
@@ -193,6 +206,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1800473098294731951">B9</translation>
 <translation id="1803264062614276815">Tên chủ thẻ</translation>
+<translation id="1807528111851433570">Tờ đầu</translation>
 <translation id="1821930232296380041">Yêu cầu hoặc tham số yêu cầu không hợp lệ</translation>
 <translation id="1822540298136254167">Các trang web bạn đã truy cập và thời lượng truy cập các trang web đó</translation>
 <translation id="1826516787628120939">Đang kiểm tra</translation>
@@ -221,6 +235,7 @@
 <translation id="1973335181906896915">Lỗi nối tiếp hóa</translation>
 <translation id="1974060860693918893">Nâng cao</translation>
 <translation id="1974883374937189061">Giúp tăng cường khả năng bảo mật của Chrome bằng cách gửi <ph name="BEGIN_WHITEPAPER_LINK" />URL của một số trang mà bạn truy cập, thông tin hệ thống giới hạn và một số nội dung trang<ph name="END_WHITEPAPER_LINK" /> cho Google. <ph name="PRIVACY_PAGE_LINK" /></translation>
+<translation id="1975584088563498795">Hộp thư 10</translation>
 <translation id="1978555033938440688">Phiên bản chương trình cơ sở</translation>
 <translation id="1981206234434200693">Xóa dữ liệu lịch sử duyệt web của Chrome</translation>
 <translation id="1992331125980284532">JIS B3</translation>
@@ -230,6 +245,7 @@
 <translation id="2025186561304664664">Proxy được đặt thành định cấu hình tự động.</translation>
 <translation id="2030481566774242610">Ý của bạn là <ph name="LINK" />?</translation>
 <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kiểm tra proxy và tường lửa<ph name="END_LINK" /></translation>
+<translation id="2042213636306070719">Khay 7</translation>
 <translation id="2053111141626950936">Các trang viết bằng <ph name="LANGUAGE" /> sẽ không được dịch.</translation>
 <translation id="2053553514270667976">Mã zip</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 đề xuất}other{# đề xuất}}</translation>
@@ -242,6 +258,7 @@
 <translation id="2096368010154057602">Khu vực hành chính</translation>
 <translation id="2099652385553570808">Dập 3 ghim bên trái</translation>
 <translation id="2102134110707549001">Đề xuất mật khẩu mạnh…</translation>
+<translation id="2107021941795971877">Hỗ trợ in</translation>
 <translation id="2108755909498034140">Khởi động lại máy tính của bạn</translation>
 <translation id="2111256659903765347">Super-A</translation>
 <translation id="2113977810652731515">Thẻ</translation>
@@ -266,6 +283,7 @@
 <translation id="2187317261103489799">Phát hiện (mặc định)</translation>
 <translation id="2188375229972301266">Đục nhiều lỗ dưới cùng</translation>
 <translation id="2202020181578195191">Nhập năm hết hạn hợp lệ</translation>
+<translation id="22081806969704220">Khay 3</translation>
 <translation id="2212735316055980242">Không tìm thấy chính sách</translation>
 <translation id="2213606439339815911">Đang tìm nạp các mục nhập...</translation>
 <translation id="2215727959747642672">Chỉnh sửa tệp</translation>
@@ -283,6 +301,7 @@
 <translation id="2263079731045660823">Cập nhật thông tin tự động điền thẻ tín dụng trong mục cài đặt của Chrome</translation>
 <translation id="2267047181501709434">Đang xác minh danh tính của bạn...</translation>
 <translation id="2270484714375784793">Số điện thoại</translation>
+<translation id="2276057643614339130">Cơ sở in</translation>
 <translation id="2277103315734023688">Tua tiến</translation>
 <translation id="2283340219607151381">Lưu và điền địa chỉ</translation>
 <translation id="2288422996159078444">Mọi thông tin bạn nhập, mọi trang bạn xem hoặc mọi hoạt động khác trên web đều sẽ bị theo dõi. Nội dung trên các trang web có thể bị thay đổi mà bạn không hề hay biết.</translation>
@@ -322,6 +341,7 @@
 <translation id="2465655957518002998">Chọn cách giao hàng</translation>
 <translation id="2465688316154986572">Dập ghim</translation>
 <translation id="2467694685043708798"><ph name="BEGIN_LINK" />Chạy Chẩn đoán mạng<ph name="END_LINK" /></translation>
+<translation id="2469153820345007638">Thứ tự từ 1 đến N</translation>
 <translation id="2473195200299095979">Dịch trang này</translation>
 <translation id="2479410451996844060">URL tìm kiếm hợp lệ.</translation>
 <translation id="2482878487686419369">Thông báo</translation>
@@ -340,6 +360,7 @@
 <translation id="2535659140340599600">{COUNT,plural, =1{và 1 miền khác}other{và # miền khác}}</translation>
 <translation id="2536110899380797252">Thêm địa chỉ</translation>
 <translation id="2539524384386349900">Phát hiện</translation>
+<translation id="2544644783021658368">Một tài liệu</translation>
 <translation id="254947805923345898">Giá trị của chính sách là không hợp lệ.</translation>
 <translation id="255002559098805027"><ph name="HOST_NAME" /> đã gửi phản hồi không hợp lệ.</translation>
 <translation id="2556876185419854533">&amp;Hoàn tác chỉnh sửa</translation>
@@ -374,8 +395,10 @@
 <translation id="2676271551327853224">Roc-8K</translation>
 <translation id="2677748264148917807">Rời khỏi</translation>
 <translation id="2684561033061424857">11x12</translation>
+<translation id="2687555958734450033">Phù hợp nhất</translation>
 <translation id="2691924980723297736">Cảnh báo an toàn</translation>
 <translation id="2699302886720511147">Thẻ được chấp nhận</translation>
+<translation id="2701514975700770343">Hướng xuống</translation>
 <translation id="2702801445560668637">Danh sách đọc</translation>
 <translation id="2704283930420550640">Giá trị không khớp với định dạng.</translation>
 <translation id="2705137772291741111">Không thể đọc được bản sao đã lưu (đã lưu vào bộ nhớ đệm) của trang web này.</translation>
@@ -395,12 +418,15 @@
 <translation id="2742870351467570537">Xóa các mục đã chọn</translation>
 <translation id="277133753123645258">Phương thức giao hàng</translation>
 <translation id="277499241957683684">Thiếu hồ sơ thiết bị</translation>
+<translation id="2775884851269838147">Trang in đầu tiên</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2784949926578158345">Kết nối đã được đặt lại.</translation>
 <translation id="2792012897584536778">Các quản trị viên của thiết bị này đã thiết lập các chứng chỉ bảo mật có thể cho phép họ xem nội dung của những trang web bạn truy cập.</translation>
 <translation id="2799020568854403057">Trang web bạn sắp truy cập chứa ứng dụng có hại</translation>
 <translation id="2799223571221894425">Chạy lại</translation>
 <translation id="2803306138276472711">Duyệt web an toàn của Google gần đây <ph name="BEGIN_LINK" />đã phát hiện phần mềm độc hại<ph name="END_LINK" /> trên <ph name="SITE" />. Các trang web thường được coi là an toàn đôi khi vẫn bị nhiễm phần mềm độc hại.</translation>
+<translation id="2807052079800581569">Vị trí Y của hình ảnh</translation>
+<translation id="2809804249696361569">Cả hai tờ</translation>
 <translation id="2824775600643448204">Thanh địa chỉ và tìm kiếm</translation>
 <translation id="2826760142808435982">Kết nối được mã hóa và xác thực bằng <ph name="CIPHER" /> đồng thời sử dụng <ph name="KX" /> làm cơ chế trao đổi chính.</translation>
 <translation id="2835170189407361413">Xóa biểu mẫu</translation>
@@ -415,6 +441,7 @@
 <translation id="290376772003165898">Trang này không được viết bằng <ph name="LANGUAGE" />?</translation>
 <translation id="2909946352844186028">Đã phát hiện thấy thay đổi mạng.</translation>
 <translation id="2910133103376701357">Thiết bị và tài khoản của bạn do <ph name="ENROLLMENT_DOMAIN" /> quản lý.</translation>
+<translation id="2911973620368911614">Mã người dùng tài khoản công việc</translation>
 <translation id="2916038427272391327">Đóng các chương trình khác</translation>
 <translation id="2922350208395188000">Không thể kiểm tra chứng chỉ của máy chủ.</translation>
 <translation id="2925673989565098301">Phương thức giao hàng</translation>
@@ -424,6 +451,7 @@
 <translation id="2934466151127459956">Government-Letter</translation>
 <translation id="2941952326391522266">Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này là từ <ph name="DOMAIN2" />. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.</translation>
 <translation id="2948083400971632585">Bạn có thể tắt mọi proxy được định cấu hình cho kết nối từ trang cài đặt.</translation>
+<translation id="2951588413176968965">Hộp thư của tôi</translation>
 <translation id="295526156371527179">Cảnh báo: Chính sách này không phải là từ điển nên không được hợp nhất dưới dạng từ điển như chỉ định trong chính sách.</translation>
 <translation id="2955913368246107853">Đóng thanh tìm</translation>
 <translation id="2969319727213777354">Để thiết lập kết nối an toàn, bạn cần đặt thời gian đúng cho đồng hồ. Nguyên nhân là do chứng chỉ mà các trang web dùng để tự nhận dạng chỉ có hiệu lực trong khoảng thời gian cụ thể. Vì đồng hồ trên thiết bị của bạn không đúng nên Chrome không thể xác minh các chứng chỉ này.</translation>
@@ -438,6 +466,7 @@
 <translation id="2991174974383378012">Chia sẻ với trang web</translation>
 <translation id="2991571918955627853">Bạn không thể truy cập vào <ph name="SITE" /> ngay bây giờ vì trang web sử dụng HSTS. Lỗi mạng và các cuộc tấn công mạng thường chỉ là tạm thời nên trang này có thể sẽ hoạt động lại sau.</translation>
 <translation id="2996674880327704673">Bài viết do Google đề xuất</translation>
+<translation id="3002501248619246229">Kiểm tra phương tiện khay nạp giấy</translation>
 <translation id="3005723025932146533">Hiển thị bản sao đã lưu</translation>
 <translation id="3008447029300691911">Nhập CVC cho <ph name="CREDIT_CARD" />. Sau khi bạn xác nhận, chi tiết thẻ của bạn sẽ được chia sẻ với trang web này.</translation>
 <translation id="3010559122411665027">Mục nhập danh sách "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -450,12 +479,14 @@
 <translation id="3060227939791841287">C9 (Phong bì)</translation>
 <translation id="3061707000357573562">Dịch vụ vá lỗi</translation>
 <translation id="3064966200440839136">Rời khỏi chế độ ẩn danh để thanh toán qua một ứng dụng bên ngoài. Tiếp tục?</translation>
+<translation id="3080254622891793721">Đồ họa</translation>
 <translation id="3086579638707268289">Hoạt động của bạn trên web đang bị giám sát</translation>
 <translation id="3087734570205094154">Bên dưới</translation>
 <translation id="3095940652251934233">Tuyên bố</translation>
 <translation id="3096100844101284527">Thêm địa chỉ nhận hàng</translation>
 <translation id="3105172416063519923">ID phần tử:</translation>
 <translation id="3109728660330352905">Bạn không có quyền xem trang này.</translation>
+<translation id="3113284927548439113">Ca thứ 3</translation>
 <translation id="3116158981186517402">Dát mỏng</translation>
 <translation id="3120730422813725195">Elo</translation>
 <translation id="31207688938192855"><ph name="BEGIN_LINK" />Thử chạy Chẩn đoán kết nối<ph name="END_LINK" />.</translation>
@@ -480,6 +511,7 @@
 <translation id="3209034400446768650">Trang này có thể tính phí</translation>
 <translation id="3212581601480735796">Hoạt động của bạn trên <ph name="HOSTNAME" /> sẽ bị giám sát</translation>
 <translation id="3215092763954878852">Không thể dùng WebAuthn</translation>
+<translation id="3218181027817787318">Tương đối</translation>
 <translation id="3225919329040284222">Máy chủ đưa ra chứng chỉ không khớp với kỳ vọng được tích hợp sẵn. Các kỳ vọng này có trong một số trang web nhất định, có tính bảo mật cao với mục đích bảo vệ bạn.</translation>
 <translation id="3226128629678568754">Nhấn nút tải lại để gửi lại các dữ liệu cần thiết để tải trang.</translation>
 <translation id="3227137524299004712">Micrô</translation>
@@ -514,6 +546,7 @@
 <translation id="3399952811970034796">Địa chỉ giao hàng</translation>
 <translation id="3422248202833853650">Thử thoát các chương trình khác để giải phóng bộ nhớ.</translation>
 <translation id="3422472998109090673">Hiện không thể truy cập <ph name="HOST_NAME" />.</translation>
+<translation id="3423742043356668186">Do hệ thống chỉ định</translation>
 <translation id="3427092606871434483">Cho phép (mặc định)</translation>
 <translation id="3427342743765426898">&amp;Làm lại chỉnh sửa</translation>
 <translation id="342781501876943858">Chromium khuyên bạn nên đặt lại mật khẩu của mình nếu đã sử dụng lại mật khẩu này trên các trang web khác.</translation>
@@ -523,6 +556,7 @@
 <translation id="3447661539832366887">Chủ sở hữu của thiết bị này đã tắt trò chơi khủng long.</translation>
 <translation id="3447884698081792621">Hiển thị chứng chỉ (do <ph name="ISSUER" /> cấp)</translation>
 <translation id="3452404311384756672">Khoảng thời gian tìm nạp:</translation>
+<translation id="3453962258458347894">Số lần thử lại</translation>
 <translation id="3456231139987291353">Number-11 (Phong bì)</translation>
 <translation id="3461824795358126837">Bút đánh dấu</translation>
 <translation id="3462200631372590220">Ẩn chi tiết</translation>
@@ -530,15 +564,20 @@
 <translation id="3468054117417088249"><ph name="TAB_SWITCH_SUFFIX" /> hiện đang mở, nhấn phím Tab rồi nhấn phím Enter để chuyển sang tab đang mở</translation>
 <translation id="3479552764303398839">Không phải bây giờ</translation>
 <translation id="3484560055331845446">Bạn có thể mất quyền truy cập vào Tài khoản Google của mình. Chrome khuyên bạn nên đổi mật khẩu ngay bây giờ. Bạn sẽ được yêu cầu đăng nhập.</translation>
+<translation id="3487845404393360112">Khay 4</translation>
 <translation id="3495081129428749620">Tìm trong trang
     <ph name="PAGE_TITLE" /></translation>
 <translation id="3512163584740124171">Chính sách này bị bỏ qua vì một chính sách khác thuộc cùng nhóm chính sách có mức ưu tiên cao hơn.</translation>
 <translation id="3513704683820682405">Thực tế tăng cường</translation>
+<translation id="3518941727116570328">Xử lý nhiều đối tượng</translation>
 <translation id="3528171143076753409">Chứng chỉ của máy chủ không đáng tin cậy.</translation>
 <translation id="3528485271872257980">Nâu đậm</translation>
 <translation id="3530944546672790857">{COUNT,plural, =0{Ít nhất 1 mục trên các thiết bị đã đồng bộ hóa}=1{1 mục (và nhiều mục khác trên các thiết bị đã đồng bộ hóa)}other{# mục (và nhiều mục khác trên các thiết bị đã đồng bộ hóa)}}</translation>
+<translation id="3531780078352352885">Tờ công việc</translation>
+<translation id="3533328374079021623">Hộp thư 5</translation>
 <translation id="3539171420378717834">Giữ bản sao thẻ này trên thiết bị này</translation>
 <translation id="3553513561058684206">Dành cho bạn</translation>
+<translation id="3558573058928565255">Giờ ban ngày</translation>
 <translation id="3566021033012934673">Kết nối của bạn không phải là kết nối riêng tư</translation>
 <translation id="3574305903863751447"><ph name="CITY" />, <ph name="STATE" /> <ph name="COUNTRY" /></translation>
 <translation id="3576616784287504635">Một trang được nhúng tại <ph name="SITE" /> cho biết</translation>
@@ -547,8 +586,10 @@
 <translation id="3583757800736429874">&amp;Làm lại di chuyển</translation>
 <translation id="3584299510153766161">Đục 2 lỗ dưới cùng</translation>
 <translation id="3586931643579894722">Ẩn chi tiết</translation>
+<translation id="3587738293690942763">Ở giữa</translation>
 <translation id="3592413004129370115">Italian (Phong bì)</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
+<translation id="3608932978122581043">Hướng nạp giấy</translation>
 <translation id="3614103345592970299">Kích thước 2</translation>
 <translation id="361438452008624280">Mục nhập danh sách "<ph name="LANGUAGE_ID" />": Ngôn ngữ không xác định hoặc không được hỗ trợ.</translation>
 <translation id="3615877443314183785">Nhập ngày hết hạn hợp lệ</translation>
@@ -557,6 +598,7 @@
 <translation id="3630155396527302611">Nếu chương trình đã được liệt kê là chương trình được phép truy cập mạng, hãy thử
       xóa chương trình này khỏi danh sách rồi thêm lại.</translation>
 <translation id="3631244953324577188">Sinh trắc học</translation>
+<translation id="3634530185120165534">Khay 5</translation>
 <translation id="3640766068866876100">Index-4x6-Ext</translation>
 <translation id="3650584904733503804">Xác thực thành công</translation>
 <translation id="3655670868607891010">Nếu bạn thường xuyên thấy thông báo này, hãy thử các <ph name="HELP_LINK" /> sau.</translation>
@@ -595,16 +637,21 @@
 <translation id="3760561303380396507">Sử dụng Windows Hello thay cho CVC?</translation>
 <translation id="3761718714832595332">Ẩn trạng thái</translation>
 <translation id="3765032636089507299">Trang Duyệt web an toàn đang được xây dựng.</translation>
+<translation id="3765588406864124894">Hộp thư 9</translation>
 <translation id="3778403066972421603">Bạn có muốn lưu thẻ này vào Tài khoản Google của bạn và trên thiết bị này không?</translation>
+<translation id="3780694243617746492">Khay giấy ra</translation>
 <translation id="3781428340399460090">Hồng đậm</translation>
 <translation id="3783418713923659662">Mastercard</translation>
 <translation id="3787705759683870569">Ngày hết hạn <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="3789155188480882154">Kích thước 16</translation>
 <translation id="3797522431967816232">Prc3 (Phong bì)</translation>
+<translation id="3799805948399000906">Phông chữ đã yêu cầu</translation>
+<translation id="3807366285948165054">Trục X của hình ảnh</translation>
 <translation id="3807873520724684969">Đã chặn nội dung độc hại.</translation>
 <translation id="3808375843007691220">Cảnh báo: Sắp có các tính năng thử nghiệm!</translation>
 <translation id="3810973564298564668">Quản lý</translation>
 <translation id="382518646247711829">Nếu bạn sử dụng máy chủ proxy...</translation>
+<translation id="3827112369919217609">Tuyệt đối</translation>
 <translation id="3828924085048779000">Không cho phép cụm mật khẩu trống.</translation>
 <translation id="3831915413245941253"><ph name="ENROLLMENT_DOMAIN" /> đã cài đặt các tiện ích để bổ sung thêm chức năng. Các tiện ích có quyền truy cập vào một số dữ liệu của bạn.</translation>
 <translation id="3832522519263485449">Đục nhiều lỗ bên trái</translation>
@@ -613,6 +660,7 @@
 <translation id="3884278016824448484">Số nhận dạng thiết bị xung đột</translation>
 <translation id="3885155851504623709">Giáo xứ</translation>
 <translation id="388632593194507180">Hoạt động giám sát đã phát hiện</translation>
+<translation id="3886948180919384617">Khay xếp chồng 3</translation>
 <translation id="3890664840433101773">Thêm email</translation>
 <translation id="3897092660631435901">Menu</translation>
 <translation id="3901925938762663762">Thẻ đã hết hạn</translation>
@@ -647,7 +695,9 @@
 <translation id="4075941231477579656">Touch ID</translation>
 <translation id="4079302484614802869">Cấu hình proxy được đặt để sử dụng URL tập lệnh .pac chứ không phải máy chủ proxy cố định.</translation>
 <translation id="4082393374666368382">Cài đặt – Quản lý</translation>
+<translation id="4088981014127559358">Trục Y của hình ảnh mặt 1</translation>
 <translation id="4098354747657067197">Bạn sắp truy cập trang web lừa đảo</translation>
+<translation id="4101413244023615925">Văn bản và đồ họa</translation>
 <translation id="4103249731201008433">Số sê-ri thiết bị không hợp lệ</translation>
 <translation id="4103763322291513355">Truy cập &lt;strong&gt;chrome://policy&lt;/strong&gt; để xem danh sách các URL bị chặn quyền truy cập và các chính sách khác bị quản trị viên hệ thống buộc phải thực thi.</translation>
 <translation id="4108231218301530806">Dùng vân tay để xác minh thẻ này vào lần tới.</translation>
@@ -660,6 +710,7 @@
 <translation id="4129401438321186435">{COUNT,plural, =1{1 mục khác}other{# mục khác}}</translation>
 <translation id="4130226655945681476">Kiểm tra cáp mạng, modem và bộ định tuyến</translation>
 <translation id="413544239732274901">Tìm hiểu thêm</translation>
+<translation id="4142935452406587478">Khay 10</translation>
 <translation id="4148925816941278100">American Express</translation>
 <translation id="4151403195736952345">Sử dụng cài đặt mặc định chung (Phát hiện)</translation>
 <translation id="4159784952369912983">Tím</translation>
@@ -702,6 +753,7 @@
 <translation id="4258748452823770588">Chữ ký không hợp lệ</translation>
 <translation id="4261046003697461417">Không thể chú thích tài liệu được bảo vệ</translation>
 <translation id="4265872034478892965">Được quản trị viên cho phép</translation>
+<translation id="4270541775497538019">Khay xếp chồng 6</translation>
 <translation id="4275830172053184480">Khởi động lại thiết bị của bạn</translation>
 <translation id="4277028893293644418">Đặt lại mật khẩu</translation>
 <translation id="4279811152705618813"><ph name="DEVICE_TYPE" /> của bạn do <ph name="ENROLLMENT_DOMAIN" /> quản lý</translation>
@@ -717,6 +769,7 @@
 <translation id="4318566738941496689">Tên thiết bị và địa chỉ mạng của bạn</translation>
 <translation id="4325863107915753736">Không tìm được bài viết</translation>
 <translation id="4326324639298822553">Kiểm tra ngày hết hạn của bạn và thử lại</translation>
+<translation id="4331519897422864041">Khay xếp chồng 5</translation>
 <translation id="4331708818696583467">Không bảo mật</translation>
 <translation id="4340982228985273705">Máy tính này không được coi là máy tính do doanh nghiệp quản lý, vì vậy, chính sách này chỉ có thể tự động cài đặt các tiện ích được lưu trữ trên Cửa hàng Chrome trực tuyến. URL cập nhật Cửa hàng Chrome trực tuyến là "<ph name="CWS_UPDATE_URL" />".</translation>
 <translation id="4346197816712207223">Thẻ tín dụng được chấp nhận</translation>
@@ -732,6 +785,7 @@
 <translation id="4372948949327679948">Giá trị <ph name="VALUE_TYPE" /> mong đợi.</translation>
 <translation id="4377125064752653719">Bạn đã cố truy cập vào <ph name="DOMAIN" /> nhưng chứng chỉ mà máy chủ xuất trình đã bị nhà phát hành thu hồi. Điều này có nghĩa là giấy ủy nhiệm bảo mật mà máy chủ xuất trình hoàn toàn không đáng tin cậy. Bạn có thể đang giao tiếp với kẻ tấn công.</translation>
 <translation id="4378154925671717803">Điện thoại</translation>
+<translation id="4390472908992056574">Vành</translation>
 <translation id="4406896451731180161">kết quả tìm kiếm</translation>
 <translation id="4408413947728134509">Cookie <ph name="NUM_COOKIES" /></translation>
 <translation id="4415426530740016218">Địa chỉ nhận hàng</translation>
@@ -758,6 +812,7 @@
 <translation id="4522570452068850558">Chi tiết</translation>
 <translation id="4524138615196389145">Từ giờ trở đi, bạn có thể xác nhận các thẻ nhanh hơn bằng WebAuthn</translation>
 <translation id="4524805452350978254">Quản lý thẻ</translation>
+<translation id="4542971377163063093">Khay 6</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
 <translation id="4558551763791394412">Thử tắt tiện ích.</translation>
@@ -774,6 +829,7 @@
 <translation id="4635654612248442824">Trang web <ph name="ORIGIN" /> đã yêu cầu phải áp dụng một chính sách nguồn gốc
     cho tất cả các yêu cầu của trang web. Tuy nhiên, chính sách này hiện không áp dụng được.</translation>
 <translation id="464342062220857295">Tìm kiếm tính năng</translation>
+<translation id="4644670975240021822">Thứ tự đảo ngược hướng xuống</translation>
 <translation id="4646534391647090355">Chuyển đến đó ngay</translation>
 <translation id="4658638640878098064">Dập ghim trên cùng bên trái</translation>
 <translation id="4668929960204016307">,</translation>
@@ -782,6 +838,7 @@
 <translation id="4690462567478992370">Dừng sử dụng chứng chỉ không hợp lệ</translation>
 <translation id="4691835149146451662">Architecture-A (Phong bì)</translation>
 <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
+<translation id="4702504834785592287">Mặt bên</translation>
 <translation id="4708268264240856090">Kết nối của bạn bị gián đoạn</translation>
 <translation id="4712404868219726379">Windows Hello</translation>
 <translation id="4722547256916164131"><ph name="BEGIN_LINK" />Chạy Chẩn đoán mạng của Windows<ph name="END_LINK" /></translation>
@@ -799,9 +856,11 @@
 <translation id="4764776831041365478">Trang web tại <ph name="URL" /> có thể tạm thời không hoạt động hay được chuyển vĩnh viễn sang địa chỉ web mới.</translation>
 <translation id="4766713847338118463">Dập 2 ghim dưới cùng</translation>
 <translation id="4771973620359291008">Xảy ra lỗi chưa biết.</translation>
+<translation id="4780366598804516005">Hộp thư 1</translation>
 <translation id="4780900888022378816">Thiết bị của bạn do <ph name="ENROLLMENT_DOMAIN" /> quản lý, còn tài khoản của bạn do <ph name="ACCOUNT_DOMAIN" /> quản lý.</translation>
 <translation id="4785689107224900852">Chuyển sang tab này</translation>
 <translation id="4791134497475588553">Các ứng dụng Linux đã cài đặt và thời điểm sử dụng gần đây nhất</translation>
+<translation id="4796594887379589189">Mã tài khoản lệnh</translation>
 <translation id="4798078619018708837">Hãy nhập ngày hết hạn và số CVC của <ph name="CREDIT_CARD" /> để cập nhật thông tin chi tiết thẻ của bạn. Sau khi bạn xác nhận, thông tin chi tiết thẻ trong Tài khoản Google của bạn sẽ được chia sẻ với trang web này.</translation>
 <translation id="4800132727771399293">Kiểm tra ngày hết hạn và CVC của bạn rồi thử lại</translation>
 <translation id="480334179571489655">Lỗi chính sách nguồn gốc</translation>
@@ -809,6 +868,7 @@
 <translation id="4807049035289105102">Bạn không thể truy cập <ph name="SITE" /> ngay bây giờ do trang web gửi thông tin đăng nhập đã mã hóa mà Google Chrome không thể xử lý. Lỗi mạng và các cuộc tấn công mạng thường chỉ là tạm thời, do đó trang này có thể sẽ hoạt động lại sau.</translation>
 <translation id="4813512666221746211">Lỗi mạng</translation>
 <translation id="4816492930507672669">Vừa với trang</translation>
+<translation id="484462545196658690">Tự động</translation>
 <translation id="4850886885716139402">Xem</translation>
 <translation id="4854362297993841467">Phương thức phân phối này không có sẵn. Hãy thử một phương thức khác.</translation>
 <translation id="4876188919622883022">Chế độ xem đơn giản</translation>
@@ -818,6 +878,7 @@
 <translation id="4879491255372875719">Tự động (mặc định)</translation>
 <translation id="4880827082731008257">Lịch sử tìm kiếm</translation>
 <translation id="4881695831933465202">Mở</translation>
+<translation id="4892518386797173871">Phía sau</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4901778704868714008">Lưu...</translation>
 <translation id="4913987521957242411">Đục lỗ trên cùng bên trái</translation>
@@ -827,6 +888,7 @@
 <translation id="4926049483395192435">Phải được chỉ định.</translation>
 <translation id="4926159001844873046"><ph name="SITE" /> cho biết</translation>
 <translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
+<translation id="4930153903256238152">Dung tích lớn</translation>
 <translation id="4943703118917034429">Thực tế ảo</translation>
 <translation id="4943872375798546930">Không tìm thấy kết quả nào</translation>
 <translation id="4950898438188848926">Nút chuyển đổi tab, nhấn phím Enter để chuyển sang tab đang mở, <ph name="TAB_SWITCH_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -859,8 +921,10 @@
 <translation id="5068524481479508725">A10</translation>
 <translation id="5068778127327928576">{NUM_COOKIES,plural, =1{(1 cookie đang được dùng)}other{(# cookie đang được dùng)}}</translation>
 <translation id="5070335125961472645"><ph name="BEGIN_LINK" />Kiểm tra địa chỉ proxy<ph name="END_LINK" /></translation>
+<translation id="507130231501693183">Hộp thư 4</translation>
 <translation id="5087286274860437796">Chứng chỉ của máy chủ không hợp lệ tại thời điểm này.</translation>
 <translation id="5087580092889165836">Thêm thẻ</translation>
+<translation id="5088142053160410913">Thông báo gửi đến trình vận hành</translation>
 <translation id="5089810972385038852">Tỉnh</translation>
 <translation id="5093232627742069661">Gấp kiểu chữ Z</translation>
 <translation id="5094747076828555589">Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này không được Chromium tin cậy. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.</translation>
@@ -871,15 +935,18 @@
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bit)</translation>
 <translation id="5121469660360593280">Chia sẻ với Quản trị viên các dữ liệu về những sự kiện bảo mật mà tính năng Bảo vệ người dùng của Chrome Enterprise đã gắn cờ. Các dữ liệu này có thể bao gồm URL của các trang bạn truy cập, tên tệp hoặc siêu dữ liệu, cũng như tên người dùng mà bạn sử dụng để đăng nhập vào thiết bị và Chrome.</translation>
+<translation id="5123063207673082822">Cuối tuần</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Xác minh thẻ của bạn</translation>
 <translation id="5135404736266831032">Quản lý địa chỉ...</translation>
 <translation id="5138227688689900538">Ẩn bớt</translation>
 <translation id="5141240743006678641">Mã hóa mật khẩu đã đồng bộ hóa với thông tin đăng nhập Google của bạn</translation>
 <translation id="5145883236150621069">Mã lỗi có trong phản hồi chính sách</translation>
+<translation id="5148809049217731050">Hướng lên</translation>
 <translation id="515292512908731282">C4 (Phong bì)</translation>
 <translation id="5158275234811857234">Trang bìa</translation>
 <translation id="5159010409087891077">Mở trang trong cửa sổ Ẩn danh mới (⇧⌘N)</translation>
+<translation id="5161506081086828129">Khay xếp chồng 9</translation>
 <translation id="516920405563544094">Hãy nhập số CVC của <ph name="CREDIT_CARD" />. Sau khi bạn xác nhận, thông tin chi tiết thẻ trong Tài khoản Google của bạn sẽ được chia sẻ với trang web này.</translation>
 <translation id="5169827969064885044">Bạn có thể mất quyền truy cập vào tài khoản của tổ chức mình hoặc bị đánh cắp danh tính. Chrome khuyên bạn nên thay đổi mật khẩu ngay bây giờ.</translation>
 <translation id="5170017743895942767">Tính năng Bảo vệ người dùng của Chrome Enterprise</translation>
@@ -900,6 +967,7 @@
 <translation id="5250209940322997802">"Kết nối với mạng"</translation>
 <translation id="5251803541071282808">Đám mây</translation>
 <translation id="5252000469029418751">C7 (Phong bì)</translation>
+<translation id="5254043433801397071">Tối ưu hóa nội dung in</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5261548214279761072">Thanh toán hoàn tất</translation>
 <translation id="5266128565379329178">Đóng gáy trên cùng</translation>
@@ -913,6 +981,7 @@
 <translation id="5287240709317226393">Hiển thị cookie</translation>
 <translation id="5287456746628258573">Trang web này dùng cấu hình bảo mật lỗi thời nên có thể làm lộ thông tin của bạn (chẳng hạn như mật khẩu hoặc số thẻ tín dụng) trong quá trình gửi các thông tin này đến trang web.</translation>
 <translation id="5288108484102287882">Xuất hiện cảnh báo khi xác thực các giá trị của chính sách</translation>
+<translation id="5289384342738547352">Xử lý nhiều tài liệu</translation>
 <translation id="5295292838686006428">Một sự cố rò rỉ dữ liệu xảy ra trên một trang web hoặc ứng dụng đã làm lộ mật khẩu của bạn. Bạn nên kiểm tra các mật khẩu đã lưu ngay bây giờ.</translation>
 <translation id="5299298092464848405">Lỗi phân tích cú pháp chính sách</translation>
 <translation id="5300589172476337783">Hiển thị</translation>
@@ -937,10 +1006,12 @@
 <translation id="5396631636586785122">May viền ở bên phải</translation>
 <translation id="5400836586163650660">Màu xám</translation>
 <translation id="540969355065856584">Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này không hợp lệ tại thời điểm này. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.</translation>
+<translation id="541416427766103491">Khay xếp chồng 4</translation>
 <translation id="5421136146218899937">Xóa dữ liệu duyệt web...</translation>
 <translation id="5430298929874300616">Xóa dấu trang</translation>
 <translation id="5431657950005405462">Không tìm thấy tệp của bạn</translation>
 <translation id="5439770059721715174">Lỗi xác thực lược đồ tại "<ph name="ERROR_PATH" />": <ph name="ERROR" /></translation>
+<translation id="5443468954631487277">Thứ tự đảo ngược hướng lên</translation>
 <translation id="5452270690849572955">Không thể tìm thấy trang <ph name="HOST_NAME" /> này</translation>
 <translation id="5455374756549232013">Dấu thời gian chính sách không hợp lệ</translation>
 <translation id="5457113250005438886">Không hợp lệ</translation>
@@ -962,7 +1033,9 @@
 <translation id="552553974213252141">Văn bản đã được trích xuất chính xác chưa?</translation>
 <translation id="55293785478302737">May viền</translation>
 <translation id="553484882784876924">Prc6 (Phong bì)</translation>
+<translation id="5539243836947087108">Bè nổi</translation>
 <translation id="5540224163453853">Không thể tìm thấy bài viết đã yêu cầu.</translation>
+<translation id="5541086400771735334">Hộp thư 7</translation>
 <translation id="5541546772353173584">Thêm email</translation>
 <translation id="5545756402275714221">Tin bài dành cho bạn</translation>
 <translation id="5552137475244467770">Chrome kiểm tra định kỳ các mật khẩu của bạn so với những danh sách đã đăng trên Internet. Khi thực hiện việc này, mật khẩu và tên người dùng của bạn được mã hóa nên không ai có thể đọc được, kể cả Google.</translation>
@@ -987,10 +1060,13 @@
 <translation id="5632627355679805402">Dữ liệu của bạn đã được mã hóa bằng <ph name="BEGIN_LINK" />mật khẩu Google<ph name="END_LINK" /> kể từ <ph name="TIME" />. Hãy nhập mật khẩu đó để bắt đầu đồng bộ hóa.</translation>
 <translation id="5633066919399395251">Những kẻ tấn công hiện ở trên <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> có thể cố gắng cài đặt các chương trình nguy hiểm vào máy tính của bạn. Các chương trình này sẽ đánh cắp hoặc xóa thông tin của bạn (ví dụ: ảnh, mật khẩu, thư và thẻ tín dụng). <ph name="BEGIN_LEARN_MORE_LINK" />Tìm hiểu thêm<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="563324245173044180">Đã chặn nội dung lừa đảo.</translation>
+<translation id="5644090287519800334">Trục X của hình ảnh mặt 1</translation>
+<translation id="5645854190134202180">Ca thứ 2</translation>
 <translation id="5659593005791499971">Email</translation>
 <translation id="5663614846592581799">9x11 (Phong bì)</translation>
 <translation id="5663955426505430495">Quản trị viên của thiết bị này đã cài đặt các tiện ích để bổ sung thêm chức năng. Các tiện ích có quyền truy cập vào một số dữ liệu của bạn.</translation>
 <translation id="5675650730144413517">Trang này hiện không hoạt động</translation>
+<translation id="568292603005599551">Vị trí X của hình ảnh</translation>
 <translation id="5684874026226664614">Rất tiếc. Không thể dịch trang này.</translation>
 <translation id="5685654322157854305">Thêm địa chỉ giao hàng</translation>
 <translation id="5689199277474810259">Xuất sang định dạng JSON</translation>
@@ -1008,6 +1084,7 @@
 <translation id="5763042198335101085">Nhập địa chỉ email hợp lệ</translation>
 <translation id="5763703224595565476">Quản trị viên đã bật tính năng Bảo vệ người dùng của Chrome Enterprise trên trình duyệt của bạn. Tính năng này có quyền sử dụng một số dữ liệu mà bạn sở hữu.</translation>
 <translation id="5765072501007116331">Để xem các yêu cầu và phương thức phân phối, hãy chọn một địa chỉ</translation>
+<translation id="5776313857861697733">Mức độ ưu tiên</translation>
 <translation id="5778550464785688721">Điều khiển toàn bộ thiết bị MIDI</translation>
 <translation id="5781136890105823427">Đã bật tính năng thử nghiệm</translation>
 <translation id="578305955206182703">Hổ phách</translation>
@@ -1028,6 +1105,7 @@
 <translation id="5855253129151731373">Tên máy chủ của trang web này giống với miền <ph name="LOOKALIKE_DOMAIN" />. Kẻ tấn công đôi khi bắt chước các trang web bằng cách thực hiện các thay đổi nhỏ đối với tên miền mà bạn khó phát hiện ra.
 
     Nếu bạn cho rằng thông báo này hiển thị do lỗi, vui lòng truy cập vào https://bugs.chromium.org/p/chromium/issues/entry?template=Safety+Tips+Appeals.</translation>
+<translation id="5862579898803147654">Khay xếp chồng 8</translation>
 <translation id="5863847714970149516">Trang phía trước có thể tìm cách tính phí bạn</translation>
 <translation id="5866257070973731571">Thêm số điện thoại</translation>
 <translation id="5866898949289125849">Bạn đang xem trang công cụ dành cho nhà phát triển</translation>
@@ -1040,6 +1118,7 @@
 <translation id="5908541034548427511"><ph name="TYPE_1" /> (được đồng bộ hóa)</translation>
 <translation id="59174027418879706">Được kích hoạt</translation>
 <translation id="5919090499915321845">B10</translation>
+<translation id="5921185718311485855">Đang bật</translation>
 <translation id="5921639886840618607">Bạn có muốn lưu thẻ vào Tài khoản Google không?</translation>
 <translation id="5922853866070715753">Sắp hoàn tất</translation>
 <translation id="5932224571077948991">Trang web hiển thị quảng cáo xâm nhập hoặc quảng cáo gây hiểu nhầm</translation>
@@ -1050,11 +1129,13 @@
 <translation id="5975083100439434680">Thu nhỏ</translation>
 <translation id="5979084224081478209">Kiểm tra mật khẩu</translation>
 <translation id="5980920751713728343">Index-3x5</translation>
+<translation id="5984570616552610254">Độ ẩm buồng</translation>
 <translation id="598637245381783098">Không thể mở ứng dụng thanh toán</translation>
 <translation id="5989320800837274978">Cả máy chủ proxy cố định và URL tập lệnh .pac đều chưa được chỉ định.</translation>
 <translation id="5990559369517809815">Tiện ích đã chặn yêu cầu tới máy chủ.</translation>
 <translation id="5992691462791905444">Gấp kiểu chữ Z kỹ thuật</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> kết quả cho '<ph name="SEARCH_TEXT" />'</translation>
+<translation id="6008122969617370890">Thứ tự từ N đến 1</translation>
 <translation id="6008256403891681546">JCB</translation>
 <translation id="6014801569448771146">Kiểm tra mật khẩu của bạn</translation>
 <translation id="6015796118275082299">Năm</translation>
@@ -1064,15 +1145,19 @@
 <translation id="6025416945513303461"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /> (được đồng bộ hóa)</translation>
 <translation id="6027201098523975773">Nhập tên</translation>
 <translation id="603068602130820122">Dập 2 ghim bên phải</translation>
+<translation id="6032524144326295339">Hộp thư 2</translation>
 <translation id="6032955021262906325">Đóng gáy bên trái</translation>
 <translation id="6034000775414344507">Xám nhạt</translation>
 <translation id="6034283069659657473">10x14 (Phong bì)</translation>
 <translation id="6034514109191629503">Gấp kiểu đàn xếp</translation>
 <translation id="6039846035001940113">Nếu sự cố vẫn tiếp diễn, hãy liên hệ với chủ sở hữu trang web.</translation>
 <translation id="6040143037577758943">Đóng</translation>
+<translation id="6041777658117377052">Nhiệt độ buồng</translation>
 <translation id="6044573915096792553">Kích thước 12</translation>
+<translation id="6045164183059402045">Mẫu áp dụng</translation>
 <translation id="6047233362582046994">Nếu bạn hiểu các rủi ro về bảo mật, bạn có thể <ph name="BEGIN_LINK" />truy cập trang này<ph name="END_LINK" /> trước khi các ứng dụng có hại bị xóa.</translation>
 <translation id="6047927260846328439">Nội dung này có thể tìm cách đánh lừa bạn cài đặt phần mềm hoặc tiết lộ thông tin cá nhân. <ph name="BEGIN_LINK" />Vẫn hiển thị<ph name="END_LINK" /></translation>
+<translation id="6049488691372270142">Phân phối trang</translation>
 <translation id="6051221802930200923">Bạn không thể truy cập vào <ph name="SITE" /> ngay bây giờ do trang web sử dụng tính năng ghim chứng chỉ. Lỗi mạng và các cuộc tấn công mạng thường chỉ là tạm thời nên trang này có thể sẽ hoạt động lại sau.</translation>
 <translation id="6052284303005792909">•</translation>
 <translation id="6058977677006700226">Bạn muốn sử dụng thẻ trên tất cả thiết bị?</translation>
@@ -1093,6 +1178,7 @@
 <translation id="6157877588268064908">Để xem các yêu cầu và phương thức giao hàng, hãy chọn một địa chỉ</translation>
 <translation id="6165508094623778733">Tìm hiểu thêm</translation>
 <translation id="6177128806592000436">Kết nối của bạn tới trang web này không an toàn</translation>
+<translation id="6180316780098470077">Khoảng thời gian thử lại</translation>
 <translation id="6196640612572343990">Chặn cookie của bên thứ ba</translation>
 <translation id="6203231073485539293">Kiểm tra kết nối Internet của bạn</translation>
 <translation id="6218753634732582820">Bạn muốn xóa địa chỉ khỏi Chromium?</translation>
@@ -1101,6 +1187,7 @@
 <translation id="6234122620015464377">Cắt bỏ sau mỗi tài liệu</translation>
 <translation id="6240447795304464094">Biểu trưng của Google Pay</translation>
 <translation id="6241121617266208201">Ẩn các nội dung đề xuất</translation>
+<translation id="624499991300733384">Dịch vụ bộ sắp xếp bản in</translation>
 <translation id="6251924700383757765">Chính sách bảo mật</translation>
 <translation id="6254436959401408446">Không đủ bộ nhớ để mở trang này</translation>
 <translation id="625755898061068298">Bạn đã chọn tắt cảnh báo bảo mật cho trang web này.</translation>
@@ -1187,6 +1274,7 @@
 <translation id="6604181099783169992">Cảm biến chuyển động hoặc ánh sáng</translation>
 <translation id="6609880536175561541">Prc7 (Phong bì)</translation>
 <translation id="6612358246767739896">Nội dung được bảo vệ</translation>
+<translation id="6615297766614333076">Khay xếp chồng 2</translation>
 <translation id="6624427990725312378">Thông tin liên hệ</translation>
 <translation id="6626291197371920147">Thêm số thẻ hợp lệ</translation>
 <translation id="6628463337424475685">Tìm kiếm trên <ph name="ENGINE" /></translation>
@@ -1202,6 +1290,8 @@
 <translation id="6670613747977017428">Quay lại trang an toàn.</translation>
 <translation id="6671697161687535275">Bạn muốn xóa đề xuất biểu mẫu khỏi Chromium?</translation>
 <translation id="6685834062052613830">Đăng xuất và hoàn thành quá trình thiết lập</translation>
+<translation id="6687335167692595844">Kích thước phông chữ đã yêu cầu</translation>
+<translation id="6689249931105087298">Tương đối có nén điểm đen</translation>
 <translation id="6689271823431384964">Chrome đang đề xuất lưu thẻ của bạn vào Tài khoản Google vì bạn đã đăng nhập. Bạn có thể thay đổi hoạt động này trong phần cài đặt. Tên chủ thẻ được lấy từ tài khoản của bạn.</translation>
 <translation id="6704582573942289642">Có đúng là trang web này không?</translation>
 <translation id="6710213216561001401">Trước đó</translation>
@@ -1247,6 +1337,7 @@
 <translation id="6964255747740675745">Không thể phân tích cú pháp cấu hình mạng (JSON không hợp lệ).</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6965978654500191972">Thiết bị</translation>
+<translation id="696703987787944103">Cảm tính</translation>
 <translation id="6970216967273061347">Quận</translation>
 <translation id="6973656660372572881">Cả hai máy chủ proxy cố định và URL tập lệnh .pac đều được chỉ định.</translation>
 <translation id="6973932557599545801">Rất tiếc, tôi không thể trợ giúp được nữa. Bạn vui lòng tự thực hiện việc này.</translation>
@@ -1268,6 +1359,7 @@
 <translation id="7075452647191940183">Yêu cầu quá lớn</translation>
 <translation id="7079718277001814089">Trang web này có chứa phần mềm độc hại</translation>
 <translation id="7081308185095828845">Thiết bị của bạn không dùng được tính năng này</translation>
+<translation id="7083258188081898530">Khay 9</translation>
 <translation id="7087282848513945231">Hạt</translation>
 <translation id="7090678807593890770">Tìm kiếm <ph name="LINK" /> trên Google</translation>
 <translation id="7108338896283013870">Ẩn</translation>
@@ -1279,6 +1371,7 @@
 <translation id="7135130955892390533">Hiển thị trạng thái</translation>
 <translation id="7138472120740807366">Phương thức phân phối</translation>
 <translation id="7139724024395191329">Tiểu vương quốc Ả rập</translation>
+<translation id="714064300541049402">Trục X của hình ảnh mặt 2</translation>
 <translation id="7152423860607593928">Number-14 (Phong bì)</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> và <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> phương thức thanh toán khác}other{<ph name="PAYMENT_METHOD_PREVIEW" /> và <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> phương thức thanh toán khác}}</translation>
 <translation id="7153618581592392745">Tím oải hương</translation>
@@ -1297,6 +1390,7 @@
 <translation id="721197778055552897"><ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /> về sự cố này.</translation>
 <translation id="7219179957768738017">Kết nối sử dụng <ph name="SSL_VERSION" />.</translation>
 <translation id="7220786058474068424">Đang xử lý</translation>
+<translation id="7233592378249864828">In tờ xác nhận</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="724691107663265825">Trang web bạn sắp truy cập chứa phần mềm độc hại</translation>
 <translation id="724975217298816891">Nhập ngày hết hạn và CVC cho <ph name="CREDIT_CARD" /> để cập nhật chi tiết thẻ của bạn. Sau khi bạn xác nhận, chi tiết thẻ của bạn sẽ được chia sẻ với trang web này.</translation>
@@ -1306,6 +1400,7 @@
 <translation id="725866823122871198">Không thể thiết lập kết nối riêng tư với <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> vì ngày và giờ (<ph name="DATE_AND_TIME" />) trên máy tính của bạn không đúng.</translation>
 <translation id="7260504762447901703">Thu hồi quyền truy cập</translation>
 <translation id="7275334191706090484">Dấu trang được quản lý</translation>
+<translation id="7292031607255951991">Tên người nhận</translation>
 <translation id="7298195798382681320">Được đề xuất</translation>
 <translation id="7300012071106347854">Xanh thẩm</translation>
 <translation id="7302712225291570345">"<ph name="TEXT" />"</translation>
@@ -1383,6 +1478,7 @@
 <translation id="7569983096843329377">Đen</translation>
 <translation id="7575207903026901870">Nút Xóa đề xuất, nhấn Enter để xóa nội dung đề xuất này</translation>
 <translation id="7578104083680115302">Thanh toán nhanh trên các trang web và ứng dụng trong mọi thiết bị nhờ sử dụng thẻ bạn đã lưu với Google.</translation>
+<translation id="7581199239021537589">Trục Y của hình ảnh mặt 2</translation>
 <translation id="7592362899630581445">Chứng chỉ của máy chủ vi phạm hạn chế tên.</translation>
 <translation id="7598391785903975535">Dưới <ph name="UPPER_ESTIMATE" /></translation>
 <translation id="759889825892636187"><ph name="HOST_NAME" /> hiện không thể xử lý yêu cầu này.</translation>
@@ -1390,10 +1486,13 @@
 <translation id="7610193165460212391">Giá trị nằm ngoài phạm vi <ph name="VALUE" />.</translation>
 <translation id="7613889955535752492">Hết hạn: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="7615602087246926389">Bạn đã có dữ liệu được mã hóa bằng mật khẩu khác của Tài khoản Google. Vui lòng nhập mật khẩu đó bên dưới.</translation>
+<translation id="7619838219691048931">Tờ cuối</translation>
+<translation id="762844065391966283">Từng đối tượng</translation>
 <translation id="7633909222644580952">Báo cáo sự cố và dữ liệu hiệu suất</translation>
 <translation id="7637571805876720304">Bạn muốn xóa thẻ tín dụng khỏi Chromium?</translation>
 <translation id="7638605456503525968">Cổng nối tiếp</translation>
 <translation id="7639968568612851608">Xám đen</translation>
+<translation id="7647206758853451655">Chất lượng in</translation>
 <translation id="7653957176542370971">Trang tính trình xử lý thanh toán đang đóng</translation>
 <translation id="765676359832457558">Ẩn cài đặt nâng cao...</translation>
 <translation id="7658239707568436148">Hủy</translation>
@@ -1402,10 +1501,13 @@
 <translation id="7667346355482952095">Mã thông báo chính sách trả về trống hoặc không khớp với mã thông báo hiện tại</translation>
 <translation id="7668654391829183341">Thiết bị không xác định</translation>
 <translation id="7669271284792375604">Những kẻ tấn công trên trang web này có thể đánh lừa bạn cài đặt các chương trình ảnh hưởng đến trải nghiệm duyệt web của bạn (ví dụ: bằng cách thay đổi trang chủ của bạn hoặc hiển thị thêm quảng cáo trên các trang web bạn truy cập).</translation>
+<translation id="7673278391011283842">Hộp thư 6</translation>
 <translation id="7676643023259824263">Tìm kiếm văn bản trong khay nhớ tạm, <ph name="TEXT" /></translation>
 <translation id="7681101578153515023">Thay đổi công cụ tìm kiếm</translation>
 <translation id="7682287625158474539">Địa chỉ gửi hàng</translation>
 <translation id="7687186412095877299">Điền vào biểu mẫu thanh toán bằng phương thức thanh toán đã lưu</translation>
+<translation id="7687305263118037187">Hết giờ thử lại</translation>
+<translation id="7693583928066320343">Thứ tự trang đã nhận</translation>
 <translation id="7697066736081121494">Prc8 (Phong bì)</translation>
 <translation id="769721561045429135">Bạn hiện có các thẻ chỉ dùng được trên thiết bị này. Nhấp vào Tiếp tục để xem lại các thẻ.</translation>
 <translation id="7699293099605015246">Không có bài viết nào ngay lúc này</translation>
@@ -1424,7 +1526,9 @@
 <translation id="7761701407923456692">Chứng chỉ của máy chủ không phù hợp với URL.</translation>
 <translation id="7763386264682878361">Trình phân tích cú pháp tệp kê khai thanh toán</translation>
 <translation id="7764225426217299476">Thêm địa chỉ</translation>
+<translation id="7766518757692125295">Viền</translation>
 <translation id="7770259615151589601">Designated-Long</translation>
+<translation id="7773005668374414287">Cùng thứ tự hướng lên</translation>
 <translation id="777702478322588152">Quận</translation>
 <translation id="7791196057686275387">Đóng kiện</translation>
 <translation id="7791543448312431591">Thêm</translation>
@@ -1442,9 +1546,11 @@
 <translation id="785549533363645510">Tuy nhiên, bạn không ẩn. Việc chuyển sang chế độ ẩn danh sẽ không ẩn thao tác duyệt của bạn với chủ lao động, nhà cung cấp dịch vụ internet hoặc các trang web bạn truy cập.</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">Rời khỏi trang web?</translation>
+<translation id="7865448901209910068">Tốc độ tốt nhất</translation>
 <translation id="7878562273885520351">Mật khẩu của bạn có thể bị xâm phạm</translation>
 <translation id="7882421473871500483">Nâu</translation>
 <translation id="7887683347370398519">Kiểm tra CVC của bạn và thử lại</translation>
+<translation id="7888575728750733395">In theo mục đích tái tạo</translation>
 <translation id="7904208859782148177">C3 (Phong bì)</translation>
 <translation id="7932579305932748336">Phủ</translation>
 <translation id="79338296614623784">Nhập số điện thoại hợp lệ</translation>
@@ -1459,6 +1565,8 @@
 <translation id="7953569069500808819">May viền ở trên cùng</translation>
 <translation id="7956713633345437162">Dấu trang trên thiết bị di động</translation>
 <translation id="7961015016161918242">Không bao giờ</translation>
+<translation id="7966803981046576691">Loại tài khoản công việc</translation>
+<translation id="7977538094055660992">Thiết bị đầu ra</translation>
 <translation id="7977894662897852582">Edp</translation>
 <translation id="799149739215780103">Đóng gáy</translation>
 <translation id="7995512525968007366">Không chỉ định</translation>
@@ -1516,6 +1624,7 @@
 <translation id="8221250263817408492">Bạn vừa nhập mật khẩu vào một trang web lừa đảo. Chromium khuyên bạn nên truy cập vào <ph name="WEBSITE_1" /> và các trang web khác mà bạn dùng mật khẩu này rồi đổi mật khẩu ngay bây giờ.</translation>
 <translation id="8225771182978767009">Người thiết lập máy tính này đã chọn chặn trang web này.</translation>
 <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
+<translation id="8232343881378637145">Nhiệt độ bệ máy</translation>
 <translation id="8238581221633243064">Mở trang trong tab Ẩn danh mới</translation>
 <translation id="8241707690549784388">Trang mà bạn đang tìm sử dụng thông tin bạn đã nhập vào. Việc quay lại trang đó có thể lặp lại bất kỳ tác vụ nào bạn đã thực hiện. Bạn có muốn tiếp tục không?</translation>
 <translation id="8241712895048303527">Chặn trên trang web này</translation>
@@ -1527,6 +1636,7 @@
 <translation id="8261506727792406068">Xóa</translation>
 <translation id="8262952874573525464">May viền ở dưới cùng</translation>
 <translation id="8267698848189296333">Đăng nhập với tên <ph name="USERNAME" /></translation>
+<translation id="8269242089528251720">Tài liệu riêng biệt/Bản sao đã đối chiếu</translation>
 <translation id="8269981117540303696">Giờ đây, bạn có thể duyệt web ở chế độ riêng tư. Những người khác dùng thiết bị này sẽ không nhìn thấy hoạt động của bạn. Tuy nhiên, hệ thống sẽ lưu các tệp đã tải xuống và dấu trang.</translation>
 <translation id="8277900682056760511">Trang tính trình xử lý thanh toán đang mở</translation>
 <translation id="8281084378435768645">Large-Photo</translation>
@@ -1540,6 +1650,7 @@
 <translation id="8307358339886459768">Small-Photo</translation>
 <translation id="8308427013383895095">Không thể dịch do kết nối mạng có sự cố.</translation>
 <translation id="831207732689920588">Đây là trang đáng ngờ (do Chrome gắn cờ).</translation>
+<translation id="831997045666694187">Buổi tối</translation>
 <translation id="8332188693563227489">Quyền truy cập <ph name="HOST_NAME" /> bị từ chối</translation>
 <translation id="833262891116910667">Đánh dấu</translation>
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
@@ -1562,12 +1673,14 @@
 <translation id="8428213095426709021">Cài đặt</translation>
 <translation id="8433057134996913067">Thao tác này sẽ đăng xuất bạn khỏi hầu hết các trang web.</translation>
 <translation id="8437238597147034694">&amp;Hoàn tác di chuyển</translation>
+<translation id="8457125768502047971">Vô thời hạn</translation>
 <translation id="8461694314515752532">Mã hóa dữ liệu đã đồng bộ hóa bằng cụm mật khẩu đồng bộ hóa của riêng bạn</translation>
 <translation id="8466379296835108687">{COUNT,plural, =1{1 thẻ tín dụng}other{# thẻ tín dụng}}</translation>
 <translation id="8473863474539038330">Địa chỉ và các tùy chọn khác</translation>
 <translation id="8479754468255770962">Dập ghim dưới cùng bên trái</translation>
 <translation id="8483780878231876732">Để sử dụng thẻ từ Tài khoản Google, hãy đăng nhập vào Chrome</translation>
 <translation id="8488350697529856933">Áp dụng cho</translation>
+<translation id="8490137692873530638">Khay xếp chồng 10</translation>
 <translation id="8498891568109133222"><ph name="HOST_NAME" /> mất quá nhiều thời gian để phản hồi.</translation>
 <translation id="8503559462189395349">Mật khẩu Chrome</translation>
 <translation id="8503813439785031346">Tên người dùng</translation>
@@ -1578,11 +1691,13 @@
 <translation id="8553075262323480129">Dịch thất bại do ngôn ngữ của trang không được xác định.</translation>
 <translation id="8557066899867184262">CVC nằm ở mặt sau thẻ của bạn.</translation>
 <translation id="8559762987265718583">Không thể thiết lập kết nối riêng tư với <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> vì ngày và giờ (<ph name="DATE_AND_TIME" />) trên thiết bị của bạn không đúng.</translation>
+<translation id="8564182942834072828">Tài liệu riêng biệt/Bản sao chưa đối chiếu</translation>
 <translation id="8564985650692024650">Chromium khuyên bạn nên đặt lại mật khẩu <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> của mình nếu đã sử dụng lại mật khẩu này trên các trang web khác.</translation>
 <translation id="8571890674111243710">Đang dịch trang sang <ph name="LANGUAGE" />...</translation>
 <translation id="8574899947864779331">Dùng Touch ID để xác nhận các thẻ nhanh hơn</translation>
 <translation id="858637041960032120">Thêm số đ.thoại
 </translation>
+<translation id="8589998999637048520">Chất lượng tốt nhất</translation>
 <translation id="860043288473659153">Tên chủ thẻ</translation>
 <translation id="8616822740383114808">Tùy chọn cài đặt này được thực thi theo tùy chọn "<ph name="ENFORCING_SETTING" />" trong phần "<ph name="SETTINGS_PAGE" />"</translation>
 <translation id="861775596732816396">Kích thước 4</translation>
@@ -1590,10 +1705,13 @@
 <translation id="8625384913736129811">Lưu thẻ này vào thiết bị này</translation>
 <translation id="8647750283161643317">Đặt lại tất cả về mặc định</translation>
 <translation id="8663226718884576429">Tóm tắt đơn hàng, <ph name="TOTAL_LABEL" />, chi tiết khác</translation>
+<translation id="867224526087042813">Chữ ký</translation>
+<translation id="8676424191133491403">Không trì hoãn</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, câu trả lời, <ph name="ANSWER" /></translation>
 <translation id="8681531050781943054">Không thể tải trang web tại <ph name="PAGE" /> do:</translation>
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">Có sẵn</translation>
+<translation id="868922510921656628">Số trang mỗi tập</translation>
 <translation id="869891660844655955">Ngày hết hạn</translation>
 <translation id="8703575177326907206">Kết nối của bạn đến <ph name="DOMAIN" /> không được mã hóa.</translation>
 <translation id="8718314106902482036">Thanh toán chưa hoàn tất</translation>
@@ -1625,8 +1743,10 @@
 <translation id="8866928039507595380">Gấp</translation>
 <translation id="886872106311861689">B3</translation>
 <translation id="8870413625673593573">Các tab đã Đóng gần đây</translation>
+<translation id="8870494189203302833">Cùng thứ tự hướng xuống</translation>
 <translation id="8874824191258364635">Nhập số thẻ hợp lệ</translation>
 <translation id="8891727572606052622">Chế độ proxy không hợp lệ.</translation>
+<translation id="8894794286471754040">Cạnh dài trước</translation>
 <translation id="8903921497873541725">Phóng to</translation>
 <translation id="890485472659500557">Engineering-C</translation>
 <translation id="890493561996401738">Nút Xóa đề xuất, nhấn Enter để xóa, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" /></translation>
@@ -1675,6 +1795,7 @@
 <translation id="9080712759204168376">Tóm tắt đơn hàng</translation>
 <translation id="9089260154716455634">Chính sách về khoảng thời gian tắt:</translation>
 <translation id="9095388113577226029">Ngôn ngữ khác...</translation>
+<translation id="9101630580131696064">Khay 1</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> thường sử dụng mã hóa để bảo vệ thông tin của bạn. Khi Chromium cố gắng kết nối với <ph name="SITE" /> tại thời điểm này, trang web đã gửi lại thông tin đăng nhập không chính xác và bất thường. Điều này có thể xảy ra khi kẻ tấn công đang cố gắng giả mạo là <ph name="SITE" /> hoặc màn hình đăng nhập Wi-Fi đã làm gián đoạn kết nối. Thông tin của bạn vẫn an toàn do Chromium đã ngừng kết nối trước khi bất kỳ dữ liệu nào được trao đổi.</translation>
 <translation id="9106062320799175032">Thêm địa chỉ thanh toán</translation>
 <translation id="9114524666733003316">Đang xác nhận thẻ...</translation>
@@ -1690,6 +1811,7 @@
 <translation id="9169664750068251925">Luôn chặn trên trang web này</translation>
 <translation id="9170848237812810038">H&amp;oàn tác</translation>
 <translation id="9171296965991013597">Thoát khỏi ứng dụng?</translation>
+<translation id="9173282814238175921">Một tài liệu/Tờ mới</translation>
 <translation id="917450738466192189">Chứng chỉ của máy chủ không hợp lệ.</translation>
 <translation id="9174917557437862841">Nút chuyển đổi tab, nhấn phím Enter để chuyển sang tab này</translation>
 <translation id="9183302530794969518">Google Tài liệu</translation>
diff --git a/components/sync/driver/sync_service_crypto.cc b/components/sync/driver/sync_service_crypto.cc
index 403669f..0665630 100644
--- a/components/sync/driver/sync_service_crypto.cc
+++ b/components/sync/driver/sync_service_crypto.cc
@@ -585,10 +585,12 @@
   trusted_vault_client_->FetchKeys(
       state_.account_info,
       base::BindOnce(&SyncServiceCrypto::TrustedVaultKeysFetchedFromClient,
-                     weak_factory_.GetWeakPtr()));
+                     weak_factory_.GetWeakPtr(),
+                     /*is_second_fetch_attempt=*/false));
 }
 
 void SyncServiceCrypto::TrustedVaultKeysFetchedFromClient(
+    bool is_second_fetch_attempt,
     const std::vector<std::vector<uint8_t>>& keys) {
   if (state_.required_user_action !=
           RequiredUserAction::kFetchingTrustedVaultKeys &&
@@ -608,11 +610,12 @@
   }
 
   state_.engine->AddTrustedVaultDecryptionKeys(
-      keys, base::BindOnce(&SyncServiceCrypto::TrustedVaultKeysAdded,
-                           weak_factory_.GetWeakPtr()));
+      keys,
+      base::BindOnce(&SyncServiceCrypto::TrustedVaultKeysAdded,
+                     weak_factory_.GetWeakPtr(), is_second_fetch_attempt));
 }
 
-void SyncServiceCrypto::TrustedVaultKeysAdded() {
+void SyncServiceCrypto::TrustedVaultKeysAdded(bool is_second_fetch_attempt) {
   if (state_.required_user_action !=
           RequiredUserAction::kFetchingTrustedVaultKeys &&
       state_.required_user_action !=
@@ -626,10 +629,12 @@
   trusted_vault_client_->MarkKeysAsStale(
       state_.account_info,
       base::BindOnce(&SyncServiceCrypto::TrustedVaultKeysMarkedAsStale,
-                     weak_factory_.GetWeakPtr()));
+                     weak_factory_.GetWeakPtr(), is_second_fetch_attempt));
 }
 
-void SyncServiceCrypto::TrustedVaultKeysMarkedAsStale(bool result) {
+void SyncServiceCrypto::TrustedVaultKeysMarkedAsStale(
+    bool is_second_fetch_attempt,
+    bool result) {
   if (state_.required_user_action !=
           RequiredUserAction::kFetchingTrustedVaultKeys &&
       state_.required_user_action !=
@@ -637,10 +642,19 @@
     return;
   }
 
-  // TODO(crbug.com/1012659): Based on |result|, start a second FetchKeys()
-  // pass.
+  // If nothing has changed (determined by |!result| since false negatives are
+  // disallowed by the API) or this is already a second attempt, the fetching
+  // procedure can be considered completed.
+  if (!result || is_second_fetch_attempt) {
+    FetchTrustedVaultKeysCompletedButInsufficient();
+    return;
+  }
 
-  FetchTrustedVaultKeysCompletedButInsufficient();
+  trusted_vault_client_->FetchKeys(
+      state_.account_info,
+      base::BindOnce(&SyncServiceCrypto::TrustedVaultKeysFetchedFromClient,
+                     weak_factory_.GetWeakPtr(),
+                     /*is_second_fetch_attempt=*/true));
 }
 
 void SyncServiceCrypto::FetchTrustedVaultKeysCompletedButInsufficient() {
diff --git a/components/sync/driver/sync_service_crypto.h b/components/sync/driver/sync_service_crypto.h
index a00a26b..0aaceac43 100644
--- a/components/sync/driver/sync_service_crypto.h
+++ b/components/sync/driver/sync_service_crypto.h
@@ -109,11 +109,14 @@
   void FetchTrustedVaultKeys();
 
   // Called at various stages of asynchronously fetching and processing trusted
-  // vault encryption keys.
+  // vault encryption keys. |is_second_fetch_attempt| is useful for the case
+  // where multiple passes (up to two) are needed to fetch the keys from the
+  // client.
   void TrustedVaultKeysFetchedFromClient(
+      bool is_second_fetch_attempt,
       const std::vector<std::vector<uint8_t>>& keys);
-  void TrustedVaultKeysAdded();
-  void TrustedVaultKeysMarkedAsStale(bool result);
+  void TrustedVaultKeysAdded(bool is_second_fetch_attempt);
+  void TrustedVaultKeysMarkedAsStale(bool is_second_fetch_attempt, bool result);
   void FetchTrustedVaultKeysCompletedButInsufficient();
 
   // Calls SyncServiceBase::NotifyObservers(). Never null.
diff --git a/components/sync/driver/sync_service_crypto_unittest.cc b/components/sync/driver/sync_service_crypto_unittest.cc
index e5139f3a..18b0ccd5 100644
--- a/components/sync/driver/sync_service_crypto_unittest.cc
+++ b/components/sync/driver/sync_service_crypto_unittest.cc
@@ -9,6 +9,7 @@
 #include <utility>
 
 #include "base/bind_helpers.h"
+#include "base/optional.h"
 #include "base/run_loop.h"
 #include "base/test/mock_callback.h"
 #include "components/signin/public/identity_manager/account_info.h"
@@ -60,18 +61,73 @@
   MOCK_METHOD1(SetKeystoreEncryptionBootstrapToken, void(const std::string&));
 };
 
+// Object representing a server that contains the authoritative trusted vault
+// keys, and TestTrustedVaultClient reads from.
+class TestTrustedVaultServer {
+ public:
+  TestTrustedVaultServer() = default;
+  ~TestTrustedVaultServer() = default;
+
+  void StoreKeysOnServer(const std::string& gaia_id,
+                         const std::vector<std::vector<uint8_t>>& keys) {
+    gaia_id_to_keys_[gaia_id] = keys;
+  }
+
+  // Mimics a user going through a key-retrieval flow (e.g. reauth) such that
+  // keys are fetched from the server and cached in |client|.
+  void MimicKeyRetrievalByUser(const std::string& gaia_id,
+                               TrustedVaultClient* client) {
+    DCHECK(client);
+    DCHECK_NE(0U, gaia_id_to_keys_.count(gaia_id))
+        << "StoreKeysOnServer() should have been called for " << gaia_id;
+
+    client->StoreKeys(gaia_id, gaia_id_to_keys_[gaia_id],
+                      /*last_key_version=*/
+                      static_cast<int>(gaia_id_to_keys_[gaia_id].size()) - 1);
+  }
+
+  // Mimics the server RPC endpoint that allows key rotation.
+  std::vector<std::vector<uint8_t>> RequestRotatedKeysFromServer(
+      const std::string& gaia_id,
+      const std::vector<uint8_t>& key_known_by_client) const {
+    auto it = gaia_id_to_keys_.find(gaia_id);
+    if (it == gaia_id_to_keys_.end()) {
+      return {};
+    }
+
+    const std::vector<std::vector<uint8_t>>& latest_keys = it->second;
+    if (std::find(latest_keys.begin(), latest_keys.end(),
+                  key_known_by_client) == latest_keys.end()) {
+      // |key_known_by_client| is invalid or too old: cannot be used to follow
+      // key rotation.
+      return {};
+    }
+
+    return latest_keys;
+  }
+
+ private:
+  std::map<std::string, std::vector<std::vector<uint8_t>>> gaia_id_to_keys_;
+};
+
 // Simple in-memory implementation of TrustedVaultClient.
 class TestTrustedVaultClient : public TrustedVaultClient {
  public:
-  TestTrustedVaultClient() = default;
+  explicit TestTrustedVaultClient(const TestTrustedVaultServer* server)
+      : server_(server) {}
+
   ~TestTrustedVaultClient() override = default;
 
   // Exposes the total number of calls to FetchKeys().
   int fetch_count() const { return fetch_count_; }
 
-  // Returns whether MarkKeysAsStale() was called since the last call to
-  // FetchKeys().
-  bool keys_marked_as_stale() const { return keys_marked_as_stale_; }
+  // Exposes the total number of calls to MarkKeysAsStale().
+  bool keys_marked_as_stale_count() const {
+    return keys_marked_as_stale_count_;
+  }
+
+  // Exposes the total number of calls to the server's RequestKeysFromServer().
+  int server_request_count() const { return server_request_count_; }
 
   // Mimics the completion of the next (FIFO) FetchKeys() request.
   bool CompleteFetchKeysRequest() {
@@ -95,40 +151,104 @@
       const CoreAccountInfo& account_info,
       base::OnceCallback<void(const std::vector<std::vector<uint8_t>>&)> cb)
       override {
+    const std::string& gaia_id = account_info.gaia;
+
     ++fetch_count_;
-    keys_marked_as_stale_ = false;
+
+    CachedKeysPerUser& cached_keys = gaia_id_to_cached_keys_[gaia_id];
+
+    // If there are no keys cached, the only way to bootstrap the client is by
+    // going through a retrieval flow, see MimicKeyRetrievalByUser().
+    if (cached_keys.keys.empty()) {
+      pending_responses_.push_back(
+          base::BindOnce(std::move(cb), std::vector<std::vector<uint8_t>>()));
+      return;
+    }
+
+    // If the locally cached keys are not marked as stale, return them directly.
+    if (!cached_keys.marked_as_stale) {
+      pending_responses_.push_back(
+          base::BindOnce(std::move(cb), cached_keys.keys));
+      return;
+    }
+
+    // Fetch keys from the server and cache them.
+    cached_keys.keys =
+        server_->RequestRotatedKeysFromServer(gaia_id, cached_keys.keys.back());
+    cached_keys.marked_as_stale = false;
+
+    // Return the newly-cached keys.
     pending_responses_.push_back(
-        base::BindOnce(std::move(cb), gaia_id_to_keys_[account_info.gaia]));
+        base::BindOnce(std::move(cb), cached_keys.keys));
   }
 
+  // Store keys in the client-side cache, usually retrieved from the server as
+  // part of the key retrieval process, see MimicKeyRetrievalByUser().
   void StoreKeys(const std::string& gaia_id,
                  const std::vector<std::vector<uint8_t>>& keys,
                  int last_key_version) override {
-    gaia_id_to_keys_[gaia_id] = keys;
+    CachedKeysPerUser& cached_keys = gaia_id_to_cached_keys_[gaia_id];
+    cached_keys.keys = keys;
+    cached_keys.marked_as_stale = false;
     observer_list_.Notify();
   }
 
   void MarkKeysAsStale(const CoreAccountInfo& account_info,
                        base::OnceCallback<void(bool)> cb) override {
-    keys_marked_as_stale_ = true;
-    std::move(cb).Run(false);
+    const std::string& gaia_id = account_info.gaia;
+
+    ++keys_marked_as_stale_count_;
+
+    CachedKeysPerUser& cached_keys = gaia_id_to_cached_keys_[gaia_id];
+
+    if (cached_keys.keys.empty() || cached_keys.marked_as_stale) {
+      // Nothing changed so report |false|.
+      std::move(cb).Run(false);
+      return;
+    }
+
+    // The cache is stale and should be invalidated. Following calls to
+    // FetchKeys() will read from the server.
+    cached_keys.marked_as_stale = true;
+    std::move(cb).Run(true);
   }
 
  private:
-  std::map<std::string, std::vector<std::vector<uint8_t>>> gaia_id_to_keys_;
+  struct CachedKeysPerUser {
+    bool marked_as_stale = false;
+    std::vector<std::vector<uint8_t>> keys;
+  };
+
+  const TestTrustedVaultServer* const server_;
+
+  std::map<std::string, CachedKeysPerUser> gaia_id_to_cached_keys_;
   CallbackList observer_list_;
   int fetch_count_ = 0;
-  bool keys_marked_as_stale_ = false;
+  int keys_marked_as_stale_count_ = 0;
+  int server_request_count_ = 0;
   std::list<base::OnceClosure> pending_responses_;
 };
 
 class SyncServiceCryptoTest : public testing::Test {
  protected:
+  // Account used in most tests.
+  const CoreAccountInfo kSyncingAccount =
+      MakeAccountInfoWithGaia("syncingaccount");
+
+  // Initial trusted vault keys stored on the server |TestTrustedVaultServer|
+  // for |kSyncingAccount|.
+  const std::vector<std::vector<uint8_t>> kInitialTrustedVaultKeys = {
+      {0, 1, 2, 3, 4}};
+
   SyncServiceCryptoTest()
-      : crypto_(notify_observers_cb_.Get(),
+      : trusted_vault_client_(&trusted_vault_server_),
+        crypto_(notify_observers_cb_.Get(),
                 reconfigure_cb_.Get(),
                 &prefs_,
-                &trusted_vault_client_) {}
+                &trusted_vault_client_) {
+    trusted_vault_server_.StoreKeysOnServer(kSyncingAccount.gaia,
+                                            kInitialTrustedVaultKeys);
+  }
 
   ~SyncServiceCryptoTest() override = default;
 
@@ -139,13 +259,19 @@
            testing::Mock::VerifyAndClearExpectations(&engine_);
   }
 
+  void MimicKeyRetrievalByUser() {
+    trusted_vault_server_.MimicKeyRetrievalByUser(kSyncingAccount.gaia,
+                                                  &trusted_vault_client_);
+  }
+
   testing::NiceMock<base::MockCallback<base::RepeatingClosure>>
       notify_observers_cb_;
   testing::NiceMock<
       base::MockCallback<base::RepeatingCallback<void(ConfigureReason)>>>
       reconfigure_cb_;
   testing::NiceMock<MockCryptoSyncPrefs> prefs_;
-  testing::NiceMock<TestTrustedVaultClient> trusted_vault_client_;
+  TestTrustedVaultServer trusted_vault_server_;
+  TestTrustedVaultClient trusted_vault_client_;
   testing::NiceMock<MockSyncEngine> engine_;
   SyncServiceCrypto crypto_;
 };
@@ -185,9 +311,9 @@
 
 TEST_F(SyncServiceCryptoTest,
        ShouldReadValidTrustedVaultKeysFromClientBeforeInitialization) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-  const std::vector<std::vector<uint8_t>> kFetchedKeys = {{0, 1, 2, 3, 4}};
+  // Cache |kInitialTrustedVaultKeys| into |trusted_vault_client_| prior to
+  // engine initialization.
+  MimicKeyRetrievalByUser();
 
   EXPECT_CALL(reconfigure_cb_, Run(_)).Times(0);
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
@@ -196,9 +322,6 @@
   // engine (i.e. before SetSyncEngine()).
   crypto_.OnTrustedVaultKeyRequired();
 
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kFetchedKeys,
-                                  /*last_key_version=*/0);
-
   // Trusted vault keys should be fetched only after the engine initialization
   // is completed.
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(0));
@@ -209,7 +332,8 @@
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   base::OnceClosure add_keys_cb;
-  EXPECT_CALL(engine_, AddTrustedVaultDecryptionKeys(kFetchedKeys, _))
+  EXPECT_CALL(engine_,
+              AddTrustedVaultDecryptionKeys(kInitialTrustedVaultKeys, _))
       .WillOnce(
           [&](const std::vector<std::vector<uint8_t>>& keys,
               base::OnceClosure done_cb) { add_keys_cb = std::move(done_cb); });
@@ -224,33 +348,36 @@
   crypto_.OnTrustedVaultKeyAccepted();
   std::move(add_keys_cb).Run();
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
-  EXPECT_FALSE(trusted_vault_client_.keys_marked_as_stale());
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(0));
+  EXPECT_THAT(trusted_vault_client_.server_request_count(), Eq(0));
 }
 
 TEST_F(SyncServiceCryptoTest,
        ShouldReadValidTrustedVaultKeysFromClientAfterInitialization) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-  const std::vector<std::vector<uint8_t>> kFetchedKeys = {{0, 1, 2, 3, 4}};
+  // Cache |kInitialTrustedVaultKeys| into |trusted_vault_client_| prior to
+  // engine initialization.
+  MimicKeyRetrievalByUser();
 
   EXPECT_CALL(reconfigure_cb_, Run(_)).Times(0);
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kFetchedKeys,
-                                  /*last_key_version=*/0);
-
-  // Mimic the engine determining that trusted vault keys are required.
+  // Mimic the initialization of the sync engine, without trusted vault keys
+  // being required.
   crypto_.SetSyncEngine(kSyncingAccount, &engine_);
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(0));
 
+  // Later on, mimic trusted vault keys being required (e.g. remote Nigori
+  // update), which should trigger a fetch.
   crypto_.OnTrustedVaultKeyRequired();
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
 
   // While there is an ongoing fetch, there should be no user action required.
-  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   base::OnceClosure add_keys_cb;
-  EXPECT_CALL(engine_, AddTrustedVaultDecryptionKeys(kFetchedKeys, _))
+  EXPECT_CALL(engine_,
+              AddTrustedVaultDecryptionKeys(kInitialTrustedVaultKeys, _))
       .WillOnce(
           [&](const std::vector<std::vector<uint8_t>>& keys,
               base::OnceClosure done_cb) { add_keys_cb = std::move(done_cb); });
@@ -265,72 +392,159 @@
   crypto_.OnTrustedVaultKeyAccepted();
   std::move(add_keys_cb).Run();
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
-  EXPECT_FALSE(trusted_vault_client_.keys_marked_as_stale());
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(0));
+  EXPECT_THAT(trusted_vault_client_.server_request_count(), Eq(0));
 }
 
 TEST_F(SyncServiceCryptoTest,
        ShouldReadNoTrustedVaultKeysFromClientAfterInitialization) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-
   EXPECT_CALL(reconfigure_cb_, Run(_)).Times(0);
   EXPECT_CALL(engine_, AddTrustedVaultDecryptionKeys(_, _)).Times(0);
 
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
-  // Mimic the engine determining that trusted vault keys are required.
+  // Mimic the initialization of the sync engine, without trusted vault keys
+  // being required.
   crypto_.SetSyncEngine(kSyncingAccount, &engine_);
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(0));
+  ASSERT_THAT(trusted_vault_client_.server_request_count(), Eq(0));
 
+  // Later on, mimic trusted vault keys being required (e.g. remote Nigori
+  // update), which should trigger a fetch.
   crypto_.OnTrustedVaultKeyRequired();
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
 
   // While there is an ongoing fetch, there should be no user action required.
-  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // Mimic completion of the fetch, which should lead to a reconfiguration.
   EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
   ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_TRUE(crypto_.IsTrustedVaultKeyRequired());
-  EXPECT_FALSE(trusted_vault_client_.keys_marked_as_stale());
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
+
+  EXPECT_THAT(trusted_vault_client_.server_request_count(), Eq(0));
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(0));
 }
 
 TEST_F(SyncServiceCryptoTest, ShouldReadInvalidTrustedVaultKeysFromClient) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-  const std::vector<std::vector<uint8_t>> kFetchedKeys = {{0, 1, 2, 3, 4}};
-
-  ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
-
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kFetchedKeys,
-                                  /*last_key_version=*/0);
-
-  // Mimic the engine determining that trusted vault keys are required.
-  crypto_.SetSyncEngine(kSyncingAccount, &engine_);
-  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(0));
-
-  crypto_.OnTrustedVaultKeyRequired();
-
-  // While there is an ongoing fetch, there should be no user action required.
-  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
-  EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+  // Cache |kInitialTrustedVaultKeys| into |trusted_vault_client_| prior to
+  // engine initialization. In this test, |kInitialTrustedVaultKeys| does not
+  // match the Nigori keys (i.e. the engine continues to think trusted vault
+  // keys are required).
+  MimicKeyRetrievalByUser();
 
   base::OnceClosure add_keys_cb;
-  EXPECT_CALL(engine_, AddTrustedVaultDecryptionKeys(kFetchedKeys, _))
-      .WillOnce(
+  ON_CALL(engine_, AddTrustedVaultDecryptionKeys(_, _))
+      .WillByDefault(
           [&](const std::vector<std::vector<uint8_t>>& keys,
               base::OnceClosure done_cb) { add_keys_cb = std::move(done_cb); });
 
+  ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+
+  // Mimic the initialization of the sync engine, without trusted vault keys
+  // being required.
+  crypto_.SetSyncEngine(kSyncingAccount, &engine_);
+  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(0));
+  ASSERT_THAT(trusted_vault_client_.server_request_count(), Eq(0));
+
+  // Later on, mimic trusted vault keys being required (e.g. remote Nigori
+  // update), which should trigger a fetch.
+  crypto_.OnTrustedVaultKeyRequired();
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
+
+  // While there is an ongoing fetch, there should be no user action required.
+  EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+
   // Mimic completion of the client.
+  EXPECT_CALL(engine_,
+              AddTrustedVaultDecryptionKeys(kInitialTrustedVaultKeys, _));
   ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   ASSERT_TRUE(add_keys_cb);
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // Mimic completion of the engine, without OnTrustedVaultKeyAccepted().
+  std::move(add_keys_cb).Run();
+
+  // The keys should be marked as stale, and a second fetch attempt started.
+  EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
+
+  // Mimic completion of the client for the second pass.
+  EXPECT_CALL(engine_,
+              AddTrustedVaultDecryptionKeys(kInitialTrustedVaultKeys, _));
+  ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  ASSERT_TRUE(add_keys_cb);
+
+  // Mimic completion of the engine, without OnTrustedVaultKeyAccepted(), for
+  // the second pass.
   EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
   std::move(add_keys_cb).Run();
+
   EXPECT_TRUE(crypto_.IsTrustedVaultKeyRequired());
-  EXPECT_TRUE(trusted_vault_client_.keys_marked_as_stale());
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
+}
+
+// Similar to ShouldReadInvalidTrustedVaultKeysFromClient but in this case the
+// client is able to follow a key rotation as part of the second fetch attempt.
+TEST_F(SyncServiceCryptoTest, ShouldFollowKeyRotationDueToSecondFetch) {
+  const std::vector<std::vector<uint8_t>> kRotatedKeys = {
+      kInitialTrustedVaultKeys[0], {2, 3, 4, 5}};
+
+  // Cache |kInitialTrustedVaultKeys| into |trusted_vault_client_| prior to
+  // engine initialization. In this test, |kInitialTrustedVaultKeys| does not
+  // match the Nigori keys (i.e. the engine continues to think trusted vault
+  // keys are required until |kRotatedKeys| are provided).
+  MimicKeyRetrievalByUser();
+
+  // Mimic server-side key rotation which the keys, in a way that the rotated
+  // keys are a continuation of kInitialTrustedVaultKeys, such that
+  // TestTrustedVaultServer will allow the client to silently follow key
+  // rotation.
+  trusted_vault_server_.StoreKeysOnServer(kSyncingAccount.gaia, kRotatedKeys);
+
+  // The engine replies with OnTrustedVaultKeyAccepted() only if |kRotatedKeys|
+  // are provided.
+  ON_CALL(engine_, AddTrustedVaultDecryptionKeys(_, _))
+      .WillByDefault([&](const std::vector<std::vector<uint8_t>>& keys,
+                         base::OnceClosure done_cb) {
+        if (keys == kRotatedKeys) {
+          crypto_.OnTrustedVaultKeyAccepted();
+        }
+        std::move(done_cb).Run();
+      });
+
+  // Mimic initialization of the engine where trusted vault keys are needed and
+  // |kInitialTrustedVaultKeys| are fetched as part of the first fetch.
+  crypto_.SetSyncEngine(kSyncingAccount, &engine_);
+  crypto_.OnTrustedVaultKeyRequired();
+  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
+
+  // While there is an ongoing fetch (first attempt), there should be no user
+  // action required.
+  ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+
+  // The keys fetched in the first attempt (|kInitialTrustedVaultKeys|) are
+  // insufficient and should be marked as stale. In addition, a second fetch
+  // should be triggered.
+  ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  ASSERT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
+  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
+
+  // While there is an ongoing fetch (second attempt), there should be no user
+  // action required.
+  ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+
+  // Because of |kRotatedKeys| is a continuation of |kInitialTrustedVaultKeys|,
+  // TrustedVaultServer should successfully deliver the new keys |kRotatedKeys|
+  // to the client.
+  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
+  ASSERT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
 }
 
 // Similar to ShouldReadInvalidTrustedVaultKeysFromClient: the vault
@@ -338,14 +552,13 @@
 // Later, the vault gets populated with the keys, which should trigger
 // a fetch and eventually resolve the encryption issue.
 TEST_F(SyncServiceCryptoTest, ShouldRefetchTrustedVaultKeysWhenChangeObserved) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-  const std::vector<std::vector<uint8_t>> kInitialKeys = {{0, 1, 2, 3, 4}};
-  const std::vector<std::vector<uint8_t>> kNewKeys = {{0, 1, 2, 3, 4},
-                                                      {2, 3, 4, 5}};
+  const std::vector<std::vector<uint8_t>> kNewKeys = {{2, 3, 4, 5}};
 
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kInitialKeys,
-                                  /*last_key_version=*/0);
+  // Cache |kInitialTrustedVaultKeys| into |trusted_vault_client_| prior to
+  // engine initialization. In this test, |kInitialTrustedVaultKeys| does not
+  // match the Nigori keys (i.e. the engine continues to think trusted vault
+  // keys are required until |kNewKeys| are provided).
+  MimicKeyRetrievalByUser();
 
   // The engine replies with OnTrustedVaultKeyAccepted() only if |kNewKeys| are
   // provided.
@@ -359,38 +572,43 @@
       });
 
   // Mimic initialization of the engine where trusted vault keys are needed and
-  // |kInitialKeys| are fetched, which are insufficient, and hence
+  // |kInitialTrustedVaultKeys| are fetched, which are insufficient, and hence
   // IsTrustedVaultKeyRequired() is exposed.
   crypto_.SetSyncEngine(kSyncingAccount, &engine_);
   crypto_.OnTrustedVaultKeyRequired();
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
   ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  // Note that this initial attempt involves two fetches, where both return
+  // |kInitialTrustedVaultKeys|.
+  ASSERT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
+  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
+  ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  ASSERT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
   ASSERT_TRUE(crypto_.IsTrustedVaultKeyRequired());
-  ASSERT_TRUE(trusted_vault_client_.keys_marked_as_stale());
 
-  // Mimic keys being added to the vault, which triggers a notification to
-  // observers (namely |crypto_|), leading to a second fetch.
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kNewKeys,
-                                  /*last_key_version=*/1);
-  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
+  // Mimic server-side key reset and a new retrieval.
+  trusted_vault_server_.StoreKeysOnServer(kSyncingAccount.gaia, kNewKeys);
+  MimicKeyRetrievalByUser();
+
+  // Key retrieval should have initiated a third fetch.
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(3));
   EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
   EXPECT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
-  EXPECT_FALSE(trusted_vault_client_.keys_marked_as_stale());
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
 }
 
 // Same as above but the new keys become available during an ongoing FetchKeys()
 // request.
 TEST_F(SyncServiceCryptoTest,
        ShouldDeferTrustedVaultKeyFetchingWhenChangeObservedWhileOngoingFetch) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-  const std::vector<std::vector<uint8_t>> kInitialKeys = {{0, 1, 2, 3, 4}};
-  const std::vector<std::vector<uint8_t>> kNewKeys = {{0, 1, 2, 3, 4},
-                                                      {2, 3, 4, 5}};
+  const std::vector<std::vector<uint8_t>> kNewKeys = {{2, 3, 4, 5}};
 
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kInitialKeys,
-                                  /*last_key_version=*/0);
+  // Cache |kInitialTrustedVaultKeys| into |trusted_vault_client_| prior to
+  // engine initialization. In this test, |kInitialTrustedVaultKeys| does not
+  // match the Nigori keys (i.e. the engine continues to think trusted vault
+  // keys are required until |kNewKeys| are provided).
+  MimicKeyRetrievalByUser();
 
   // The engine replies with OnTrustedVaultKeyAccepted() only if |kNewKeys| are
   // provided.
@@ -404,16 +622,16 @@
       });
 
   // Mimic initialization of the engine where trusted vault keys are needed and
-  // |kInitialKeys| are in the process of being fetched.
+  // |kInitialTrustedVaultKeys| are in the process of being fetched.
   crypto_.SetSyncEngine(kSyncingAccount, &engine_);
   crypto_.OnTrustedVaultKeyRequired();
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
-  // While there is an ongoing fetch, mimic keys being added to the vault, which
-  // triggers a notification to observers (namely |crypto_|).
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kNewKeys,
-                                  /*last_key_version=*/1);
+  // While there is an ongoing fetch, mimic server-side key reset and a new
+  // retrieval.
+  trusted_vault_server_.StoreKeysOnServer(kSyncingAccount.gaia, kNewKeys);
+  MimicKeyRetrievalByUser();
 
   // Because there's already an ongoing fetch, a second one should not have been
   // triggered yet and should be deferred instead.
@@ -438,16 +656,7 @@
 TEST_F(
     SyncServiceCryptoTest,
     ShouldDeferTrustedVaultKeyFetchingWhenChangeObservedWhileOngoingRefetch) {
-  const CoreAccountInfo kSyncingAccount =
-      MakeAccountInfoWithGaia("syncingaccount");
-  const std::vector<std::vector<uint8_t>> kInitialKeys = {{0, 1, 2, 3, 4}};
-  const std::vector<std::vector<uint8_t>> kIntermediateKeys = {{0, 1, 2, 3, 4},
-                                                               {2, 3, 4, 5}};
-  const std::vector<std::vector<uint8_t>> kLatestKeys = {
-      {0, 1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4}};
-
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kInitialKeys,
-                                  /*last_key_version=*/0);
+  const std::vector<std::vector<uint8_t>> kLatestKeys = {{2, 2, 2, 2, 2}};
 
   // The engine replies with OnTrustedVaultKeyAccepted() only if |kLatestKeys|
   // are provided.
@@ -461,40 +670,39 @@
       });
 
   // Mimic initialization of the engine where trusted vault keys are needed and
-  // |kInitialKeys| are fetched, which are insufficient, and hence
-  // IsTrustedVaultKeyRequired() is exposed.
+  // no keys are fetched from the client, hence IsTrustedVaultKeyRequired() is
+  // exposed.
   crypto_.SetSyncEngine(kSyncingAccount, &engine_);
   crypto_.OnTrustedVaultKeyRequired();
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
   ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
+  ASSERT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(0));
   ASSERT_TRUE(crypto_.IsTrustedVaultKeyRequired());
 
-  // Mimic keys being added to the vault, which triggers a notification to
-  // observers (namely |crypto_|), leading to a second fetch.
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kIntermediateKeys,
-                                  /*last_key_version=*/1);
+  // Mimic retrieval of keys, leading to a second fetch that returns
+  // |kInitialTrustedVaultKeys|, which are insufficient and should be marked as
+  // stale as soon as the fetch completes (later below).
+  MimicKeyRetrievalByUser();
   EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
 
-  // While the second fetch is ongoing, mimic more keys being added to the
-  // vault, which triggers a notification to observers (namely |crypto_|).
-  trusted_vault_client_.StoreKeys(kSyncingAccount.gaia, kLatestKeys,
-                                  /*last_key_version=*/2);
-
+  // While the second fetch is ongoing, mimic additional keys being retrieved.
   // Because there's already an ongoing fetch, a third one should not have been
   // triggered yet and should be deferred instead.
+  trusted_vault_server_.StoreKeysOnServer(kSyncingAccount.gaia, kLatestKeys);
+  MimicKeyRetrievalByUser();
   EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
 
-  // As soon as the second fetch completes, the third one (deferred) should be
+  // As soon as the second fetch completes, the keys should be marked as stale
+  // and a third fetch attempt triggered.
+  EXPECT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
+  EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
+  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(3));
+
+  // As soon as the third fetch completes, the fourth one (deferred) should be
   // started.
   EXPECT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(3));
-  EXPECT_TRUE(crypto_.IsTrustedVaultKeyRequired());
-
-  // The completion of the third fetch should resolve the encryption issue.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
-  EXPECT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
-  EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(3));
-  EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 }
 
 }  // namespace
diff --git a/components/sync_sessions/synced_session_unittest.cc b/components/sync_sessions/synced_session_unittest.cc
index 07ff950..bfa1a39f 100644
--- a/components/sync_sessions/synced_session_unittest.cc
+++ b/components/sync_sessions/synced_session_unittest.cc
@@ -28,8 +28,8 @@
 // Create a sync_pb::TabNavigation from the constants above.
 sync_pb::TabNavigation MakeSyncDataForTest() {
   sync_pb::TabNavigation sync_data;
-  sync_data.set_virtual_url(test_data::kVirtualURL.spec());
-  sync_data.set_referrer(test_data::kReferrerURL.spec());
+  sync_data.set_virtual_url(test_data::VirtualUrl().spec());
+  sync_data.set_referrer(test_data::ReferrerUrl().spec());
   sync_data.set_obsolete_referrer_policy(test_data::kReferrerPolicy);
   sync_data.set_correct_referrer_policy(test_data::kReferrerPolicy);
   sync_data.set_title(base::UTF16ToUTF8(test_data::kTitle));
@@ -39,7 +39,7 @@
   sync_data.set_timestamp_msec(syncer::TimeToProtoTime(test_data::kTimestamp));
   sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT);
   sync_data.set_navigation_home_page(true);
-  sync_data.set_favicon_url(test_data::kFaviconURL.spec());
+  sync_data.set_favicon_url(test_data::FaviconUrl().spec());
   sync_data.set_http_status_code(test_data::kHttpStatusCode);
   // The redirect chain only syncs one way.
   return sync_data;
@@ -56,9 +56,9 @@
 
   EXPECT_EQ(test_data::kIndex, navigation.index());
   EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
+  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
   EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
-  EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
   EXPECT_EQ(test_data::kTitle, navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), test_data::kTransitionType));
@@ -67,7 +67,7 @@
   EXPECT_EQ(GURL(), navigation.original_request_url());
   EXPECT_FALSE(navigation.is_overriding_user_agent());
   EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
   EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
   // The redirect chain only syncs one way.
 }
@@ -81,8 +81,8 @@
   const sync_pb::TabNavigation sync_data =
       SessionNavigationToSyncData(navigation);
 
-  EXPECT_EQ(test_data::kVirtualURL.spec(), sync_data.virtual_url());
-  EXPECT_EQ(test_data::kReferrerURL.spec(), sync_data.referrer());
+  EXPECT_EQ(test_data::VirtualUrl().spec(), sync_data.virtual_url());
+  EXPECT_EQ(test_data::ReferrerUrl().spec(), sync_data.referrer());
   EXPECT_EQ(test_data::kTitle, base::ASCIIToUTF16(sync_data.title()));
   EXPECT_EQ(sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME,
             sync_data.page_transition());
@@ -91,14 +91,14 @@
   EXPECT_EQ(syncer::TimeToProtoTime(test_data::kTimestamp),
             sync_data.timestamp_msec());
   EXPECT_EQ(test_data::kTimestamp.ToInternalValue(), sync_data.global_id());
-  EXPECT_EQ(test_data::kFaviconURL.spec(), sync_data.favicon_url());
+  EXPECT_EQ(test_data::FaviconUrl().spec(), sync_data.favicon_url());
   EXPECT_EQ(test_data::kHttpStatusCode, sync_data.http_status_code());
   // The proto navigation redirects don't include the final chain entry
   // (because it didn't redirect) so the lengths should differ by 1.
   ASSERT_EQ(3, sync_data.navigation_redirect_size() + 1);
-  EXPECT_EQ(test_data::kRedirectURL0.spec(),
+  EXPECT_EQ(test_data::RedirectUrl0().spec(),
             sync_data.navigation_redirect(0).url());
-  EXPECT_EQ(test_data::kRedirectURL1.spec(),
+  EXPECT_EQ(test_data::RedirectUrl1().spec(),
             sync_data.navigation_redirect(1).url());
   EXPECT_FALSE(sync_data.has_last_navigation_redirect_url());
   EXPECT_FALSE(sync_data.has_replaced_navigation());
@@ -138,20 +138,20 @@
 TEST(SyncedSessionTest, SessionNavigationToSyncDataWithLastRedirectUrl) {
   SerializedNavigationEntry navigation =
       SerializedNavigationEntryTestHelper::CreateNavigationForTest();
-  SerializedNavigationEntryTestHelper::SetVirtualURL(test_data::kOtherURL,
+  SerializedNavigationEntryTestHelper::SetVirtualURL(test_data::OtherUrl(),
                                                      &navigation);
 
   const sync_pb::TabNavigation sync_data =
       SessionNavigationToSyncData(navigation);
   EXPECT_TRUE(sync_data.has_last_navigation_redirect_url());
-  EXPECT_EQ(test_data::kVirtualURL.spec(),
+  EXPECT_EQ(test_data::VirtualUrl().spec(),
             sync_data.last_navigation_redirect_url());
 
   // The redirect chain should be the same as in the above test.
   ASSERT_EQ(3, sync_data.navigation_redirect_size() + 1);
-  EXPECT_EQ(test_data::kRedirectURL0.spec(),
+  EXPECT_EQ(test_data::RedirectUrl0().spec(),
             sync_data.navigation_redirect(0).url());
-  EXPECT_EQ(test_data::kRedirectURL1.spec(),
+  EXPECT_EQ(test_data::RedirectUrl1().spec(),
             sync_data.navigation_redirect(1).url());
 }
 
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
index 3e11ab7..74524e9d9 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
@@ -252,6 +252,22 @@
        "[[:Mymr:]]",
        "[ခဂငထပဝ၀၂ၔၜ\u1090\u1091\u1095\u1096\u1097]",
        {"mm"}},
+      {// Thai
+       "[[:Thai:]]",
+  // Some of the Thai characters are only confusable on Linux, so the Linux
+  // set is larger than other platforms. Ideally we don't want to have any
+  // differences between platforms, but doing so is unavoidable here as
+  // these characters look significantly different between Linux and other
+  // platforms.
+  // The ideal fix would be to change the omnibox font used for Thai. In
+  // that case, the Linux-only list should be revisited and potentially
+  // removed.
+#if defined(OS_LINUX)
+       "[ทนบพรหเแ๐ดลปฟม]",
+#else
+       "[บพเแ๐]",
+#endif
+       {"th"}},
   };
   for (const WholeScriptConfusableData& data : kWholeScriptConfusables) {
     auto all_letters = std::make_unique<icu::UnicodeSet>(
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc b/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
index 28604f0..cf8bb22 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
@@ -1231,6 +1231,16 @@
     {"xn--rmdcmef.com", L"႐႑႕႖႗.com", kUnsafe},
     {"xn--rmdcmef.mm", L"႐႑႕႖႗.mm", kSafe},
     {"xn--rmdcmef.xn--7idjb0f4ck", L"႐႑႕႖႗.မြန်မာ", kSafe},
+// Thai:
+#if defined(OS_LINUX)
+    {"xn--o3cedqz2c.com", L"ทนบพรห.com", kUnsafe},
+    {"xn--o3cedqz2c.th", L"ทนบพรห.th", kSafe},
+    {"xn--o3cedqz2c.xn--o3cw4h", L"ทนบพรห.ไทย", kSafe},
+#else
+    {"xn--r3ch7hsc.com", L"พบเ๐.com", kUnsafe},
+    {"xn--r3ch7hsc.th", L"พบเ๐.th", kSafe},
+    {"xn--r3ch7hsc.xn--o3cw4h", L"พบเ๐.ไทย", kSafe},
+#endif
 
     // Indic scripts:
     // Bengali:
diff --git a/components/url_formatter/tools/format_url.cc b/components/url_formatter/tools/format_url.cc
index 1be79852..b991476 100644
--- a/components/url_formatter/tools/format_url.cc
+++ b/components/url_formatter/tools/format_url.cc
@@ -15,6 +15,7 @@
 #include "base/command_line.h"
 #include "base/i18n/icu_util.h"
 #include "base/logging.h"
+#include "base/strings/string_util.h"
 #include "components/url_formatter/url_formatter.h"
 
 void PrintUsage(const char* process_name) {
@@ -22,6 +23,9 @@
   std::cout << process_name << " <file>" << std::endl;
   std::cout << std::endl;
   std::cout << "<file> is a text file with one hostname per line." << std::endl;
+  std::cout << "Hostnames must be in ASCII. Internationalized domain names "
+               "(IDN) must be encoded in punycode."
+            << std::endl;
   std::cout << "Each hostname is converted to unicode, if safe. Otherwise, "
             << "it's printed unchanged." << std::endl;
 }
@@ -29,6 +33,14 @@
 void Convert(std::istream& input) {
   base::i18n::InitializeICU();
   for (std::string line; std::getline(input, line);) {
+    CHECK(!base::StartsWith(line,
+                            "http:", base::CompareCase::INSENSITIVE_ASCII) &&
+          !base::StartsWith(line,
+                            "https:", base::CompareCase::INSENSITIVE_ASCII) &&
+          base::IsStringASCII(line))
+        << "This binary only accepts hostnames in ASCII form (punycode for "
+           "IDN): "
+        << line;
     std::cout << line << ", " << url_formatter::IDNToUnicode(line) << std::endl;
   }
 }
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index f9a747c6..9401262 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -3609,6 +3609,67 @@
       cc::FuzzyPixelOffByOneComparator(true)));
 }
 
+TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacityWithAlpha) {
+  gfx::Rect viewport(this->device_viewport_size_);
+  bool needs_blending = true;
+  ResourceFormat texture_format = RGBA_8888;
+  bool nearest_neighbor = false;
+
+  int id = 1;
+  gfx::Transform transform_to_root;
+  std::unique_ptr<RenderPass> pass =
+      CreateTestRenderPass(id, viewport, transform_to_root);
+
+  // One viewport-filling 0.5-opacity transparent quad.
+  std::unique_ptr<cc::FakeRecordingSource> transparent_recording =
+      cc::FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
+  cc::PaintFlags transparent_flags;
+  transparent_flags.setColor(SK_ColorTRANSPARENT);
+  transparent_recording->add_draw_rect_with_flags(viewport, transparent_flags);
+  transparent_recording->Rerecord();
+  scoped_refptr<cc::RasterSource> transparent_raster_source =
+      transparent_recording->CreateRasterSource();
+
+  gfx::Transform transparent_quad_to_target_transform;
+  SharedQuadState* transparent_shared_state =
+      CreateTestSharedQuadState(transparent_quad_to_target_transform, viewport,
+                                pass.get(), gfx::RRectF());
+  transparent_shared_state->opacity = 0.5f;
+
+  auto* transparent_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
+  transparent_quad->SetNew(
+      transparent_shared_state, viewport, viewport, needs_blending,
+      gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, texture_format,
+      viewport, 1.f, {}, transparent_raster_source->GetDisplayItemList());
+
+  // One viewport-filling white quad.
+  std::unique_ptr<cc::FakeRecordingSource> white_recording =
+      cc::FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
+  cc::PaintFlags white_flags;
+  white_flags.setColor(SK_ColorWHITE);
+  white_recording->add_draw_rect_with_flags(viewport, white_flags);
+  white_recording->Rerecord();
+  scoped_refptr<cc::RasterSource> white_raster_source =
+      white_recording->CreateRasterSource();
+
+  gfx::Transform white_quad_to_target_transform;
+  SharedQuadState* white_shared_state = CreateTestSharedQuadState(
+      white_quad_to_target_transform, viewport, pass.get(), gfx::RRectF());
+
+  auto* white_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
+  white_quad->SetNew(white_shared_state, viewport, viewport, needs_blending,
+                     gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor,
+                     texture_format, viewport, 1.f, {},
+                     white_raster_source->GetDisplayItemList());
+
+  RenderPassList pass_list;
+  pass_list.push_back(std::move(pass));
+
+  EXPECT_TRUE(this->RunPixelTest(&pass_list,
+                                 base::FilePath(FILE_PATH_LITERAL("white.png")),
+                                 cc::FuzzyPixelOffByOneComparator(true)));
+}
+
 template <typename TypeParam>
 bool IsSoftwareRenderer() {
   return false;
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc b/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
index 914b8e4..fbd46b8 100644
--- a/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
+++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
@@ -151,10 +151,13 @@
     return texture->GetLevelImage(texture->target(), 0);
   }
 
+  base::WeakPtr<Image> GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); }
+
   int present_count() const { return present_count_; }
   gpu::SharedImageRepresentationSkia* skia_representation() {
     return skia_representation_.get();
   }
+  const gfx::Size& size() const { return skia_representation_->size(); }
 
  private:
   gpu::SharedImageFactory* const factory_;
@@ -173,6 +176,7 @@
       scoped_gl_read_access_;
   std::vector<GrBackendSemaphore> end_semaphores_;
   int present_count_ = 0;
+  base::WeakPtrFactory<Image> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(Image);
 };
@@ -252,6 +256,9 @@
 
 SkiaOutputDeviceBufferQueue::~SkiaOutputDeviceBufferQueue() {
   FreeAllSurfaces();
+  // Clear and cancel swap_completion_callbacks_ to free all resource bind to
+  // callbacks.
+  swap_completion_callbacks_.clear();
 }
 
 // static
@@ -312,9 +319,8 @@
 }
 
 void SkiaOutputDeviceBufferQueue::PageFlipComplete(Image* image) {
-  DCHECK(image);
-
   if (displayed_image_) {
+    DCHECK_EQ(displayed_image_->size(), image_size_);
     DCHECK_EQ(displayed_image_->present_count() > 1, displayed_image_ == image);
     displayed_image_->EndPresent();
     if (!displayed_image_->present_count()) {
@@ -323,14 +329,10 @@
   }
 
   displayed_image_ = image;
-
   swap_completion_callbacks_.pop_front();
 }
 
 void SkiaOutputDeviceBufferQueue::FreeAllSurfaces() {
-  // Clear and cancel swap buffer callbacks.
-  swap_completion_callbacks_.clear();
-
   images_.clear();
   current_image_ = nullptr;
   submitted_image_ = nullptr;
@@ -411,15 +413,18 @@
   if (supports_async_swap_) {
     // Cancelable callback uses weak ptr to drop this task upon destruction.
     // Thus it is safe to use |base::Unretained(this)|.
+    // Bind submitted_image_->GetWeakPtr(), since the |submitted_image_| could
+    // be released due to reshape() or destruction.
     swap_completion_callbacks_.emplace_back(
         std::make_unique<CancelableSwapCompletionCallback>(base::BindOnce(
             &SkiaOutputDeviceBufferQueue::DoFinishSwapBuffers,
             base::Unretained(this), image_size_, std::move(latency_info),
-            submitted_image_, std::move(committed_overlays_))));
+            submitted_image_->GetWeakPtr(), std::move(committed_overlays_))));
     gl_surface_->SwapBuffersAsync(swap_completion_callbacks_.back()->callback(),
                                   std::move(feedback));
   } else {
-    DoFinishSwapBuffers(image_size_, std::move(latency_info), submitted_image_,
+    DoFinishSwapBuffers(image_size_, std::move(latency_info),
+                        submitted_image_->GetWeakPtr(),
                         std::move(committed_overlays_),
                         gl_surface_->SwapBuffers(std::move(feedback)), nullptr);
   }
@@ -440,18 +445,20 @@
   if (supports_async_swap_) {
     // Cancelable callback uses weak ptr to drop this task upon destruction.
     // Thus it is safe to use |base::Unretained(this)|.
+    // Bind submitted_image_->GetWeakPtr(), since the |submitted_image_| could
+    // be released due to reshape() or destruction.
     swap_completion_callbacks_.emplace_back(
         std::make_unique<CancelableSwapCompletionCallback>(base::BindOnce(
             &SkiaOutputDeviceBufferQueue::DoFinishSwapBuffers,
             base::Unretained(this), image_size_, std::move(latency_info),
-            submitted_image_, std::move(committed_overlays_))));
+            submitted_image_->GetWeakPtr(), std::move(committed_overlays_))));
     gl_surface_->CommitOverlayPlanesAsync(
         swap_completion_callbacks_.back()->callback(), std::move(feedback));
   } else {
-    DoFinishSwapBuffers(image_size_, std::move(latency_info), submitted_image_,
-                        std::move(committed_overlays_),
-                        gl_surface_->CommitOverlayPlanes(std::move(feedback)),
-                        nullptr);
+    DoFinishSwapBuffers(
+        image_size_, std::move(latency_info), submitted_image_->GetWeakPtr(),
+        std::move(committed_overlays_),
+        gl_surface_->CommitOverlayPlanes(std::move(feedback)), nullptr);
   }
   committed_overlays_.clear();
   std::swap(committed_overlays_, pending_overlays_);
@@ -460,13 +467,13 @@
 void SkiaOutputDeviceBufferQueue::DoFinishSwapBuffers(
     const gfx::Size& size,
     std::vector<ui::LatencyInfo> latency_info,
-    Image* image,
+    const base::WeakPtr<Image>& image,
     std::vector<OverlayData> overlays,
     gfx::SwapResult result,
     std::unique_ptr<gfx::GpuFence> gpu_fence) {
   DCHECK(!gpu_fence);
 
-  PageFlipComplete(image);
+  PageFlipComplete(image.get());
   FinishSwapBuffers(result, size, latency_info);
 }
 
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue.h b/components/viz/service/display_embedder/skia_output_device_buffer_queue.h
index c93a5b3..4fa5cf2 100644
--- a/components/viz/service/display_embedder/skia_output_device_buffer_queue.h
+++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue.h
@@ -76,7 +76,7 @@
   // operation
   void DoFinishSwapBuffers(const gfx::Size& size,
                            std::vector<ui::LatencyInfo> latency_info,
-                           Image* image,
+                           const base::WeakPtr<Image>& image,
                            std::vector<OverlayData> overlays,
                            gfx::SwapResult result,
                            std::unique_ptr<gfx::GpuFence> gpu_fence);
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc b/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc
index 2277891..acfcce0 100644
--- a/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc
+++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc
@@ -488,8 +488,9 @@
 
   output_device_->Reshape(screen_size, 1.0f, gfx::ColorSpace(), false,
                           gfx::OVERLAY_TRANSFORM_NONE);
-  // swap completion callbacks is cleared.
-  EXPECT_EQ(0u, swap_completion_callbacks().size());
+
+  // swap completion callbacks should not be cleared.
+  EXPECT_EQ(1u, swap_completion_callbacks().size());
 
   PageFlipComplete();
   EXPECT_FALSE(displayed_image());
diff --git a/content/browser/accessibility/android_granularity_movement_browsertest.cc b/content/browser/accessibility/android_granularity_movement_browsertest.cc
index 5b07c01..ab80d822 100644
--- a/content/browser/accessibility/android_granularity_movement_browsertest.cc
+++ b/content/browser/accessibility/android_granularity_movement_browsertest.cc
@@ -85,8 +85,7 @@
     int previous_end_index = -1;
     while (manager->NextAtGranularity(granularity, end_index, android_node,
                                       &start_index, &end_index)) {
-      int len =
-          (granularity == GRANULARITY_CHARACTER) ? 1 : end_index - start_index;
+      int len = end_index - start_index;
       base::string16 selection = text.substr(start_index, len);
       if (base::EndsWith(selection, base::ASCIIToUTF16("\n"),
                          base::CompareCase::INSENSITIVE_ASCII))
@@ -111,8 +110,7 @@
     start_index = end_index;
     while (manager->PreviousAtGranularity(
         granularity, start_index, android_node, &start_index, &end_index)) {
-      int len =
-          (granularity == GRANULARITY_CHARACTER) ? 1 : end_index - start_index;
+      int len = end_index - start_index;
       base::string16 selection = text.substr(start_index, len);
       if (base::EndsWith(selection, base::ASCIIToUTF16("\n"),
                          base::CompareCase::INSENSITIVE_ASCII))
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.cc b/content/browser/accessibility/browser_accessibility_manager_android.cc
index 85425b1..fe75a27 100644
--- a/content/browser/accessibility/browser_accessibility_manager_android.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_android.cc
@@ -287,8 +287,9 @@
       base::i18n::UTF16CharIterator iter(text.data(), text.size());
       while (!iter.end() && iter.array_pos() <= cursor_index)
         iter.Advance();
-      *start_index = iter.array_pos();
       *end_index = iter.array_pos();
+      iter.Rewind();
+      *start_index = iter.array_pos();
       break;
     }
     case ANDROID_ACCESSIBILITY_NODE_INFO_MOVEMENT_GRANULARITY_WORD:
@@ -335,7 +336,7 @@
         iter.Advance();
       }
       *start_index = previous_index;
-      *end_index = previous_index;
+      *end_index = iter.array_pos();
       break;
     }
     case ANDROID_ACCESSIBILITY_NODE_INFO_MOVEMENT_GRANULARITY_WORD:
diff --git a/content/browser/accessibility/web_contents_accessibility_android.cc b/content/browser/accessibility/web_contents_accessibility_android.cc
index f68ecf9..064bfd49 100644
--- a/content/browser/accessibility/web_contents_accessibility_android.cc
+++ b/content/browser/accessibility/web_contents_accessibility_android.cc
@@ -1066,9 +1066,9 @@
   if (root_manager_->NextAtGranularity(granularity, cursor_index, node,
                                        &start_index, &end_index)) {
     base::string16 text = node->GetInnerText();
-    Java_WebContentsAccessibilityImpl_finishGranularityMove(
+    Java_WebContentsAccessibilityImpl_finishGranularityMoveNext(
         env, obj, base::android::ConvertUTF16ToJavaString(env, text),
-        extend_selection, start_index, end_index, true);
+        extend_selection, start_index, end_index);
     return true;
   }
   return false;
@@ -1132,10 +1132,10 @@
   int end_index = -1;
   if (root_manager_->PreviousAtGranularity(granularity, cursor_index, node,
                                            &start_index, &end_index)) {
-    Java_WebContentsAccessibilityImpl_finishGranularityMove(
+    Java_WebContentsAccessibilityImpl_finishGranularityMovePrevious(
         env, obj,
         base::android::ConvertUTF16ToJavaString(env, node->GetInnerText()),
-        extend_selection, start_index, end_index, false);
+        extend_selection, start_index, end_index);
     return true;
   }
   return false;
diff --git a/content/browser/accessibility/web_contents_accessibility_android.h b/content/browser/accessibility/web_contents_accessibility_android.h
index 157726b..114d026f 100644
--- a/content/browser/accessibility/web_contents_accessibility_android.h
+++ b/content/browser/accessibility/web_contents_accessibility_android.h
@@ -137,8 +137,8 @@
   // of our own selection in BrowserAccessibilityManager.java for static
   // text, but if this is an editable text node, updates the selected text
   // in Blink, too, and either way calls
-  // Java_BrowserAccessibilityManager_finishGranularityMove with the
-  // result.
+  // Java_BrowserAccessibilityManager_finishGranularityMove[NEXT/PREVIOUS]
+  // with the result.
   jboolean NextAtGranularity(JNIEnv* env,
                              const base::android::JavaParamRef<jobject>& obj,
                              jint granularity,
diff --git a/content/browser/appcache/appcache_update_job.cc b/content/browser/appcache/appcache_update_job.cc
index 65ee732..6cd52f1 100644
--- a/content/browser/appcache/appcache_update_job.cc
+++ b/content/browser/appcache/appcache_update_job.cc
@@ -681,6 +681,10 @@
   std::unique_ptr<URLFetcher> entry_fetcher = std::move(it->second);
   pending_url_fetches_.erase(it);
 
+  // URLFetcher should only trigger this for resources, even if those entries
+  // happen to be manifest entries.
+  DCHECK_EQ(entry_fetcher->fetch_type(), URLFetcher::FetchType::kResource);
+
   NotifyAllProgress(url);
   ++url_fetches_completed_;
 
@@ -805,6 +809,11 @@
   std::unique_ptr<URLFetcher> entry_fetcher = std::move(it->second);
   master_entry_fetches_.erase(it);
 
+  // URLFetcher triggers this function, so we verify here that the fetch type
+  // in URLFetcher is what we expect: kNewMasterEntry.
+  DCHECK_EQ(entry_fetcher->fetch_type(),
+            URLFetcher::FetchType::kNewMasterEntry);
+
   ++master_entries_completed_;
 
   int response_code = net_error == net::OK ? request->GetResponseCode() : -1;
diff --git a/content/browser/appcache/appcache_update_url_fetcher.cc b/content/browser/appcache/appcache_update_url_fetcher.cc
index c31ef89..8d663ad76 100644
--- a/content/browser/appcache/appcache_update_url_fetcher.cc
+++ b/content/browser/appcache/appcache_update_url_fetcher.cc
@@ -146,6 +146,8 @@
     const net::HttpResponseHeaders* headers) {
   DCHECK(request_);
   DCHECK(headers);
+  DCHECK_NE(fetch_type_, FetchType::kNewMasterEntry);
+
   net::HttpRequestHeaders extra_headers;
 
   // Add If-Modified-Since header if response info has Last-Modified header.
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index eba0afe..34f9ab3 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -1689,8 +1689,6 @@
                         OnAccessibilityChildFrameHitTestResult)
     IPC_MESSAGE_HANDLER(AccessibilityHostMsg_SnapshotResponse,
                         OnAccessibilitySnapshotResponse)
-    IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad,
-                        OnDidFinishDocumentLoad)
     IPC_MESSAGE_HANDLER(FrameHostMsg_DidStopLoading, OnDidStopLoading)
     IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeLoadProgress,
                         OnDidChangeLoadProgress)
@@ -4054,7 +4052,7 @@
   return GetRenderViewHost()->GetDelegate()->IsPortal();
 }
 
-void RenderFrameHostImpl::OnDidFinishDocumentLoad() {
+void RenderFrameHostImpl::DidFinishDocumentLoad() {
   dom_content_loaded_ = true;
   delegate_->DOMContentLoaded(this);
 }
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 159fbcb..ced6c5b0 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1335,6 +1335,7 @@
   void DocumentOnLoadCompleted() override;
   void ForwardResourceTimingToParent(
       blink::mojom::ResourceTimingInfoPtr timing) override;
+  void DidFinishDocumentLoad() override;
 
  protected:
   friend class RenderFrameHostFactory;
@@ -1514,7 +1515,6 @@
       ax::mojom::Event event_to_fire);
   void OnAccessibilitySnapshotResponse(int callback_id,
                                        const AXContentTreeUpdate& snapshot);
-  void OnDidFinishDocumentLoad();
   void OnDidStopLoading();
   void OnDidChangeLoadProgress(double load_progress);
   void OnSelectionChanged(const base::string16& text,
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index 1b34a9b..3f171d2 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -37,6 +37,7 @@
 #include "content/public/common/content_features.h"
 #include "content/public/common/content_switches.h"
 #include "gpu/command_buffer/service/gpu_switches.h"
+#include "gpu/command_buffer/service/service_utils.h"
 #include "gpu/config/gpu_blocklist.h"
 #include "gpu/config/gpu_driver_bug_list.h"
 #include "gpu/config/gpu_driver_bug_workaround_type.h"
@@ -51,6 +52,7 @@
 #include "gpu/ipc/common/memory_stats.h"
 #include "gpu/ipc/host/gpu_memory_buffer_support.h"
 #include "gpu/ipc/host/shader_disk_cache.h"
+#include "gpu/vulkan/buildflags.h"
 #include "media/media_buildflags.h"
 #include "ui/base/ui_base_switches.h"
 #include "ui/gfx/switches.h"
@@ -275,14 +277,45 @@
 
 // Determines if SwiftShader is available as a fallback for WebGL.
 bool SwiftShaderAllowed() {
-#if !BUILDFLAG(ENABLE_SWIFTSHADER)
-  return false;
-#else
+#if BUILDFLAG(ENABLE_SWIFTSHADER)
   return !base::CommandLine::ForCurrentProcess()->HasSwitch(
       switches::kDisableSoftwareRasterizer);
+#else
+  return false;
 #endif
 }
 
+// These functions are never called on the Fuchsia path. Leave them undefined to
+// fix a compiler warning.
+#if !defined(OS_FUCHSIA)
+// Determines if Vulkan is available for the GPU process.
+bool VulkanAllowed() {
+#if BUILDFLAG(ENABLE_VULKAN)
+  // Vulkan will be enabled if certain flags are present.
+  // --enable-features=Vulkan will cause Vulkan to be used for compositing and
+  // rasterization. --use-vulkan by itself will initialize Vulkan so that it can
+  // be used for other purposes, such as WebGPU.
+  const base::CommandLine* command_line =
+      base::CommandLine::ForCurrentProcess();
+  gpu::GrContextType gr_context_type = gpu::gles2::ParseGrContextType();
+  gpu::VulkanImplementationName use_vulkan =
+      gpu::gles2::ParseVulkanImplementationName(command_line, gr_context_type);
+  return use_vulkan != gpu::VulkanImplementationName::kNone;
+#else
+  return false;
+#endif
+}
+
+// Determines if Metal is available for the GPU process.
+bool MetalAllowed() {
+#if defined(OS_MACOSX)
+  return base::FeatureList::IsEnabled(features::kMetal);
+#else
+  return false;
+#endif
+}
+#endif  // !OS_FUCHSIA
+
 // These values are logged to UMA. Entries should not be renumbered and numeric
 // values should never be reused. Please keep in sync with "CompositingMode" in
 // src/tools/metrics/histograms/enums.xml.
@@ -361,14 +394,18 @@
     // embedder. Falling back to SW compositing in that case is not supported.
 #if defined(OS_FUCHSIA)
     fallback_modes_.clear();
-#endif
+    fallback_modes_.push_back(gpu::GpuMode::HARDWARE_VULKAN);
+#else
+    fallback_modes_.push_back(gpu::GpuMode::HARDWARE_GL);
 
-    // TODO(sgilhuly): Add a way to differentiate between using hardware GL and
-    // hardware Vulkan.
-    fallback_modes_.push_back(gpu::GpuMode::HARDWARE_ACCELERATED);
+    if (VulkanAllowed())
+      fallback_modes_.push_back(gpu::GpuMode::HARDWARE_VULKAN);
+    if (MetalAllowed())
+      fallback_modes_.push_back(gpu::GpuMode::HARDWARE_METAL);
+#endif  // OS_FUCHSIA
   }
 
-  GoToNextGpuMode(/*is_fallback=*/false);
+  FallBackToNextGpuMode();
 }
 
 void GpuDataManagerImplPrivate::BlacklistWebGLForTesting() {
@@ -396,7 +433,9 @@
 
 bool GpuDataManagerImplPrivate::GpuAccessAllowed(std::string* reason) const {
   switch (gpu_mode_) {
-    case gpu::GpuMode::HARDWARE_ACCELERATED:
+    case gpu::GpuMode::HARDWARE_GL:
+    case gpu::GpuMode::HARDWARE_METAL:
+    case gpu::GpuMode::HARDWARE_VULKAN:
       return true;
     case gpu::GpuMode::SWIFTSHADER:
       DCHECK(SwiftShaderAllowed());
@@ -411,10 +450,10 @@
           if (base::CommandLine::ForCurrentProcess()->HasSwitch(
                   switches::kDisableGpu))
             *reason += "through commandline switch --disable-gpu.";
-          else if (hardware_disabled_by_fallback_)
-            *reason += "due to frequent crashes.";
-          else
+          else if (hardware_disabled_explicitly_)
             *reason += "in chrome://settings.";
+          else
+            *reason += "due to frequent crashes.";
         }
       }
       return false;
@@ -678,6 +717,19 @@
     const base::Optional<gpu::GpuFeatureInfo>&
         gpu_feature_info_for_hardware_gpu) {
   gpu_feature_info_ = gpu_feature_info;
+  // If Vulkan initialization fails, the GPU process can silently fallback to
+  // GL. Update the GPU mode for this case.
+#if !defined(OS_FUCHSIA)
+  if (gpu_mode_ == gpu::GpuMode::HARDWARE_VULKAN &&
+      gpu_feature_info_.status_values[gpu::GPU_FEATURE_TYPE_VULKAN] !=
+          gpu::GpuFeatureStatus::kGpuFeatureStatusEnabled) {
+    // TODO(sgilhuly): The GpuMode in GpuProcessHost will still be
+    // HARDWARE_VULKAN. This isn't a big issue right now because both GPU modes
+    // report to the same histogram. The first fallback will occur after 4
+    // crashes, instead of 3.
+    FallBackToNextGpuMode();
+  }
+#endif  // !OS_FUCHSIA
   if (!gpu_feature_info_for_hardware_gpu_.IsInitialized()) {
     if (gpu_feature_info_for_hardware_gpu.has_value()) {
       DCHECK(gpu_feature_info_for_hardware_gpu->IsInitialized());
@@ -712,8 +764,7 @@
 }
 
 bool GpuDataManagerImplPrivate::IsGpuCompositingDisabled() const {
-  return disable_gpu_compositing_ ||
-         gpu_mode_ != gpu::GpuMode::HARDWARE_ACCELERATED;
+  return disable_gpu_compositing_ || !HardwareAccelerationEnabled();
 }
 
 void GpuDataManagerImplPrivate::SetGpuCompositingDisabled() {
@@ -739,7 +790,9 @@
 
   std::string use_gl;
   switch (gpu_mode_) {
-    case gpu::GpuMode::HARDWARE_ACCELERATED:
+    case gpu::GpuMode::HARDWARE_GL:
+    case gpu::GpuMode::HARDWARE_METAL:
+    case gpu::GpuMode::HARDWARE_VULKAN:
       use_gl = browser_command_line->GetSwitchValueASCII(switches::kUseGL);
       break;
     case gpu::GpuMode::SWIFTSHADER:
@@ -810,15 +863,31 @@
                                            ->GetPlatformProperties()
                                            .message_pump_type_for_gpu;
 #endif
+
+#if defined(OS_MACOSX)
+  if (gpu_mode_ != gpu::GpuMode::HARDWARE_METAL)
+    gpu_preferences->enable_metal = false;
+#elif BUILDFLAG(ENABLE_VULKAN)
+  if (gpu_mode_ != gpu::GpuMode::HARDWARE_VULKAN)
+    gpu_preferences->use_vulkan = gpu::VulkanImplementationName::kNone;
+#endif
 }
 
 void GpuDataManagerImplPrivate::DisableHardwareAcceleration() {
-  if (gpu_mode_ == gpu::GpuMode::HARDWARE_ACCELERATED)
-    GoToNextGpuMode(/*is_fallback=*/false);
+  hardware_disabled_explicitly_ = true;
+  while (HardwareAccelerationEnabled())
+    FallBackToNextGpuMode();
 }
 
 bool GpuDataManagerImplPrivate::HardwareAccelerationEnabled() const {
-  return gpu_mode_ == gpu::GpuMode::HARDWARE_ACCELERATED;
+  switch (gpu_mode_) {
+    case gpu::GpuMode::HARDWARE_GL:
+    case gpu::GpuMode::HARDWARE_METAL:
+    case gpu::GpuMode::HARDWARE_VULKAN:
+      return true;
+    default:
+      return false;
+  }
 }
 
 void GpuDataManagerImplPrivate::OnGpuBlocked() {
@@ -1065,10 +1134,6 @@
 }
 
 void GpuDataManagerImplPrivate::FallBackToNextGpuMode() {
-  GoToNextGpuMode(/*is_fallback=*/true);
-}
-
-void GpuDataManagerImplPrivate::GoToNextGpuMode(bool is_fallback) {
   if (fallback_modes_.empty()) {
 #if defined(OS_ANDROID)
     FatalGpuProcessLaunchFailureOnBackground();
@@ -1076,20 +1141,12 @@
     IntentionallyCrashBrowserForUnusableGpuProcess();
   }
 
-  if (is_fallback && gpu_mode_ == gpu::GpuMode::HARDWARE_ACCELERATED)
-    hardware_disabled_by_fallback_ = true;
   gpu_mode_ = fallback_modes_.back();
   fallback_modes_.pop_back();
-  switch (gpu_mode_) {
-    case gpu::GpuMode::HARDWARE_ACCELERATED:
-    case gpu::GpuMode::SWIFTSHADER:
-      break;
-    case gpu::GpuMode::DISPLAY_COMPOSITOR:
-    case gpu::GpuMode::DISABLED:
-      OnGpuBlocked();
-      break;
-    case gpu::GpuMode::UNKNOWN:
-      NOTREACHED();
+  DCHECK_NE(gpu_mode_, gpu::GpuMode::UNKNOWN);
+  if (gpu_mode_ == gpu::GpuMode::DISPLAY_COMPOSITOR ||
+      gpu_mode_ == gpu::GpuMode::DISABLED) {
+    OnGpuBlocked();
   }
 }
 
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h
index a1385ab1..2541291 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.h
+++ b/content/browser/gpu/gpu_data_manager_impl_private.h
@@ -191,8 +191,6 @@
   void RequestDxDiagNodeData();
   void RequestGpuSupportedRuntimeVersion(bool delayed);
 
-  void GoToNextGpuMode(bool is_fallback);
-
   void RecordCompositingMode();
 
   GpuDataManagerImpl* const owner_;
@@ -229,8 +227,9 @@
   // Order of gpu process fallback states, used as a stack.
   std::vector<gpu::GpuMode> fallback_modes_;
 
-  // Used to tell if the gpu was disabled due to process crashes.
-  bool hardware_disabled_by_fallback_ = false;
+  // Used to tell if the gpu was disabled by an explicit call to
+  // DisableHardwareAcceleration(), rather than by fallback.
+  bool hardware_disabled_explicitly_ = false;
 
   // We disable histogram stuff in testing, especially in unit tests because
   // they cause random failures.
diff --git a/content/browser/gpu/gpu_data_manager_impl_private_unittest.cc b/content/browser/gpu/gpu_data_manager_impl_private_unittest.cc
index 63100bd1..cc2d043 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private_unittest.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/command_line.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
@@ -15,7 +16,9 @@
 #include "content/browser/gpu/gpu_data_manager_testing_entry_enums_autogen.h"
 #include "content/public/browser/gpu_data_manager_observer.h"
 #include "content/public/common/content_switches.h"
+#include "gpu/command_buffer/service/gpu_switches.h"
 #include "gpu/config/gpu_feature_type.h"
+#include "gpu/config/gpu_finch_features.h"
 #include "gpu/config/gpu_info.h"
 #include "gpu/config/gpu_switches.h"
 #include "gpu/ipc/common/memory_stats.h"
@@ -54,7 +57,7 @@
   return GURL("http://bar.com/");
 }
 
-}  // namespace anonymous
+}  // namespace
 
 class GpuDataManagerImplPrivateTest : public testing::Test {
  public:
@@ -256,7 +259,7 @@
 #if !defined(OS_FUCHSIA)
 TEST_F(GpuDataManagerImplPrivateTest, FallbackToSwiftShader) {
   ScopedGpuDataManagerImplPrivate manager;
-  EXPECT_EQ(gpu::GpuMode::HARDWARE_ACCELERATED, manager->GetGpuMode());
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_GL, manager->GetGpuMode());
 
   manager->FallBackToNextGpuMode();
   EXPECT_EQ(gpu::GpuMode::SWIFTSHADER, manager->GetGpuMode());
@@ -266,7 +269,7 @@
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       switches::kDisableSoftwareRasterizer);
   ScopedGpuDataManagerImplPrivate manager;
-  EXPECT_EQ(gpu::GpuMode::HARDWARE_ACCELERATED, manager->GetGpuMode());
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_GL, manager->GetGpuMode());
 
   manager->FallBackToNextGpuMode();
 #if defined(OS_WIN)
@@ -285,4 +288,71 @@
 }
 #endif  // !OS_ANDROID && !OS_CHROMEOS
 
+#if defined(OS_MACOSX)
+TEST_F(GpuDataManagerImplPrivateTest, FallbackFromMetalToGL) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(features::kMetal);
+  ScopedGpuDataManagerImplPrivate manager;
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_METAL, manager->GetGpuMode());
+
+  manager->FallBackToNextGpuMode();
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_GL, manager->GetGpuMode());
+}
+#endif  // OS_MACOSX
+
+#if BUILDFLAG(ENABLE_VULKAN)
+TEST_F(GpuDataManagerImplPrivateTest, GpuStartsWithUseVulkanFlag) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      switches::kUseVulkan, switches::kVulkanImplementationNameNative);
+  ScopedGpuDataManagerImplPrivate manager;
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_VULKAN, manager->GetGpuMode());
+}
+
+TEST_F(GpuDataManagerImplPrivateTest, GpuStartsWithVulkanFeatureFlag) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(features::kVulkan);
+  ScopedGpuDataManagerImplPrivate manager;
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_VULKAN, manager->GetGpuMode());
+}
+
+// Don't run these tests on Fuchsia, which doesn't support falling back from
+// Vulkan.
+#if !defined(OS_FUCHSIA)
+TEST_F(GpuDataManagerImplPrivateTest, FallbackFromVulkanToGL) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(features::kVulkan);
+  ScopedGpuDataManagerImplPrivate manager;
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_VULKAN, manager->GetGpuMode());
+
+  manager->FallBackToNextGpuMode();
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_GL, manager->GetGpuMode());
+}
+
+TEST_F(GpuDataManagerImplPrivateTest, VulkanInitializationFails) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(features::kVulkan);
+  ScopedGpuDataManagerImplPrivate manager;
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_VULKAN, manager->GetGpuMode());
+
+  // Simulate GPU process initialization completing with Vulkan unavailable.
+  gpu::GpuFeatureInfo gpu_feature_info;
+  for (auto& status : gpu_feature_info.status_values)
+    status = gpu::GpuFeatureStatus::kGpuFeatureStatusEnabled;
+  gpu_feature_info.status_values[gpu::GpuFeatureType::GPU_FEATURE_TYPE_VULKAN] =
+      gpu::GpuFeatureStatus::kGpuFeatureStatusDisabled;
+  manager->UpdateGpuFeatureInfo(gpu_feature_info, base::nullopt);
+
+  // GpuDataManager should update its mode to be GL.
+  EXPECT_EQ(gpu::GpuMode::HARDWARE_GL, manager->GetGpuMode());
+
+  // The first fallback should go to SwiftShader on platforms where fallback to
+  // software is allowed.
+#if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+  manager->FallBackToNextGpuMode();
+  EXPECT_EQ(gpu::GpuMode::SWIFTSHADER, manager->GetGpuMode());
+#endif  // !OS_ANDROID && !OS_CHROMEOS
+}
+#endif  // !OS_FUCHSIA
+#endif  // BUILDFLAG(ENABLE_VULKAN)
+
 }  // namespace content
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index 20a2cae..e4a4b96 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -123,7 +123,10 @@
 // Returns the UMA histogram name for the given GPU mode.
 const char* GetProcessLifetimeUmaName(gpu::GpuMode gpu_mode) {
   switch (gpu_mode) {
-    case gpu::GpuMode::HARDWARE_ACCELERATED:
+    // TODO(sgilhuly): Add separate histograms for the different hardware modes.
+    case gpu::GpuMode::HARDWARE_GL:
+    case gpu::GpuMode::HARDWARE_METAL:
+    case gpu::GpuMode::HARDWARE_VULKAN:
       return kProcessLifetimeEventsHardwareAccelerated;
     case gpu::GpuMode::SWIFTSHADER:
       return kProcessLifetimeEventsSwiftShader;
diff --git a/content/browser/web_contents/web_contents_view_android.cc b/content/browser/web_contents/web_contents_view_android.cc
index 8c293cd..d7ed6bc5 100644
--- a/content/browser/web_contents/web_contents_view_android.cc
+++ b/content/browser/web_contents/web_contents_view_android.cc
@@ -480,6 +480,7 @@
 void WebContentsViewAndroid::OnPerformDrop(DropData* drop_data,
                                            const gfx::PointF& location,
                                            const gfx::PointF& screen_location) {
+  web_contents_->Focus();
   web_contents_->GetRenderViewHost()->GetWidget()->FilterDropData(drop_data);
   web_contents_->GetRenderViewHost()->GetWidget()->DragTargetDrop(
       *drop_data, location, screen_location, 0);
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index c87d192..849b94a 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -1535,6 +1535,8 @@
                                        const gfx::PointF& client_pt,
                                        const gfx::PointF& screen_pt,
                                        int key_modifiers) {
+  web_contents_->Focus();
+
   target_rwh->DragTargetDrop(drop_data, client_pt, screen_pt, key_modifiers);
   if (drag_dest_delegate_)
     drag_dest_delegate_->OnDrop();
diff --git a/content/browser/web_contents/web_drag_dest_mac.mm b/content/browser/web_contents/web_drag_dest_mac.mm
index 59456ed..b35ff2e 100644
--- a/content/browser/web_contents/web_drag_dest_mac.mm
+++ b/content/browser/web_contents/web_drag_dest_mac.mm
@@ -313,6 +313,7 @@
 
   _currentRVH = NULL;
 
+  _webContents->Focus();
   targetRWH->DragTargetDrop(*_dropDataFiltered, transformedPt,
                             info->location_in_screen, GetModifierFlags());
 
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 6599a57..3445ee3 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -782,10 +782,6 @@
 // detached from the DOM.
 IPC_MESSAGE_ROUTED0(FrameHostMsg_Detach)
 
-// Notifies the browser that a document has been loaded.
-IPC_MESSAGE_ROUTED0(FrameHostMsg_DidFinishDocumentLoad)
-
-
 // Sent when the renderer is done loading a page.
 IPC_MESSAGE_ROUTED0(FrameHostMsg_DidStopLoading)
 
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
index 1f1f4f5..19d8ae4 100644
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
@@ -90,20 +90,25 @@
     private boolean mIsHovering;
     private int mLastHoverId = View.NO_ID;
     protected int mCurrentRootId;
-    private int[] mTempLocation = new int[2];
     protected ViewGroup mView;
     private boolean mUserHasTouchExplored;
     private boolean mPendingScrollToMakeNodeVisible;
     private boolean mNotifyFrameInfoInitializedCalled;
     private boolean mAccessibilityEnabledForTesting;
     private int mSelectionGranularity;
-    private int mSelectionStartIndex;
-    private int mSelectionEndIndex;
     protected int mAccessibilityFocusId;
     protected int mSelectionNodeId;
     private Runnable mSendWindowContentChangedRunnable;
     private View mAutofillPopupView;
     private CaptioningController mCaptioningController;
+    private boolean mIsCurrentlyExtendingSelection;
+    private int mSelectionStart;
+    private int mCursorIndex;
+
+    // Whether or not the next selection event should be fired. We only want to sent one traverse
+    // and one selection event per granularity move, this ensures no double events while still
+    // sending events when the user is using other assistive technology (e.g. external keyboard)
+    private boolean mSuppressNextSelectionEvent;
 
     // Whether native accessibility is allowed.
     private boolean mNativeAccessibilityAllowed;
@@ -692,19 +697,20 @@
 
     private void setGranularityAndUpdateSelection(int granularity) {
         mSelectionGranularity = granularity;
-        if (mSelectionGranularity == NO_GRANULARITY_SELECTED) {
-            mSelectionStartIndex = -1;
-            mSelectionEndIndex = -1;
-        }
+
         if (WebContentsAccessibilityImplJni.get().isEditableText(
                     mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId)
                 && WebContentsAccessibilityImplJni.get().isFocused(
                         mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId)) {
-            mSelectionStartIndex =
-                    WebContentsAccessibilityImplJni.get().getEditableTextSelectionStart(
-                            mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId);
-            mSelectionEndIndex = WebContentsAccessibilityImplJni.get().getEditableTextSelectionEnd(
-                    mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId);
+            // If selection/cursor are "unassigned" (e.g. first user swipe), then assign as needed
+            if (mSelectionStart == -1 || mCursorIndex == -1) {
+                mSelectionStart =
+                        WebContentsAccessibilityImplJni.get().getEditableTextSelectionStart(
+                                mNativeObj, WebContentsAccessibilityImpl.this,
+                                mAccessibilityFocusId);
+                mCursorIndex = WebContentsAccessibilityImplJni.get().getEditableTextSelectionEnd(
+                        mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId);
+            }
         }
     }
 
@@ -712,10 +718,10 @@
         if (virtualViewId != mSelectionNodeId) return false;
         setGranularityAndUpdateSelection(granularity);
 
-        // This calls finishGranularityMove when it's done.
+        // This calls finishGranularityMoveNext when it's done.
         return WebContentsAccessibilityImplJni.get().nextAtGranularity(mNativeObj,
                 WebContentsAccessibilityImpl.this, mSelectionGranularity, extendSelection,
-                virtualViewId, mSelectionStartIndex);
+                virtualViewId, mCursorIndex);
     }
 
     private boolean previousAtGranularity(
@@ -723,19 +729,20 @@
         if (virtualViewId != mSelectionNodeId) return false;
         setGranularityAndUpdateSelection(granularity);
 
-        // This calls finishGranularityMove when it's done.
+        // This calls finishGranularityMovePrevious when it's done.
         return WebContentsAccessibilityImplJni.get().previousAtGranularity(mNativeObj,
                 WebContentsAccessibilityImpl.this, mSelectionGranularity, extendSelection,
-                virtualViewId, mSelectionEndIndex);
+                virtualViewId, mCursorIndex);
     }
 
     @CalledByNative
-    private void finishGranularityMove(String text, boolean extendSelection, int itemStartIndex,
-            int itemEndIndex, boolean forwards) {
+    private void finishGranularityMoveNext(
+            String text, boolean extendSelection, int itemStartIndex, int itemEndIndex) {
         // Prepare to send both a selection and a traversal event in sequence.
         AccessibilityEvent selectionEvent = buildAccessibilityEvent(
                 mSelectionNodeId, AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED);
         if (selectionEvent == null) return;
+
         AccessibilityEvent traverseEvent = buildAccessibilityEvent(mSelectionNodeId,
                 AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY);
         if (traverseEvent == null) {
@@ -743,55 +750,116 @@
             return;
         }
 
-        // Update the cursor or selection based on the traversal. If it's an editable
-        // text node, set the real editing cursor too.
-        if (forwards) {
-            mSelectionEndIndex = itemEndIndex;
+        // Build selection event dependent on whether user is extending selection or not
+        if (extendSelection) {
+            // User started selecting, set the selection start point (only set once per selection)
+            if (!mIsCurrentlyExtendingSelection) {
+                mIsCurrentlyExtendingSelection = true;
+                mSelectionStart = itemStartIndex;
+            }
+
+            selectionEvent.setFromIndex(mSelectionStart);
+            selectionEvent.setToIndex(itemEndIndex);
+
         } else {
-            mSelectionEndIndex = itemStartIndex;
+            // User is no longer selecting, or wasn't originally, reset values
+            mIsCurrentlyExtendingSelection = false;
+            mSelectionStart = -1;
+
+            // Set selection to/from indices to new cursor position, itemEndIndex with forwards nav
+            selectionEvent.setFromIndex(itemEndIndex);
+            selectionEvent.setToIndex(itemEndIndex);
         }
-        if (!extendSelection) {
-            mSelectionStartIndex = mSelectionEndIndex;
+
+        // Moving forwards, cursor is now at end of granularity move (itemEndIndex)
+        mCursorIndex = itemEndIndex;
+        selectionEvent.setItemCount(text.length());
+
+        // Call back to native code to update selection
+        setSelection(selectionEvent);
+
+        // Build traverse event, set appropriate action
+        traverseEvent.setFromIndex(itemStartIndex);
+        traverseEvent.setToIndex(itemEndIndex);
+        traverseEvent.setItemCount(text.length());
+        traverseEvent.setMovementGranularity(mSelectionGranularity);
+        traverseEvent.setContentDescription(text);
+        traverseEvent.setAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
+
+        mView.requestSendAccessibilityEvent(mView, selectionEvent);
+        mView.requestSendAccessibilityEvent(mView, traverseEvent);
+
+        // Suppress the next event since we have already sent traverse and selection for this move
+        mSuppressNextSelectionEvent = true;
+    }
+
+    @CalledByNative
+    private void finishGranularityMovePrevious(
+            String text, boolean extendSelection, int itemStartIndex, int itemEndIndex) {
+        // Prepare to send both a selection and a traversal event in sequence.
+        AccessibilityEvent selectionEvent = buildAccessibilityEvent(
+                mSelectionNodeId, AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED);
+        if (selectionEvent == null) return;
+
+        AccessibilityEvent traverseEvent = buildAccessibilityEvent(mSelectionNodeId,
+                AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY);
+        if (traverseEvent == null) {
+            selectionEvent.recycle();
+            return;
         }
+
+        // Build selection event dependent on whether user is extending selection or not
+        if (extendSelection) {
+            // User started selecting, set the selection start point (only set once per selection)
+            if (!mIsCurrentlyExtendingSelection) {
+                mIsCurrentlyExtendingSelection = true;
+                mSelectionStart = itemEndIndex;
+            }
+
+            selectionEvent.setFromIndex(mSelectionStart);
+            selectionEvent.setToIndex(itemStartIndex);
+
+        } else {
+            // User is no longer selecting, or wasn't originally, reset values
+            mIsCurrentlyExtendingSelection = false;
+            mSelectionStart = -1;
+
+            // Set selection to/from indices to new cursor position, itemStartIndex with back nav
+            selectionEvent.setFromIndex(itemStartIndex);
+            selectionEvent.setToIndex(itemStartIndex);
+        }
+
+        // Moving backwards, cursor is now at the start of the granularity move (itemStartIndex)
+        mCursorIndex = itemStartIndex;
+        selectionEvent.setItemCount(text.length());
+
+        // Call back to native code to update selection
+        setSelection(selectionEvent);
+
+        // Build traverse event, set appropriate action
+        traverseEvent.setFromIndex(itemStartIndex);
+        traverseEvent.setToIndex(itemEndIndex);
+        traverseEvent.setItemCount(text.length());
+        traverseEvent.setMovementGranularity(mSelectionGranularity);
+        traverseEvent.setContentDescription(text);
+        traverseEvent.setAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
+
+        mView.requestSendAccessibilityEvent(mView, selectionEvent);
+        mView.requestSendAccessibilityEvent(mView, traverseEvent);
+
+        // Suppress the next event since we have already sent traverse and selection for this move
+        mSuppressNextSelectionEvent = true;
+    }
+
+    private void setSelection(AccessibilityEvent selectionEvent) {
         if (WebContentsAccessibilityImplJni.get().isEditableText(
                     mNativeObj, WebContentsAccessibilityImpl.this, mSelectionNodeId)
                 && WebContentsAccessibilityImplJni.get().isFocused(
                         mNativeObj, WebContentsAccessibilityImpl.this, mSelectionNodeId)) {
             WebContentsAccessibilityImplJni.get().setSelection(mNativeObj,
-                    WebContentsAccessibilityImpl.this, mSelectionNodeId, mSelectionStartIndex,
-                    mSelectionEndIndex);
+                    WebContentsAccessibilityImpl.this, mSelectionNodeId,
+                    selectionEvent.getFromIndex(), selectionEvent.getToIndex());
         }
-
-        // The selection event's "from" and "to" indices are just a cursor at the focus
-        // end of the movement, or a selection if extendSelection is true.
-        selectionEvent.setFromIndex(mSelectionStartIndex);
-        selectionEvent.setToIndex(mSelectionStartIndex);
-        selectionEvent.setItemCount(text.length());
-
-        // The traverse event's "from" and "to" indices surround the item (e.g. the word,
-        // etc.) with no whitespace.
-        if (forwards
-                && WebContentsAccessibilityImplJni.get().isEditableText(
-                        mNativeObj, WebContentsAccessibilityImpl.this, mSelectionNodeId)) {
-            traverseEvent.setFromIndex(itemStartIndex - 1);
-            traverseEvent.setToIndex(itemEndIndex - 1);
-        } else {
-            traverseEvent.setFromIndex(itemStartIndex);
-            traverseEvent.setToIndex(itemEndIndex);
-        }
-        traverseEvent.setItemCount(text.length());
-        traverseEvent.setMovementGranularity(mSelectionGranularity);
-        traverseEvent.setContentDescription(text);
-
-        // The traverse event needs to set its associated action that triggered it.
-        if (forwards) {
-            traverseEvent.setAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
-        } else {
-            traverseEvent.setAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
-        }
-
-        mView.requestSendAccessibilityEvent(mView, selectionEvent);
-        mView.requestSendAccessibilityEvent(mView, traverseEvent);
     }
 
     private boolean scrollForward(int virtualViewId) {
@@ -829,9 +897,10 @@
         // focus is on the edit field. Granularity move needs to know where the input focus is.
         mSelectionNodeId = mAccessibilityFocusId;
         mSelectionGranularity = NO_GRANULARITY_SELECTED;
-        mSelectionStartIndex = -1;
-        mSelectionEndIndex = WebContentsAccessibilityImplJni.get().getTextLength(
-                mNativeObj, WebContentsAccessibilityImpl.this, newAccessibilityFocusId);
+        mIsCurrentlyExtendingSelection = false;
+        mSelectionStart = -1;
+        mCursorIndex = -1;
+        mSuppressNextSelectionEvent = false;
 
         if (WebContentsAccessibilityImplJni.get().isAutofillPopupNode(
                     mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId)) {
@@ -893,6 +962,13 @@
             return;
         }
 
+        // Do not send an event when we want to suppress this event, update flag for next event
+        if (mSuppressNextSelectionEvent
+                && eventType == AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED) {
+            mSuppressNextSelectionEvent = false;
+            return;
+        }
+
         AccessibilityEvent event = buildAccessibilityEvent(virtualViewId, eventType);
         if (event != null) {
             mView.requestSendAccessibilityEvent(mView, event);
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 09b30b4..6c9f3cb 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4630,8 +4630,6 @@
 void RenderFrameImpl::DidFinishDocumentLoad() {
   TRACE_EVENT1("navigation,benchmark,rail",
                "RenderFrameImpl::didFinishDocumentLoad", "id", routing_id_);
-  Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_));
-
   for (auto& observer : observers_)
     observer.DidFinishDocumentLoad();
 
diff --git a/content/test/data/cross_site_iframe_factory.html b/content/test/data/cross_site_iframe_factory.html
index 2116189..959f45a 100644
--- a/content/test/data/cross_site_iframe_factory.html
+++ b/content/test/data/cross_site_iframe_factory.html
@@ -161,6 +161,20 @@
 }
 
 /**
+ * Determines whether or not text should be rendered by checking whether
+ * "no-text-render" is among the list of attributes.
+ */
+function shouldRenderText(attributes) {
+  for (var attribute of attributes) {
+    if (attribute == "no-text-render") {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+/**
  * Simple recursive layout heuristic, since frames can't size themselves.
  * This scribbles .layoutX and .layoutY properties into |tree|.
  */
@@ -203,9 +217,15 @@
   var frameTree = TreeParserUtil.parse(queryString);
   var currentSite = canonicalizeSiteAndPort(frameTree.value, "");
 
+  // Render text unless the attribute "no-text-render" is specified, in which
+  // case load some bytes anyway in order to trigger histogram recording for
+  // ad metrics tests.
+  if (shouldRenderText(frameTree.attributes)) {
+      document.getElementById('siteNameHeading').appendChild(
+          document.createTextNode(currentSite));
+  }
+
   // Apply style to the current document.
-  document.getElementById('siteNameHeading').appendChild(
-      document.createTextNode(currentSite));
   document.body.style.backgroundColor = backgroundColorForSite(currentSite);
 
   // Determine how big the children should be (using a very rough heuristic).
@@ -228,6 +248,7 @@
     iframe.style.borderColor = borderColorForSite(siteAndPort);
     iframe.width = frameTree.children[i].layoutX;
     iframe.height = frameTree.children[i].layoutY;
+
     // Apply any additional attributes.
     applyIFrameOptions(iframe, frameTree.children[i].attributes);
 
diff --git a/content/test/gpu/gpu_tests/pixel_test_pages.py b/content/test/gpu/gpu_tests/pixel_test_pages.py
index 9b3f3a5..8517edf 100644
--- a/content/test/gpu/gpu_tests/pixel_test_pages.py
+++ b/content/test/gpu/gpu_tests/pixel_test_pages.py
@@ -157,20 +157,20 @@
         expected_colors=[
           {
             'comment': 'inside original div, orange',
-            'location': [0, 0],
-            'size': [100, 99],
+            'location': [5, 5],
+            'size': [90, 90],
             'color': [255, 128, 0],
           },
           {
             'comment': 'outside both div and reflection, in between, white',
-            'location': [0, 101],
-            'size': [100, 98],
+            'location': [5, 105],
+            'size': [90, 90],
             'color': [255, 255, 255],
           },
           {
             'comment': 'inside reflection, orange',
-            'location': [0, 201],
-            'size': [100, 99],
+            'location': [5, 205],
+            'size': [90, 90],
             'color': [255, 128, 0],
           }
         ]),
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc
index a3daaa38..702d4f4 100644
--- a/content/test/test_render_frame_host.cc
+++ b/content/test/test_render_frame_host.cc
@@ -642,7 +642,7 @@
             GetRenderViewHost()->GetRoutingID(),
             /* uses_temporary_zoom_level */ false));
 
-    OnMessageReceived(FrameHostMsg_DidFinishDocumentLoad(GetRoutingID()));
+    DidFinishDocumentLoad();
 
     DocumentOnLoadCompleted();
 
diff --git a/docs/mac/triage.md b/docs/mac/triage.md
index 4302aec..3082abf 100644
--- a/docs/mac/triage.md
+++ b/docs/mac/triage.md
@@ -155,6 +155,6 @@
 
 [unconfirmed]: https://bugs.chromium.org/p/chromium/issues/list?q=OS%3DMac%20status%3AUnconfirmed%20-component%3ABlink%2CEnterprise%2CInternals%3ENetwork%2CPlatform%3EDevtools%2CServices%3ESync&can=2
 [untriaged-m]: https://bugs.chromium.org/p/chromium/issues/list?q=has%3AMac%20status%3AUntriaged&can=2
-[untriaged-c]: https://bugs.chromium.org/p/chromium/issues/list?q=OS%3DMac%20-OS%3DWindows%2CLinux%2CChrome%2CAndroid%2CiOS%20status%3AUntriaged%20-component%3AAdmin%2CBlink%2CInfra%2CInternals%3EHeadless%2CInternals%3ENetwork%2CInternals%3EPlugins%3EPDF%2CInternals%3EPrinting%2CInternals%3ESkia%2CInternals%3EViews%2CIO%3EBluetooth%2CIO%3EUSB%2CPlatform%2CServices%3EChromoting%2CTest%3ETelemetry%2CUI%3EBrowser%3EWebUI&can=2
+[untriaged-c]: https://bugs.chromium.org/p/chromium/issues/list?q=OS%3DMac%20-OS%3DWindows%2CLinux%2CChrome%2CAndroid%2CiOS%20status%3AUntriaged%20-component%3AAdmin%2CBlink%2CInfra%2CInternals%3EHeadless%2CInternals%3ENetwork%2CInternals%3EPlugins%3EPDF%2CInternals%3EPrinting%2CInternals%3ESkia%2CInternals%3EUpdater%2CInternals%3EViews%2CIO%3EBluetooth%2CIO%3EUSB%2CPlatform%2CServices%3EChromoting%2CTest%3ETelemetry%2CUI%3EBrowser%3EWebUI&can=2
 [available]: https://bugs.chromium.org/p/chromium/issues/list?q=has%3AMac%20status%3AAvailable&can=2
 [assigned]: https://bugs.chromium.org/p/chromium/issues/list?q=has%3AMac%20status%3AAssigned&can=2
diff --git a/extensions/browser/url_loader_factory_manager.cc b/extensions/browser/url_loader_factory_manager.cc
index ed4852e..7a46082 100644
--- a/extensions/browser/url_loader_factory_manager.cc
+++ b/extensions/browser/url_loader_factory_manager.cc
@@ -262,6 +262,24 @@
     allowlist.push_back(std::string(hash, kHashedExtensionIdLength));
   }
 
+  // Append extensions from the field trial param.
+  std::string field_trial_arg = base::GetFieldTrialParamValueByFeature(
+      extensions_features::kCorbAllowlistAlsoAppliesToOorCors,
+      extensions_features::kCorbAllowlistAlsoAppliesToOorCorsParamName);
+  field_trial_arg = base::ToUpperASCII(field_trial_arg);
+  std::vector<std::string> field_trial_allowlist = base::SplitString(
+      field_trial_arg, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+  base::EraseIf(field_trial_allowlist, [](const std::string& hash) {
+    // Filter out invalid data from |field_trial_allowlist|.
+    if (IsValidHashedExtensionId(hash))
+      return false;  // Don't remove.
+
+    LOG(ERROR) << "Invalid extension hash: " << hash;
+    return true;  // Remove.
+  });
+  std::move(field_trial_allowlist.begin(), field_trial_allowlist.end(),
+            std::back_inserter(allowlist));
+
   return allowlist;
 }
 
diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc
index 1cffd0e5..d25fe81 100644
--- a/extensions/common/extension_features.cc
+++ b/extensions/common/extension_features.cc
@@ -36,6 +36,8 @@
 // https://www.chromium.org/Home/chromium-security/extension-content-script-fetches
 const base::Feature kCorbAllowlistAlsoAppliesToOorCors{
     "CorbAllowlistAlsoAppliesToOorCors", base::FEATURE_DISABLED_BY_DEFAULT};
+const char kCorbAllowlistAlsoAppliesToOorCorsParamName[] =
+    "AllowlistForCorbAndCors";
 
 // Forces requests to go through WebRequestProxyingURLLoaderFactory.
 const base::Feature kForceWebRequestProxyForTest{
diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h
index 4be1737f..672ef2d 100644
--- a/extensions/common/extension_features.h
+++ b/extensions/common/extension_features.h
@@ -19,6 +19,8 @@
 extern const char kNeutralMessage[];
 
 extern const base::Feature kCorbAllowlistAlsoAppliesToOorCors;
+extern const char kCorbAllowlistAlsoAppliesToOorCorsParamName[];
+
 extern const base::Feature kForceWebRequestProxyForTest;
 
 }  // namespace extensions_features
diff --git a/gpu/command_buffer/service/service_utils.cc b/gpu/command_buffer/service/service_utils.cc
index f6da770..3f32067 100644
--- a/gpu/command_buffer/service/service_utils.cc
+++ b/gpu/command_buffer/service/service_utils.cc
@@ -8,6 +8,7 @@
 
 #include "base/command_line.h"
 #include "base/strings/string_number_conversions.h"
+#include "build/build_config.h"
 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
 #include "gpu/command_buffer/service/context_group.h"
 #include "gpu/command_buffer/service/gpu_switches.h"
@@ -159,37 +160,11 @@
       command_line->HasSwitch(switches::kIgnoreGpuBlacklist);
   gpu_preferences.enable_webgpu =
       command_line->HasSwitch(switches::kEnableUnsafeWebGPU);
-  if (command_line->HasSwitch(switches::kUseVulkan)) {
-    auto value = command_line->GetSwitchValueASCII(switches::kUseVulkan);
-    if (value.empty() || value == switches::kVulkanImplementationNameNative) {
-      gpu_preferences.use_vulkan = VulkanImplementationName::kForcedNative;
-    } else if (value == switches::kVulkanImplementationNameSwiftshader) {
-      gpu_preferences.use_vulkan = VulkanImplementationName::kSwiftshader;
-    } else {
-      gpu_preferences.use_vulkan = VulkanImplementationName::kNone;
-    }
-  }
+  gpu_preferences.gr_context_type = ParseGrContextType();
+  gpu_preferences.use_vulkan = ParseVulkanImplementationName(
+      command_line, gpu_preferences.gr_context_type);
   gpu_preferences.disable_vulkan_surface =
       command_line->HasSwitch(switches::kDisableVulkanSurface);
-#if defined(OS_MACOSX)
-  gpu_preferences.gr_context_type =
-      base::FeatureList::IsEnabled(features::kMetal) ? GrContextType::kMetal
-                                                     : GrContextType::kGL;
-#else
-  gpu_preferences.gr_context_type =
-      base::FeatureList::IsEnabled(features::kVulkan) ? GrContextType::kVulkan
-                                                      : GrContextType::kGL;
-#endif
-#if BUILDFLAG(SKIA_USE_DAWN)
-  if (base::FeatureList::IsEnabled(features::kSkiaDawn))
-    gpu_preferences.gr_context_type = GrContextType::kDawn;
-#endif
-  if (gpu_preferences.gr_context_type == GrContextType::kVulkan &&
-      gpu_preferences.use_vulkan == gpu::VulkanImplementationName::kNone) {
-    // If gpu_preferences.use_vulkan is not set from --use-vulkan, the native
-    // vulkan implementation will be used by default.
-    gpu_preferences.use_vulkan = gpu::VulkanImplementationName::kNative;
-  }
 
   gpu_preferences.enable_gpu_blocked_time_metric =
       command_line->HasSwitch(switches::kEnableGpuBlockedTime);
@@ -197,5 +172,38 @@
   return gpu_preferences;
 }
 
+GrContextType ParseGrContextType() {
+#if BUILDFLAG(SKIA_USE_DAWN)
+  if (base::FeatureList::IsEnabled(features::kSkiaDawn))
+    return GrContextType::kDawn;
+#endif
+#if defined(OS_MACOSX)
+  return base::FeatureList::IsEnabled(features::kMetal) ? GrContextType::kMetal
+                                                        : GrContextType::kGL;
+#else
+  return base::FeatureList::IsEnabled(features::kVulkan)
+             ? GrContextType::kVulkan
+             : GrContextType::kGL;
+#endif
+}
+
+VulkanImplementationName ParseVulkanImplementationName(
+    const base::CommandLine* command_line,
+    GrContextType gr_context_type) {
+  if (command_line->HasSwitch(switches::kUseVulkan)) {
+    auto value = command_line->GetSwitchValueASCII(switches::kUseVulkan);
+    if (value.empty() || value == switches::kVulkanImplementationNameNative) {
+      return VulkanImplementationName::kForcedNative;
+    } else if (value == switches::kVulkanImplementationNameSwiftshader) {
+      return VulkanImplementationName::kSwiftshader;
+    }
+  }
+  // If the vulkan implementation is not set from --use-vulkan, the native
+  // vulkan implementation will be used by default.
+  return gr_context_type == GrContextType::kVulkan
+             ? VulkanImplementationName::kNative
+             : VulkanImplementationName::kNone;
+}
+
 }  // namespace gles2
 }  // namespace gpu
diff --git a/gpu/command_buffer/service/service_utils.h b/gpu/command_buffer/service/service_utils.h
index 1d5d523..76a802e4 100644
--- a/gpu/command_buffer/service/service_utils.h
+++ b/gpu/command_buffer/service/service_utils.h
@@ -6,12 +6,12 @@
 #define GPU_COMMAND_BUFFER_SERVICE_SERVICE_UTILS_H_
 
 #include "base/command_line.h"
+#include "gpu/config/gpu_preferences.h"
 #include "gpu/gpu_gles2_export.h"
 #include "ui/gl/gl_context.h"
 
 namespace gpu {
 struct ContextCreationAttribs;
-struct GpuPreferences;
 
 namespace gles2 {
 class ContextGroup;
@@ -34,6 +34,17 @@
 GPU_GLES2_EXPORT GpuPreferences
 ParseGpuPreferences(const base::CommandLine* command_line);
 
+// Determine which Skia GrContext backend will be used for GPU compositing and
+// rasterization (if enabled) by checking the feature flags for Vulkan and
+// Metal. If they are not enabled, default to GL.
+GPU_GLES2_EXPORT GrContextType ParseGrContextType();
+
+// Parse the value of --use-vulkan from the command line. If unspecified and
+// a Vulkan GrContext is going to be used, default to the native implementation.
+GPU_GLES2_EXPORT VulkanImplementationName
+ParseVulkanImplementationName(const base::CommandLine* command_line,
+                              GrContextType gr_context_type);
+
 }  // namespace gles2
 }  // namespace gpu
 
diff --git a/gpu/config/gpu_mode.h b/gpu/config/gpu_mode.h
index 368be7a..893df013 100644
--- a/gpu/config/gpu_mode.h
+++ b/gpu/config/gpu_mode.h
@@ -10,8 +10,12 @@
 // What the GPU process is running for.
 enum class GpuMode {
   UNKNOWN,
-  // The GPU process is running with hardare acceleration.
-  HARDWARE_ACCELERATED,
+  // The GPU process is running with hardware acceleration, using only GL.
+  HARDWARE_GL,
+  // The GPU process is running with hardware acceleration, using Metal and GL.
+  HARDWARE_METAL,
+  // The GPU process is running with hardware acceleration, using Vulkan and GL.
+  HARDWARE_VULKAN,
   // The GPU process is running for SwiftShader WebGL.
   SWIFTSHADER,
   // The GPU process is running for the display compositor (OOP-D only).
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg
index 42e0ecd..acd6abc0 100644
--- a/infra/config/generated/luci-scheduler.cfg
+++ b/infra/config/generated/luci-scheduler.cfg
@@ -320,6 +320,7 @@
   triggers: "android-cronet-x86-rel"
   triggers: "android-archive-dbg"
   triggers: "android-incremental-dbg"
+  triggers: "android-lollipop-arm-rel"
   triggers: "android-mojo-webview-rel"
   triggers: "android-pie-arm64-rel"
   triggers: "android-10-arm64-rel"
@@ -1015,6 +1016,16 @@
 }
 
 job {
+  id: "android-lollipop-arm-rel"
+  acl_sets: "default"
+  buildbucket: {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "android-lollipop-arm-rel"
+  }
+}
+
+job {
   id: "android-marshmallow-x86-fyi-rel"
   acl_sets: "default"
   # Only run nightly while we work out test issues and
diff --git a/infra/config/luci-scheduler.cfg b/infra/config/luci-scheduler.cfg
index 42e0ecd..acd6abc0 100644
--- a/infra/config/luci-scheduler.cfg
+++ b/infra/config/luci-scheduler.cfg
@@ -320,6 +320,7 @@
   triggers: "android-cronet-x86-rel"
   triggers: "android-archive-dbg"
   triggers: "android-incremental-dbg"
+  triggers: "android-lollipop-arm-rel"
   triggers: "android-mojo-webview-rel"
   triggers: "android-pie-arm64-rel"
   triggers: "android-10-arm64-rel"
@@ -1015,6 +1016,16 @@
 }
 
 job {
+  id: "android-lollipop-arm-rel"
+  acl_sets: "default"
+  buildbucket: {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "android-lollipop-arm-rel"
+  }
+}
+
+job {
   id: "android-marshmallow-x86-fyi-rel"
   acl_sets: "default"
   # Only run nightly while we work out test issues and
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index 857a239..e8c0cb0b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -112,7 +112,7 @@
 <translation id="2360196772093551345">درخواست سایت ویژه دستگاه همراه</translation>
 <translation id="2381405137052800939">ساده</translation>
 <translation id="2386793615875593361">۱ مورد انتخاب شد</translation>
-<translation id="2421044535038393232">حفظ ویرایش</translation>
+<translation id="2421044535038393232">ادامه ویرایش</translation>
 <translation id="2435457462613246316">نمایش گذرواژه</translation>
 <translation id="2481538920734869610">افزودن حساب</translation>
 <translation id="2497852260688568942">سرپرستتان همگام‌سازی را غیرفعال کرده است</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index 1c83cdb..669e4fa 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -8,7 +8,7 @@
 <translation id="1063454504051558093">Użyj innego hasła…</translation>
 <translation id="1066060668811609597">Zarządzanie synchronizacją</translation>
 <translation id="1076421457278169141">Kod został zeskanowany</translation>
-<translation id="1084365883616172403">Wpis na Facebooku dodany.</translation>
+<translation id="1084365883616172403">Post na Facebooku dodany.</translation>
 <translation id="1103523840287552314">Zawsze tłumacz z języka: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Zaakceptuj i kontynuuj</translation>
 <translation id="1112015203684611006">Drukowanie nie udało się.</translation>
@@ -551,7 +551,7 @@
 <translation id="8524799873541103884">Karty <ph name="INCOGNITO" /> od <ph name="FIRST_VISIBLE_TAB" /> do <ph name="LAST_VISIBLE_TAB" /> z <ph name="NUMBER_OF_OPEN_TABS" /></translation>
 <translation id="8529767659511976195">Nowość</translation>
 <translation id="8532105204136943229">Rok utraty ważności</translation>
-<translation id="8534481786647257214">Wpis w Google+ opublikowany.</translation>
+<translation id="8534481786647257214">Post w Google+ opublikowany.</translation>
 <translation id="8548878600947630424">Znajdź na stronie...</translation>
 <translation id="8588404856427128947">Wyłączono</translation>
 <translation id="8605219856220328675">Zamknij kartę</translation>
diff --git a/ios/chrome/browser/crash_report/breakpad_helper.h b/ios/chrome/browser/crash_report/breakpad_helper.h
index 2b73d72..0a6cfb67 100644
--- a/ios/chrome/browser/crash_report/breakpad_helper.h
+++ b/ios/chrome/browser/crash_report/breakpad_helper.h
@@ -11,6 +11,9 @@
 
 namespace breakpad_helper {
 
+// Key for breadcrumbs attached to crash reports.
+extern NSString* const kBreadcrumbs;
+
 // Starts the crash handlers. This must be run as soon as possible to catch
 // early crashes.
 void Start(const std::string& channel_name);
diff --git a/ios/chrome/browser/crash_report/breakpad_helper.mm b/ios/chrome/browser/crash_report/breakpad_helper.mm
index 87e37df..c290e9cb 100644
--- a/ios/chrome/browser/crash_report/breakpad_helper.mm
+++ b/ios/chrome/browser/crash_report/breakpad_helper.mm
@@ -35,6 +35,8 @@
 
 namespace breakpad_helper {
 
+NSString* const kBreadcrumbs = @"breadcrumbs";
+
 namespace {
 
 // Key in NSUserDefaults for a Boolean value that stores whether to upload
@@ -51,7 +53,6 @@
 NSString* const kUptimeAtRestoreInMs = @"uptime_at_restore_in_ms";
 NSString* const kUploadedInRecoveryMode = @"uploaded_in_recovery_mode";
 NSString* const kGridToVisibleTabAnimation = @"grid_to_visible_tab_animation";
-NSString* const kBrowserStateBreadcrumbs = @"browser_state_breadcrumbs";
 
 // Multiple state information are combined into one CrachReportMultiParameter
 // to save limited and finite number of ReportParameters.
@@ -374,7 +375,7 @@
 }
 
 void SetBreadcrumbEvents(NSString* breadcrumbs) {
-  AddReportParameter(kBrowserStateBreadcrumbs, breadcrumbs, true);
+  AddReportParameter(breakpad_helper::kBreadcrumbs, breadcrumbs, true);
 }
 
 void MediaStreamPlaybackDidStart() {
diff --git a/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer_unittest.mm b/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer_unittest.mm
index ea5893a..a6f2643 100644
--- a/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer_unittest.mm
+++ b/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer_unittest.mm
@@ -117,7 +117,7 @@
   }];
   [[mock_breakpad_controller_ expect]
       addUploadParameter:breadcrumbs_param_vaidation_block
-                  forKey:@"browser_state_breadcrumbs"];
+                  forKey:breakpad_helper::kBreadcrumbs];
 
   breadcrumb_service->AddEvent(std::string("Breadcrumb Event"));
   EXPECT_OCMOCK_VERIFY(mock_breakpad_controller_);
@@ -145,7 +145,7 @@
   [[mock_breakpad_controller_ expect]
       addUploadParameter:StringParameterValidatorWithCountOfSubstring(
                              1, event_nsstring)
-                  forKey:@"browser_state_breadcrumbs"];
+                  forKey:breakpad_helper::kBreadcrumbs];
   breadcrumb_service->AddEvent(event);
 
   ios::ChromeBrowserState* otr_browser_state =
@@ -159,7 +159,7 @@
   [[mock_breakpad_controller_ expect]
       addUploadParameter:StringParameterValidatorWithCountOfSubstring(
                              2, event_nsstring)
-                  forKey:@"browser_state_breadcrumbs"];
+                  forKey:breakpad_helper::kBreadcrumbs];
   otr_breadcrumb_service->AddEvent(event);
 
   TestChromeBrowserState::Builder test_cbs_builder;
@@ -174,7 +174,7 @@
   [[mock_breakpad_controller_ expect]
       addUploadParameter:StringParameterValidatorWithCountOfSubstring(
                              3, event_nsstring)
-                  forKey:@"browser_state_breadcrumbs"];
+                  forKey:breakpad_helper::kBreadcrumbs];
   breadcrumb_service_2->AddEvent(event);
 
   EXPECT_OCMOCK_VERIFY(mock_breakpad_controller_);
diff --git a/ios/chrome/browser/ui/download/download_manager_egtest.mm b/ios/chrome/browser/ui/download/download_manager_egtest.mm
index 3a3b3c7..5aba5e5 100644
--- a/ios/chrome/browser/ui/download/download_manager_egtest.mm
+++ b/ios/chrome/browser/ui/download/download_manager_egtest.mm
@@ -253,7 +253,8 @@
 }
 
 // Tests that filename label and "Open in Downloads" button are showing.
-- (void)testVisibleFileNameAndOpenInDownloads {
+// TODO(crbug.com/1044676): Fails on iPad iOS 13 simulator.
+- (void)DISABLED_testVisibleFileNameAndOpenInDownloads {
   // Apple is hiding UIActivityViewController's contents from the host app on
   // iOS 12. However, at least on iOS 13, the actions provided by the host app
   // itself are not obfuscated.
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.h b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.h
index cc417e7..f0508f8 100644
--- a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.h
@@ -5,14 +5,11 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_AUTOFILL_CREDIT_CARD_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_AUTOFILL_CREDIT_CARD_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
 class Browser;
 
-namespace ios {
-class ChromeBrowserState;
-}
-
 // The table view for the Autofill settings.
 @interface AutofillCreditCardTableViewController
     : SettingsRootTableViewController
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.h b/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.h
index 9416b03..1ad545b 100644
--- a/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_AUTOFILL_PROFILE_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_AUTOFILL_PROFILE_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // The TableView for the Autofill settings.
 @interface AutofillProfileTableViewController : SettingsRootTableViewController
 
diff --git a/ios/chrome/browser/ui/settings/bandwidth_management_table_view_controller.h b/ios/chrome/browser/ui/settings/bandwidth_management_table_view_controller.h
index ab565f6..1dbe031 100644
--- a/ios/chrome/browser/ui/settings/bandwidth_management_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/bandwidth_management_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_BANDWIDTH_MANAGEMENT_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_BANDWIDTH_MANAGEMENT_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // Controller for the UI that allows the user to change settings that affect
 // bandwidth usage: prefetching and the data reduction proxy.
 @interface BandwidthManagementTableViewController
diff --git a/ios/chrome/browser/ui/settings/block_popups_table_view_controller.h b/ios/chrome/browser/ui/settings/block_popups_table_view_controller.h
index 5b9e8e7..5ecddee 100644
--- a/ios/chrome/browser/ui/settings/block_popups_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/block_popups_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_BLOCK_POPUPS_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_BLOCK_POPUPS_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // Controller for the UI that allows the user to block popups.
 @interface BlockPopupsTableViewController : SettingsRootTableViewController
 
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h
index fd79568..84ad12211 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h
@@ -8,13 +8,10 @@
 #import <Foundation/Foundation.h>
 
 #include "base/ios/block_types.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 
 @class ListItem;
 
-namespace ios {
-class ChromeBrowserState;
-}
-
 namespace browsing_data {
 enum class TimePeriod;
 }
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h
index 95dd7673..7541a39f 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h
@@ -6,11 +6,9 @@
 #define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_MANAGER_H_
 
 #include "components/browsing_data/core/counters/browsing_data_counter.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/list_model/list_model.h"
 
-namespace ios {
-class ChromeBrowserState;
-}
 class BrowsingDataRemover;
 enum class BrowsingDataRemoveMask;
 
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h
index 00c7d639..72a0ecbc3 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}
-
 @protocol ApplicationCommands;
 @protocol BrowsingDataCommands;
 @protocol ClearBrowsingDataLocalCommands;
diff --git a/ios/chrome/browser/ui/settings/content_settings_table_view_controller.h b/ios/chrome/browser/ui/settings/content_settings_table_view_controller.h
index 7741c15..3fe5a5c 100644
--- a/ios/chrome/browser/ui/settings/content_settings_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/content_settings_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CONTENT_SETTINGS_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_CONTENT_SETTINGS_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // Controller for the UI that allows the user to change content settings like
 // blocking popups.
 @interface ContentSettingsTableViewController : SettingsRootTableViewController
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
index 2b749c3e..a1ab4a07 100644
--- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
+++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
@@ -60,6 +60,30 @@
   [self assertNonPersonalizedServices];
 }
 
+// Tests that the Google Services settings reloads without crashing when the
+// primary account is removed.
+// Regression test for crbug.com/1033901
+- (void)testRemovePrimaryAccount {
+  // Signin.
+  FakeChromeIdentity* fakeIdentity = [SigninEarlGreyUtils fakeIdentity1];
+  [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity];
+  // Open "Google Services" settings.
+  [self openGoogleServicesSettings];
+  // Remove the primary account.
+  [SigninEarlGreyUtils forgetFakeIdentity:fakeIdentity];
+  // Assert the UI has been reloaded by testing for the signin cell being
+  // visible.
+  id<GREYMatcher> signinCellMatcher =
+      [self cellMatcherWithTitleID:IDS_IOS_SIGN_IN_TO_CHROME_SETTING_TITLE
+                      detailTextID:
+                          IDS_IOS_GOOGLE_SERVICES_SETTINGS_SIGN_IN_DETAIL_TEXT];
+  [[EarlGrey selectElementWithMatcher:signinCellMatcher]
+      assertWithMatcher:grey_notNil()];
+  // Close settings.
+  [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
+      performAction:grey_tap()];
+}
+
 // Tests the following steps:
 //  + Opens sign-in from Google services
 //  + Taps on the settings link to open the advanced sign-in settings
@@ -67,7 +91,7 @@
 - (void)testInterruptSigninFromGoogleServicesSettings {
   [GoogleServicesSettingsAppInterface
       blockAllNavigationRequestsForCurrentWebState];
-  // Adds default identity.
+  // Add default identity.
   [self setTearDownHandler:^{
     [GoogleServicesSettingsAppInterface
         unblockAllNavigationRequestsForCurrentWebState];
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
index 7b05965..b8c6322b 100644
--- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
+++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
@@ -539,7 +539,8 @@
 #pragma mark - Properties
 
 - (BOOL)isAuthenticated {
-  return self.authService->IsAuthenticated();
+  return self.authService->IsAuthenticated() &&
+         self.authService->GetAuthenticatedIdentity();
 }
 
 - (BOOL)isSyncSettingsConfirmed {
@@ -821,7 +822,9 @@
 
 - (void)onSyncStateChanged {
   [self updateSyncSection:YES];
-  if (self.accountItem) {
+  // It is possible for |onSyncStateChanged| to be called before
+  // |onPrimaryAccountCleared|, when the primary account is removed.
+  if (self.isAuthenticated && self.accountItem) {
     [self configureIdentityAccountItem];
     [self.consumer reloadItem:self.accountItem];
   }
diff --git a/ios/chrome/browser/ui/settings/handoff_table_view_controller.h b/ios/chrome/browser/ui/settings/handoff_table_view_controller.h
index 536e247..91ca212 100644
--- a/ios/chrome/browser/ui/settings/handoff_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/handoff_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_HANDOFF_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_HANDOFF_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // This View Controller is responsible for managing the settings related to
 // Handoff.
 @interface HandoffTableViewController : SettingsRootTableViewController
diff --git a/ios/chrome/browser/ui/settings/language/language_settings_mediator.h b/ios/chrome/browser/ui/settings/language/language_settings_mediator.h
index e51d8f8..fed974f 100644
--- a/ios/chrome/browser/ui/settings/language/language_settings_mediator.h
+++ b/ios/chrome/browser/ui/settings/language/language_settings_mediator.h
@@ -7,13 +7,10 @@
 
 #include <Foundation/Foundation.h>
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/language/language_settings_commands.h"
 #import "ios/chrome/browser/ui/settings/language/language_settings_data_source.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 @interface LanguageSettingsMediator
     : NSObject <LanguageSettingsDataSource, LanguageSettingsCommands>
 
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.h b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.h
index 68e9e813..a46f4f7 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.h
@@ -5,14 +5,11 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORDS_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORDS_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/password/password_details_table_view_controller_delegate.h"
 #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 @protocol ReauthenticationProtocol;
 @class PasswordExporter;
 
diff --git a/ios/chrome/browser/ui/settings/privacy_table_view_controller.h b/ios/chrome/browser/ui/settings/privacy_table_view_controller.h
index ab685fe..039c4fe 100644
--- a/ios/chrome/browser/ui/settings/privacy_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/privacy_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_PRIVACY_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_PRIVACY_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // The accessibility identifier of the privacy settings collection view.
 extern NSString* const kPrivacyTableViewId;
 
diff --git a/ios/chrome/browser/ui/settings/search_engine_table_view_controller.h b/ios/chrome/browser/ui/settings/search_engine_table_view_controller.h
index 1dfe64b..9b6d6ae 100644
--- a/ios/chrome/browser/ui/settings/search_engine_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/search_engine_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_SEARCH_ENGINE_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_SEARCH_ENGINE_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // This class is the table view for the Search Engine settings.
 @interface SearchEngineTableViewController : SettingsRootTableViewController
 
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.h b/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.h
index e442f4b8..d37c484 100644
--- a/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.h
@@ -7,13 +7,10 @@
 
 #import <UIKit/UIKit.h>
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/sync/sync_observer_bridge.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 namespace sync_encryption_passphrase {
 typedef NS_ENUM(NSInteger, SectionIdentifier) {
   SectionIdentifierPassphrase = kSectionIdentifierEnumZero,
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.h b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.h
index ac57a79..8cc46e6 100644
--- a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.h
+++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.h
@@ -5,12 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_SYNC_SYNC_ENCRYPTION_TABLE_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_SETTINGS_SYNC_SYNC_ENCRYPTION_TABLE_VIEW_CONTROLLER_H_
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
 
-namespace ios {
-class ChromeBrowserState;
-}  // namespace ios
-
 // Controller to allow user to specify encryption passphrase for Sync.
 @interface SyncEncryptionTableViewController : SettingsRootTableViewController
 
diff --git a/media/base/video_frame.cc b/media/base/video_frame.cc
index b3e63e70..991f77d 100644
--- a/media/base/video_frame.cc
+++ b/media/base/video_frame.cc
@@ -1109,7 +1109,7 @@
   return release_sync_token_;
 }
 
-std::string VideoFrame::AsHumanReadableString() {
+std::string VideoFrame::AsHumanReadableString() const {
   if (metadata()->IsTrue(VideoFrameMetadata::END_OF_STREAM))
     return "end of stream";
 
diff --git a/media/base/video_frame.h b/media/base/video_frame.h
index 9ea6ceb..1a4e9d1 100644
--- a/media/base/video_frame.h
+++ b/media/base/video_frame.h
@@ -544,7 +544,7 @@
   gpu::SyncToken UpdateReleaseSyncToken(SyncTokenClient* client);
 
   // Returns a human-readable string describing |*this|.
-  std::string AsHumanReadableString();
+  std::string AsHumanReadableString() const;
 
   // Unique identifier for this video frame; generated at construction time and
   // guaranteed to be unique within a single process.
diff --git a/media/blink/learning_experiment_helper_unittest.cc b/media/blink/learning_experiment_helper_unittest.cc
index 37f5b225..11cb0cd 100644
--- a/media/blink/learning_experiment_helper_unittest.cc
+++ b/media/blink/learning_experiment_helper_unittest.cc
@@ -37,8 +37,10 @@
   MOCK_METHOD2(UpdateDefaultTarget,
                void(base::UnguessableToken id,
                     const base::Optional<TargetValue>& default_target));
+  MOCK_METHOD2(PredictDistribution,
+               void(const FeatureVector& features, PredictionCB callback));
 
-  const LearningTask& GetLearningTask() { return task_; }
+  const LearningTask& GetLearningTask() override { return task_; }
 
  private:
   LearningTask task_;
diff --git a/media/blink/smoothness_helper_unittest.cc b/media/blink/smoothness_helper_unittest.cc
index aa8cd881..4b1b730 100644
--- a/media/blink/smoothness_helper_unittest.cc
+++ b/media/blink/smoothness_helper_unittest.cc
@@ -61,6 +61,8 @@
                       const base::Optional<TargetValue>& default_target));
 
     MOCK_METHOD0(GetLearningTask, const LearningTask&());
+    MOCK_METHOD2(PredictDistribution,
+                 void(const FeatureVector& features, PredictionCB callback));
   };
 
   class MockClient : public SmoothnessHelper::Client {
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
index 3ade942a..48833fb 100644
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -2222,6 +2222,7 @@
   DVLOG(4) << "Pending VA bufs to commit: " << pending_va_bufs_.size();
   DVLOG(4) << "Pending slice bufs to commit: " << pending_slice_bufs_.size();
   DVLOG(4) << "Target VA surface " << va_surface_id;
+  const auto decode_start_time = base::TimeTicks::Now();
 
   // Get ready to execute for given surface.
   VAStatus va_res = vaBeginPicture(va_display_, va_context_id_, va_surface_id);
@@ -2243,11 +2244,15 @@
                          false);
   }
 
-  // Instruct HW codec to start processing committed buffers.
-  // Does not block and the job is not finished after this returns.
+  // Instruct HW codec to start processing the submitted commands. In theory,
+  // this shouldn't be blocking, relying on vaSyncSurface() instead, however
+  // evidence points to it actually waiting for the job to be done.
   va_res = vaEndPicture(va_display_, va_context_id_);
   VA_SUCCESS_OR_RETURN(va_res, "vaEndPicture", false);
 
+  UMA_HISTOGRAM_TIMES("Media.PlatformVideoDecoding.Decode",
+                      base::TimeTicks::Now() - decode_start_time);
+
   return true;
 }
 
diff --git a/media/learning/common/BUILD.gn b/media/learning/common/BUILD.gn
index 7a39303..cb3d2e7 100644
--- a/media/learning/common/BUILD.gn
+++ b/media/learning/common/BUILD.gn
@@ -37,6 +37,8 @@
     "learning_task_controller.h",
     "media_learning_tasks.cc",
     "media_learning_tasks.h",
+    "target_histogram.cc",
+    "target_histogram.h",
     "value.cc",
     "value.h",
   ]
@@ -53,6 +55,7 @@
     "feature_dictionary_unittest.cc",
     "labelled_example_unittest.cc",
     "media_learning_tasks_unittest.cc",
+    "target_histogram_unittest.cc",
     "value_unittest.cc",
   ]
 
diff --git a/media/learning/common/DEPS b/media/learning/common/DEPS
index cde7e700..ee4cdbcc 100644
--- a/media/learning/common/DEPS
+++ b/media/learning/common/DEPS
@@ -1,3 +1,5 @@
 include_rules = [
   "+services/metrics",
+  # Needed for typemap to befriend TargetHistogram.
+  "+mojo/public",
 ]
diff --git a/media/learning/common/learning_task_controller.h b/media/learning/common/learning_task_controller.h
index 7891460..8d5f1a9 100644
--- a/media/learning/common/learning_task_controller.h
+++ b/media/learning/common/learning_task_controller.h
@@ -12,6 +12,7 @@
 #include "base/unguessable_token.h"
 #include "media/learning/common/labelled_example.h"
 #include "media/learning/common/learning_task.h"
+#include "media/learning/common/target_histogram.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 
 namespace media {
@@ -49,6 +50,9 @@
 // observed to do that.
 class COMPONENT_EXPORT(LEARNING_COMMON) LearningTaskController {
  public:
+  using PredictionCB = base::OnceCallback<void(
+      const base::Optional<TargetHistogram>& predicted)>;
+
   LearningTaskController() = default;
   virtual ~LearningTaskController() = default;
 
@@ -91,6 +95,12 @@
   // Returns the LearningTask associated with |this|.
   virtual const LearningTask& GetLearningTask() = 0;
 
+  // Asynchronously predicts distribution for given |features|. |callback| will
+  // receive a base::nullopt prediction when model is not available. |callback|
+  // may be called immediately without posting.
+  virtual void PredictDistribution(const FeatureVector& features,
+                                   PredictionCB callback) = 0;
+
  private:
   DISALLOW_COPY_AND_ASSIGN(LearningTaskController);
 };
diff --git a/media/learning/common/target_histogram.cc b/media/learning/common/target_histogram.cc
new file mode 100644
index 0000000..4d2068fb
--- /dev/null
+++ b/media/learning/common/target_histogram.cc
@@ -0,0 +1,121 @@
+// Copyright 2018 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 "media/learning/common/target_histogram.h"
+
+#include <sstream>
+
+namespace media {
+namespace learning {
+
+TargetHistogram::TargetHistogram() = default;
+
+TargetHistogram::TargetHistogram(const TargetHistogram& rhs) = default;
+
+TargetHistogram::TargetHistogram(TargetHistogram&& rhs) = default;
+
+TargetHistogram::~TargetHistogram() = default;
+
+TargetHistogram& TargetHistogram::operator=(const TargetHistogram& rhs) =
+    default;
+
+TargetHistogram& TargetHistogram::operator=(TargetHistogram&& rhs) = default;
+
+bool TargetHistogram::operator==(const TargetHistogram& rhs) const {
+  return rhs.total_counts() == total_counts() && rhs.counts_ == counts_;
+}
+
+TargetHistogram& TargetHistogram::operator+=(const TargetHistogram& rhs) {
+  for (auto& rhs_pair : rhs.counts())
+    counts_[rhs_pair.first] += rhs_pair.second;
+
+  return *this;
+}
+
+TargetHistogram& TargetHistogram::operator+=(const TargetValue& rhs) {
+  counts_[rhs]++;
+  return *this;
+}
+
+TargetHistogram& TargetHistogram::operator+=(const LabelledExample& example) {
+  counts_[example.target_value] += example.weight;
+  return *this;
+}
+
+double TargetHistogram::operator[](const TargetValue& value) const {
+  auto iter = counts_.find(value);
+  if (iter == counts_.end())
+    return 0;
+
+  return iter->second;
+}
+
+double& TargetHistogram::operator[](const TargetValue& value) {
+  return counts_[value];
+}
+
+bool TargetHistogram::FindSingularMax(TargetValue* value_out,
+                                      double* counts_out) const {
+  if (!counts_.size())
+    return false;
+
+  double unused_counts;
+  if (!counts_out)
+    counts_out = &unused_counts;
+
+  auto iter = counts_.begin();
+  *value_out = iter->first;
+  *counts_out = iter->second;
+  bool singular_max = true;
+  for (iter++; iter != counts_.end(); iter++) {
+    if (iter->second > *counts_out) {
+      *value_out = iter->first;
+      *counts_out = iter->second;
+      singular_max = true;
+    } else if (iter->second == *counts_out) {
+      // If this turns out to be the max, then it's not singular.
+      singular_max = false;
+    }
+  }
+
+  return singular_max;
+}
+
+double TargetHistogram::Average() const {
+  double total_value = 0.;
+  double total_counts = 0;
+  for (auto& iter : counts_) {
+    total_value += iter.first.value() * iter.second;
+    total_counts += iter.second;
+  }
+
+  if (!total_counts)
+    return 0.;
+
+  return total_value / total_counts;
+}
+
+void TargetHistogram::Normalize() {
+  double total = total_counts();
+  for (auto& iter : counts_)
+    iter.second /= total;
+}
+
+std::string TargetHistogram::ToString() const {
+  std::ostringstream ss;
+  ss << "[";
+  for (auto& entry : counts_)
+    ss << " " << entry.first << ":" << entry.second;
+  ss << " ]";
+
+  return ss.str();
+}
+
+std::ostream& operator<<(std::ostream& out,
+                         const media::learning::TargetHistogram& dist) {
+  return out << dist.ToString();
+}
+
+}  // namespace learning
+}  // namespace media
diff --git a/media/learning/common/target_histogram.h b/media/learning/common/target_histogram.h
new file mode 100644
index 0000000..959fdc1
--- /dev/null
+++ b/media/learning/common/target_histogram.h
@@ -0,0 +1,107 @@
+// Copyright 2018 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 MEDIA_LEARNING_COMMON_TARGET_HISTOGRAM_H_
+#define MEDIA_LEARNING_COMMON_TARGET_HISTOGRAM_H_
+
+#include <ostream>
+#include <string>
+
+#include "base/component_export.h"
+#include "base/containers/flat_map.h"
+#include "base/macros.h"
+#include "media/learning/common/labelled_example.h"
+#include "media/learning/common/value.h"
+
+#include "mojo/public/cpp/bindings/struct_traits.h"  // nogncheck
+
+namespace media {
+namespace learning {
+
+namespace mojom {
+class TargetHistogramDataView;
+}
+
+// Histogram of target values that allows fractional counts.
+class COMPONENT_EXPORT(LEARNING_COMMON) TargetHistogram {
+ public:
+  // We use a flat_map since this will often have only one or two TargetValues,
+  // such as "true" or "false".
+  using CountMap = base::flat_map<TargetValue, double>;
+
+  TargetHistogram();
+  TargetHistogram(const TargetHistogram& rhs);
+  TargetHistogram(TargetHistogram&& rhs);
+  ~TargetHistogram();
+
+  TargetHistogram& operator=(const TargetHistogram& rhs);
+  TargetHistogram& operator=(TargetHistogram&& rhs);
+
+  bool operator==(const TargetHistogram& rhs) const;
+
+  // Add |rhs| to our counts.
+  TargetHistogram& operator+=(const TargetHistogram& rhs);
+
+  // Increment |rhs| by one.
+  TargetHistogram& operator+=(const TargetValue& rhs);
+
+  // Increment the histogram by |example|'s target value and weight.
+  TargetHistogram& operator+=(const LabelledExample& example);
+
+  // Return the number of counts for |value|.
+  double operator[](const TargetValue& value) const;
+  double& operator[](const TargetValue& value);
+
+  // Return the total counts in the map.
+  double total_counts() const {
+    double total = 0.;
+    for (auto& entry : counts_)
+      total += entry.second;
+    return total;
+  }
+
+  CountMap::const_iterator begin() const { return counts_.begin(); }
+
+  CountMap::const_iterator end() const { return counts_.end(); }
+
+  // Return the number of buckets in the histogram.
+  // TODO(liberato): Do we want this?
+  size_t size() const { return counts_.size(); }
+
+  // Find the singular value with the highest counts, and copy it into
+  // |value_out| and (optionally) |counts_out|.  Returns true if there is a
+  // singular maximum, else returns false with the out params undefined.
+  bool FindSingularMax(TargetValue* value_out,
+                       double* counts_out = nullptr) const;
+
+  // Return the average value of the entries in this histogram.  Of course,
+  // this only makes sense if the TargetValues can be interpreted as numeric.
+  double Average() const;
+
+  // Normalize the histogram so that it has one total count, unless it's
+  // empty.  It will continue to have zero in that case.
+  void Normalize();
+
+  std::string ToString() const;
+
+ private:
+  friend struct mojo::StructTraits<
+      media::learning::mojom::TargetHistogramDataView,
+      media::learning::TargetHistogram>;
+
+  const CountMap& counts() const { return counts_; }
+
+  // [value] == counts
+  CountMap counts_;
+
+  // Allow copy and assign.
+};
+
+COMPONENT_EXPORT(LEARNING_COMMON)
+std::ostream& operator<<(std::ostream& out, const TargetHistogram& dist);
+
+}  // namespace learning
+}  // namespace media
+
+#endif  // MEDIA_LEARNING_COMMON_TARGET_HISTOGRAM_H_
diff --git a/media/learning/common/target_histogram_unittest.cc b/media/learning/common/target_histogram_unittest.cc
new file mode 100644
index 0000000..bf5e2a2
--- /dev/null
+++ b/media/learning/common/target_histogram_unittest.cc
@@ -0,0 +1,180 @@
+
+// Copyright 2018 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 "media/learning/common/target_histogram.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace media {
+namespace learning {
+
+class TargetHistogramTest : public testing::Test {
+ public:
+  TargetHistogramTest() : value_1(123), value_2(456), value_3(789) {}
+
+  TargetHistogram histogram_;
+
+  TargetValue value_1;
+  const size_t counts_1 = 100;
+
+  TargetValue value_2;
+  const size_t counts_2 = 10;
+
+  TargetValue value_3;
+};
+
+TEST_F(TargetHistogramTest, EmptyTargetHistogramHasZeroCounts) {
+  EXPECT_EQ(histogram_.total_counts(), 0u);
+}
+
+TEST_F(TargetHistogramTest, AddingCountsWorks) {
+  histogram_[value_1] = counts_1;
+  EXPECT_EQ(histogram_.total_counts(), counts_1);
+  EXPECT_EQ(histogram_[value_1], counts_1);
+  histogram_[value_1] += counts_1;
+  EXPECT_EQ(histogram_.total_counts(), counts_1 * 2u);
+  EXPECT_EQ(histogram_[value_1], counts_1 * 2u);
+}
+
+TEST_F(TargetHistogramTest, MultipleValuesAreSeparate) {
+  histogram_[value_1] = counts_1;
+  histogram_[value_2] = counts_2;
+  EXPECT_EQ(histogram_.total_counts(), counts_1 + counts_2);
+  EXPECT_EQ(histogram_[value_1], counts_1);
+  EXPECT_EQ(histogram_[value_2], counts_2);
+}
+
+TEST_F(TargetHistogramTest, AddingTargetValues) {
+  histogram_ += value_1;
+  EXPECT_EQ(histogram_.total_counts(), 1u);
+  EXPECT_EQ(histogram_[value_1], 1u);
+  EXPECT_EQ(histogram_[value_2], 0u);
+
+  histogram_ += value_1;
+  EXPECT_EQ(histogram_.total_counts(), 2u);
+  EXPECT_EQ(histogram_[value_1], 2u);
+  EXPECT_EQ(histogram_[value_2], 0u);
+
+  histogram_ += value_2;
+  EXPECT_EQ(histogram_.total_counts(), 3u);
+  EXPECT_EQ(histogram_[value_1], 2u);
+  EXPECT_EQ(histogram_[value_2], 1u);
+}
+
+TEST_F(TargetHistogramTest, AddingTargetHistograms) {
+  histogram_[value_1] = counts_1;
+
+  TargetHistogram rhs;
+  rhs[value_2] = counts_2;
+
+  histogram_ += rhs;
+
+  EXPECT_EQ(histogram_.total_counts(), counts_1 + counts_2);
+  EXPECT_EQ(histogram_[value_1], counts_1);
+  EXPECT_EQ(histogram_[value_2], counts_2);
+}
+
+TEST_F(TargetHistogramTest, FindSingularMaxFindsTheSingularMax) {
+  histogram_[value_1] = counts_1;
+  histogram_[value_2] = counts_2;
+  ASSERT_TRUE(counts_1 > counts_2);
+
+  TargetValue max_value(0);
+  double max_counts = 0;
+  EXPECT_TRUE(histogram_.FindSingularMax(&max_value, &max_counts));
+  EXPECT_EQ(max_value, value_1);
+  EXPECT_EQ(max_counts, counts_1);
+}
+
+TEST_F(TargetHistogramTest, FindSingularMaxFindsTheSingularMaxAlternateOrder) {
+  // Switch the order, to handle sorting in different directions.
+  histogram_[value_1] = counts_2;
+  histogram_[value_2] = counts_1;
+  ASSERT_TRUE(counts_1 > counts_2);
+
+  TargetValue max_value(0);
+  double max_counts = 0;
+  EXPECT_TRUE(histogram_.FindSingularMax(&max_value, &max_counts));
+  EXPECT_EQ(max_value, value_2);
+  EXPECT_EQ(max_counts, counts_1);
+}
+
+TEST_F(TargetHistogramTest, FindSingularMaxReturnsFalsForNonSingularMax) {
+  histogram_[value_1] = counts_1;
+  histogram_[value_2] = counts_1;
+
+  TargetValue max_value(0);
+  double max_counts = 0;
+  EXPECT_FALSE(histogram_.FindSingularMax(&max_value, &max_counts));
+}
+
+TEST_F(TargetHistogramTest, FindSingularMaxIgnoresNonSingularNonMax) {
+  histogram_[value_1] = counts_1;
+  // |value_2| and |value_3| are tied, but not the max.
+  histogram_[value_2] = counts_2;
+  histogram_[value_3] = counts_2;
+  ASSERT_TRUE(counts_1 > counts_2);
+
+  TargetValue max_value(0);
+  double max_counts = 0;
+  EXPECT_TRUE(histogram_.FindSingularMax(&max_value, &max_counts));
+  EXPECT_EQ(max_value, value_1);
+  EXPECT_EQ(max_counts, counts_1);
+}
+
+TEST_F(TargetHistogramTest, FindSingularMaxDoesntRequireCounts) {
+  histogram_[value_1] = counts_1;
+
+  TargetValue max_value(0);
+  EXPECT_TRUE(histogram_.FindSingularMax(&max_value));
+  EXPECT_EQ(max_value, value_1);
+}
+
+TEST_F(TargetHistogramTest, EqualDistributionsCompareAsEqual) {
+  histogram_[value_1] = counts_1;
+  TargetHistogram histogram_2;
+  histogram_2[value_1] = counts_1;
+
+  EXPECT_TRUE(histogram_ == histogram_2);
+}
+
+TEST_F(TargetHistogramTest, UnequalDistributionsCompareAsNotEqual) {
+  histogram_[value_1] = counts_1;
+  TargetHistogram histogram_2;
+  histogram_2[value_2] = counts_2;
+
+  EXPECT_FALSE(histogram_ == histogram_2);
+}
+
+TEST_F(TargetHistogramTest, WeightedLabelledExamplesCountCorrectly) {
+  LabelledExample example = {{}, value_1};
+  example.weight = counts_1;
+  histogram_ += example;
+
+  TargetHistogram histogram_2;
+  for (size_t i = 0; i < counts_1; i++)
+    histogram_2 += value_1;
+
+  EXPECT_EQ(histogram_, histogram_2);
+}
+
+TEST_F(TargetHistogramTest, Normalize) {
+  histogram_[value_1] = counts_1;
+  histogram_[value_2] = counts_2;
+  histogram_.Normalize();
+  EXPECT_EQ(histogram_[value_1],
+            counts_1 / static_cast<double>(counts_1 + counts_2));
+  EXPECT_EQ(histogram_[value_2],
+            counts_2 / static_cast<double>(counts_1 + counts_2));
+}
+
+TEST_F(TargetHistogramTest, NormalizeEmptyDistribution) {
+  // Normalizing an empty distribution should result in an empty distribution.
+  histogram_.Normalize();
+  EXPECT_EQ(histogram_.total_counts(), 0);
+}
+
+}  // namespace learning
+}  // namespace media
diff --git a/media/learning/impl/BUILD.gn b/media/learning/impl/BUILD.gn
index 086b168..2b70ebc 100644
--- a/media/learning/impl/BUILD.gn
+++ b/media/learning/impl/BUILD.gn
@@ -38,8 +38,6 @@
     "random_number_generator.h",
     "random_tree_trainer.cc",
     "random_tree_trainer.h",
-    "target_histogram.cc",
-    "target_histogram.h",
     "training_algorithm.h",
     "voting_ensemble.cc",
     "voting_ensemble.h",
@@ -71,7 +69,6 @@
     "one_hot_unittest.cc",
     "random_number_generator_unittest.cc",
     "random_tree_trainer_unittest.cc",
-    "target_histogram_unittest.cc",
     "test_random_number_generator.cc",
     "test_random_number_generator.h",
   ]
diff --git a/media/learning/impl/distribution_reporter.h b/media/learning/impl/distribution_reporter.h
index bfd09bf..5ec60e9 100644
--- a/media/learning/impl/distribution_reporter.h
+++ b/media/learning/impl/distribution_reporter.h
@@ -13,8 +13,8 @@
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
 #include "media/learning/common/learning_task.h"
+#include "media/learning/common/target_histogram.h"
 #include "media/learning/impl/model.h"
-#include "media/learning/impl/target_histogram.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 
 namespace media {
diff --git a/media/learning/impl/learning_session_impl.cc b/media/learning/impl/learning_session_impl.cc
index bf6968d..f56a2df 100644
--- a/media/learning/impl/learning_session_impl.cc
+++ b/media/learning/impl/learning_session_impl.cc
@@ -90,6 +90,12 @@
 
   const LearningTask& GetLearningTask() override { return task_; }
 
+  void PredictDistribution(const FeatureVector& features,
+                           PredictionCB callback) override {
+    controller_->Post(FROM_HERE, &LearningTaskController::PredictDistribution,
+                      features, std::move(callback));
+  }
+
   base::WeakPtr<LearningSessionImpl> weak_session_;
   base::SequenceBound<LearningTaskController>* controller_;
   LearningTask task_;
diff --git a/media/learning/impl/learning_session_impl_unittest.cc b/media/learning/impl/learning_session_impl_unittest.cc
index f55fa95..3ab8089 100644
--- a/media/learning/impl/learning_session_impl_unittest.cc
+++ b/media/learning/impl/learning_session_impl_unittest.cc
@@ -45,14 +45,14 @@
         const FeatureVector& features,
         const base::Optional<TargetValue>& default_target) override {
       id_ = id;
-      features_ = features;
+      observation_features_ = features;
       default_target_ = default_target;
     }
 
     void CompleteObservation(base::UnguessableToken id,
                              const ObservationCompletion& completion) override {
       EXPECT_EQ(id_, id);
-      example_.features = std::move(features_);
+      example_.features = std::move(observation_features_);
       example_.target_value = completion.target_value;
       example_.weight = completion.weight;
     }
@@ -74,9 +74,17 @@
       return LearningTask::Empty();
     }
 
+    void PredictDistribution(const FeatureVector& features,
+                             PredictionCB callback) override {
+      predict_features_ = features;
+      predict_cb_ = std::move(callback);
+    }
+
     SequenceBoundFeatureProvider feature_provider_;
     base::UnguessableToken id_;
-    FeatureVector features_;
+    FeatureVector observation_features_;
+    FeatureVector predict_features_;
+    PredictionCB predict_cb_;
     base::Optional<TargetValue> default_target_;
     LabelledExample example_;
 
@@ -317,5 +325,34 @@
   EXPECT_FALSE(task_controllers_[0]->updated_id_);
 }
 
+TEST_F(LearningSessionImplTest, PredictDistribution) {
+  session_->RegisterTask(task_0_);
+
+  std::unique_ptr<LearningTaskController> controller =
+      session_->GetController(task_0_.name);
+  task_environment_.RunUntilIdle();
+
+  FeatureVector features = {FeatureValue(123), FeatureValue(456)};
+  TargetHistogram observed_prediction;
+  controller->PredictDistribution(
+      features, base::BindOnce(
+                    [](TargetHistogram* test_storage,
+                       const base::Optional<TargetHistogram>& predicted) {
+                      *test_storage = *predicted;
+                    },
+                    &observed_prediction));
+  task_environment_.RunUntilIdle();
+  EXPECT_EQ(features, task_controllers_[0]->predict_features_);
+  EXPECT_FALSE(task_controllers_[0]->predict_cb_.is_null());
+
+  TargetHistogram expected_prediction;
+  expected_prediction[TargetValue(1)] = 1.0;
+  expected_prediction[TargetValue(2)] = 2.0;
+  expected_prediction[TargetValue(3)] = 3.0;
+  std::move(task_controllers_[0]->predict_cb_).Run(expected_prediction);
+  task_environment_.RunUntilIdle();
+  EXPECT_EQ(expected_prediction, observed_prediction);
+}
+
 }  // namespace learning
 }  // namespace media
diff --git a/media/learning/impl/learning_task_controller_impl.cc b/media/learning/impl/learning_task_controller_impl.cc
index 52705f8..40bbd50e 100644
--- a/media/learning/impl/learning_task_controller_impl.cc
+++ b/media/learning/impl/learning_task_controller_impl.cc
@@ -92,6 +92,15 @@
   return task_;
 }
 
+void LearningTaskControllerImpl::PredictDistribution(
+    const FeatureVector& features,
+    PredictionCB callback) {
+  if (model_)
+    std::move(callback).Run(model_->PredictDistribution(features));
+  else
+    std::move(callback).Run(base::nullopt);
+}
+
 void LearningTaskControllerImpl::AddFinishedExample(LabelledExample example,
                                                     ukm::SourceId source_id) {
   // Verify that we have a trainer and that we got the right number of features.
diff --git a/media/learning/impl/learning_task_controller_impl.h b/media/learning/impl/learning_task_controller_impl.h
index ff3967ff..abc243cd 100644
--- a/media/learning/impl/learning_task_controller_impl.h
+++ b/media/learning/impl/learning_task_controller_impl.h
@@ -62,6 +62,8 @@
       base::UnguessableToken id,
       const base::Optional<TargetValue>& default_target) override;
   const LearningTask& GetLearningTask() override;
+  void PredictDistribution(const FeatureVector& features,
+                           PredictionCB callback) override;
 
  private:
   // Add |example| to the training data, and process it.
diff --git a/media/learning/impl/learning_task_controller_impl_unittest.cc b/media/learning/impl/learning_task_controller_impl_unittest.cc
index 30a6558..3b68cd2 100644
--- a/media/learning/impl/learning_task_controller_impl_unittest.cc
+++ b/media/learning/impl/learning_task_controller_impl_unittest.cc
@@ -137,6 +137,20 @@
         id, ObservationCompletion(example.target_value, example.weight));
   }
 
+  void VerifyPrediction(const FeatureVector& features,
+                        base::Optional<TargetHistogram> expectation) {
+    base::Optional<TargetHistogram> observed_prediction;
+    controller_->PredictDistribution(
+        features, base::BindOnce(
+                      [](base::Optional<TargetHistogram>* test_storage,
+                         const base::Optional<TargetHistogram>& predicted) {
+                        *test_storage = predicted;
+                      },
+                      &observed_prediction));
+    task_environment_.RunUntilIdle();
+    EXPECT_EQ(observed_prediction, expectation);
+  }
+
   base::test::TaskEnvironment task_environment_;
 
   // Number of models that we trained.
@@ -258,5 +272,18 @@
   EXPECT_EQ(trainer_raw_->training_data()[0].features, expected_features);
 }
 
+TEST_F(LearningTaskControllerImplTest, PredictDistribution) {
+  CreateController();
+
+  // Predictions should be base::nullopt until we have a model.
+  LabelledExample example;
+  VerifyPrediction(example.features, base::nullopt);
+
+  AddExample(example);
+  TargetHistogram expected_histogram;
+  expected_histogram += predicted_target_;
+  VerifyPrediction(example.features, expected_histogram);
+}
+
 }  // namespace learning
 }  // namespace media
diff --git a/media/learning/impl/model.h b/media/learning/impl/model.h
index 4236687..361cb24 100644
--- a/media/learning/impl/model.h
+++ b/media/learning/impl/model.h
@@ -7,8 +7,8 @@
 
 #include "base/component_export.h"
 #include "media/learning/common/labelled_example.h"
+#include "media/learning/common/target_histogram.h"
 #include "media/learning/impl/model.h"
-#include "media/learning/impl/target_histogram.h"
 
 namespace media {
 namespace learning {
diff --git a/media/learning/impl/target_histogram.cc b/media/learning/impl/target_histogram.cc
deleted file mode 100644
index ad1a1f2..0000000
--- a/media/learning/impl/target_histogram.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2018 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 "media/learning/impl/target_histogram.h"
-
-#include <sstream>
-
-namespace media {
-namespace learning {
-
-TargetHistogram::TargetHistogram() = default;
-
-TargetHistogram::TargetHistogram(const TargetHistogram& rhs) = default;
-
-TargetHistogram::TargetHistogram(TargetHistogram&& rhs) = default;
-
-TargetHistogram::~TargetHistogram() = default;
-
-TargetHistogram& TargetHistogram::operator=(const TargetHistogram& rhs) =
-    default;
-
-TargetHistogram& TargetHistogram::operator=(TargetHistogram&& rhs) = default;
-
-bool TargetHistogram::operator==(const TargetHistogram& rhs) const {
-  return rhs.total_counts() == total_counts() && rhs.counts_ == counts_;
-}
-
-TargetHistogram& TargetHistogram::operator+=(const TargetHistogram& rhs) {
-  for (auto& rhs_pair : rhs.counts())
-    counts_[rhs_pair.first] += rhs_pair.second;
-
-  return *this;
-}
-
-TargetHistogram& TargetHistogram::operator+=(const TargetValue& rhs) {
-  counts_[rhs]++;
-  return *this;
-}
-
-TargetHistogram& TargetHistogram::operator+=(const LabelledExample& example) {
-  counts_[example.target_value] += example.weight;
-  return *this;
-}
-
-double TargetHistogram::operator[](const TargetValue& value) const {
-  auto iter = counts_.find(value);
-  if (iter == counts_.end())
-    return 0;
-
-  return iter->second;
-}
-
-double& TargetHistogram::operator[](const TargetValue& value) {
-  return counts_[value];
-}
-
-bool TargetHistogram::FindSingularMax(TargetValue* value_out,
-                                      double* counts_out) const {
-  if (!counts_.size())
-    return false;
-
-  double unused_counts;
-  if (!counts_out)
-    counts_out = &unused_counts;
-
-  auto iter = counts_.begin();
-  *value_out = iter->first;
-  *counts_out = iter->second;
-  bool singular_max = true;
-  for (iter++; iter != counts_.end(); iter++) {
-    if (iter->second > *counts_out) {
-      *value_out = iter->first;
-      *counts_out = iter->second;
-      singular_max = true;
-    } else if (iter->second == *counts_out) {
-      // If this turns out to be the max, then it's not singular.
-      singular_max = false;
-    }
-  }
-
-  return singular_max;
-}
-
-double TargetHistogram::Average() const {
-  double total_value = 0.;
-  double total_counts = 0;
-  for (auto& iter : counts_) {
-    total_value += iter.first.value() * iter.second;
-    total_counts += iter.second;
-  }
-
-  if (!total_counts)
-    return 0.;
-
-  return total_value / total_counts;
-}
-
-void TargetHistogram::Normalize() {
-  double total = total_counts();
-  for (auto& iter : counts_)
-    iter.second /= total;
-}
-
-std::string TargetHistogram::ToString() const {
-  std::ostringstream ss;
-  ss << "[";
-  for (auto& entry : counts_)
-    ss << " " << entry.first << ":" << entry.second;
-  ss << " ]";
-
-  return ss.str();
-}
-
-std::ostream& operator<<(std::ostream& out,
-                         const media::learning::TargetHistogram& dist) {
-  return out << dist.ToString();
-}
-
-}  // namespace learning
-}  // namespace media
diff --git a/media/learning/impl/target_histogram.h b/media/learning/impl/target_histogram.h
deleted file mode 100644
index cb8de2b6..0000000
--- a/media/learning/impl/target_histogram.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2018 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 MEDIA_LEARNING_IMPL_TARGET_HISTOGRAM_H_
-#define MEDIA_LEARNING_IMPL_TARGET_HISTOGRAM_H_
-
-#include <ostream>
-#include <string>
-
-#include "base/component_export.h"
-#include "base/containers/flat_map.h"
-#include "base/macros.h"
-#include "media/learning/common/labelled_example.h"
-#include "media/learning/common/value.h"
-
-namespace media {
-namespace learning {
-
-// Histogram of target values that allows fractional counts.
-class COMPONENT_EXPORT(LEARNING_IMPL) TargetHistogram {
- private:
-  // We use a flat_map since this will often have only one or two TargetValues,
-  // such as "true" or "false".
-  using CountMap = base::flat_map<TargetValue, double>;
-
- public:
-  TargetHistogram();
-  TargetHistogram(const TargetHistogram& rhs);
-  TargetHistogram(TargetHistogram&& rhs);
-  ~TargetHistogram();
-
-  TargetHistogram& operator=(const TargetHistogram& rhs);
-  TargetHistogram& operator=(TargetHistogram&& rhs);
-
-  bool operator==(const TargetHistogram& rhs) const;
-
-  // Add |rhs| to our counts.
-  TargetHistogram& operator+=(const TargetHistogram& rhs);
-
-  // Increment |rhs| by one.
-  TargetHistogram& operator+=(const TargetValue& rhs);
-
-  // Increment the histogram by |example|'s target value and weight.
-  TargetHistogram& operator+=(const LabelledExample& example);
-
-  // Return the number of counts for |value|.
-  double operator[](const TargetValue& value) const;
-  double& operator[](const TargetValue& value);
-
-  // Return the total counts in the map.
-  double total_counts() const {
-    double total = 0.;
-    for (auto& entry : counts_)
-      total += entry.second;
-    return total;
-  }
-
-  CountMap::const_iterator begin() const { return counts_.begin(); }
-
-  CountMap::const_iterator end() const { return counts_.end(); }
-
-  // Return the number of buckets in the histogram.
-  // TODO(liberato): Do we want this?
-  size_t size() const { return counts_.size(); }
-
-  // Find the singular value with the highest counts, and copy it into
-  // |value_out| and (optionally) |counts_out|.  Returns true if there is a
-  // singular maximum, else returns false with the out params undefined.
-  bool FindSingularMax(TargetValue* value_out,
-                       double* counts_out = nullptr) const;
-
-  // Return the average value of the entries in this histogram.  Of course,
-  // this only makes sense if the TargetValues can be interpreted as numeric.
-  double Average() const;
-
-  // Normalize the histogram so that it has one total count, unless it's
-  // empty.  It will continue to have zero in that case.
-  void Normalize();
-
-  std::string ToString() const;
-
- private:
-  const CountMap& counts() const { return counts_; }
-
-  // [value] == counts
-  CountMap counts_;
-
-  // Allow copy and assign.
-};
-
-COMPONENT_EXPORT(LEARNING_IMPL)
-std::ostream& operator<<(std::ostream& out, const TargetHistogram& dist);
-
-}  // namespace learning
-}  // namespace media
-
-#endif  // MEDIA_LEARNING_IMPL_TARGET_HISTOGRAM_H_
diff --git a/media/learning/impl/target_histogram_unittest.cc b/media/learning/impl/target_histogram_unittest.cc
deleted file mode 100644
index 5ba36e0..0000000
--- a/media/learning/impl/target_histogram_unittest.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright 2018 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 "media/learning/impl/target_histogram.h"
-
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace media {
-namespace learning {
-
-class TargetHistogramTest : public testing::Test {
- public:
-  TargetHistogramTest() : value_1(123), value_2(456), value_3(789) {}
-
-  TargetHistogram histogram_;
-
-  TargetValue value_1;
-  const size_t counts_1 = 100;
-
-  TargetValue value_2;
-  const size_t counts_2 = 10;
-
-  TargetValue value_3;
-};
-
-TEST_F(TargetHistogramTest, EmptyTargetHistogramHasZeroCounts) {
-  EXPECT_EQ(histogram_.total_counts(), 0u);
-}
-
-TEST_F(TargetHistogramTest, AddingCountsWorks) {
-  histogram_[value_1] = counts_1;
-  EXPECT_EQ(histogram_.total_counts(), counts_1);
-  EXPECT_EQ(histogram_[value_1], counts_1);
-  histogram_[value_1] += counts_1;
-  EXPECT_EQ(histogram_.total_counts(), counts_1 * 2u);
-  EXPECT_EQ(histogram_[value_1], counts_1 * 2u);
-}
-
-TEST_F(TargetHistogramTest, MultipleValuesAreSeparate) {
-  histogram_[value_1] = counts_1;
-  histogram_[value_2] = counts_2;
-  EXPECT_EQ(histogram_.total_counts(), counts_1 + counts_2);
-  EXPECT_EQ(histogram_[value_1], counts_1);
-  EXPECT_EQ(histogram_[value_2], counts_2);
-}
-
-TEST_F(TargetHistogramTest, AddingTargetValues) {
-  histogram_ += value_1;
-  EXPECT_EQ(histogram_.total_counts(), 1u);
-  EXPECT_EQ(histogram_[value_1], 1u);
-  EXPECT_EQ(histogram_[value_2], 0u);
-
-  histogram_ += value_1;
-  EXPECT_EQ(histogram_.total_counts(), 2u);
-  EXPECT_EQ(histogram_[value_1], 2u);
-  EXPECT_EQ(histogram_[value_2], 0u);
-
-  histogram_ += value_2;
-  EXPECT_EQ(histogram_.total_counts(), 3u);
-  EXPECT_EQ(histogram_[value_1], 2u);
-  EXPECT_EQ(histogram_[value_2], 1u);
-}
-
-TEST_F(TargetHistogramTest, AddingTargetHistograms) {
-  histogram_[value_1] = counts_1;
-
-  TargetHistogram rhs;
-  rhs[value_2] = counts_2;
-
-  histogram_ += rhs;
-
-  EXPECT_EQ(histogram_.total_counts(), counts_1 + counts_2);
-  EXPECT_EQ(histogram_[value_1], counts_1);
-  EXPECT_EQ(histogram_[value_2], counts_2);
-}
-
-TEST_F(TargetHistogramTest, FindSingularMaxFindsTheSingularMax) {
-  histogram_[value_1] = counts_1;
-  histogram_[value_2] = counts_2;
-  ASSERT_TRUE(counts_1 > counts_2);
-
-  TargetValue max_value(0);
-  double max_counts = 0;
-  EXPECT_TRUE(histogram_.FindSingularMax(&max_value, &max_counts));
-  EXPECT_EQ(max_value, value_1);
-  EXPECT_EQ(max_counts, counts_1);
-}
-
-TEST_F(TargetHistogramTest, FindSingularMaxFindsTheSingularMaxAlternateOrder) {
-  // Switch the order, to handle sorting in different directions.
-  histogram_[value_1] = counts_2;
-  histogram_[value_2] = counts_1;
-  ASSERT_TRUE(counts_1 > counts_2);
-
-  TargetValue max_value(0);
-  double max_counts = 0;
-  EXPECT_TRUE(histogram_.FindSingularMax(&max_value, &max_counts));
-  EXPECT_EQ(max_value, value_2);
-  EXPECT_EQ(max_counts, counts_1);
-}
-
-TEST_F(TargetHistogramTest, FindSingularMaxReturnsFalsForNonSingularMax) {
-  histogram_[value_1] = counts_1;
-  histogram_[value_2] = counts_1;
-
-  TargetValue max_value(0);
-  double max_counts = 0;
-  EXPECT_FALSE(histogram_.FindSingularMax(&max_value, &max_counts));
-}
-
-TEST_F(TargetHistogramTest, FindSingularMaxIgnoresNonSingularNonMax) {
-  histogram_[value_1] = counts_1;
-  // |value_2| and |value_3| are tied, but not the max.
-  histogram_[value_2] = counts_2;
-  histogram_[value_3] = counts_2;
-  ASSERT_TRUE(counts_1 > counts_2);
-
-  TargetValue max_value(0);
-  double max_counts = 0;
-  EXPECT_TRUE(histogram_.FindSingularMax(&max_value, &max_counts));
-  EXPECT_EQ(max_value, value_1);
-  EXPECT_EQ(max_counts, counts_1);
-}
-
-TEST_F(TargetHistogramTest, FindSingularMaxDoesntRequireCounts) {
-  histogram_[value_1] = counts_1;
-
-  TargetValue max_value(0);
-  EXPECT_TRUE(histogram_.FindSingularMax(&max_value));
-  EXPECT_EQ(max_value, value_1);
-}
-
-TEST_F(TargetHistogramTest, EqualDistributionsCompareAsEqual) {
-  histogram_[value_1] = counts_1;
-  TargetHistogram histogram_2;
-  histogram_2[value_1] = counts_1;
-
-  EXPECT_TRUE(histogram_ == histogram_2);
-}
-
-TEST_F(TargetHistogramTest, UnequalDistributionsCompareAsNotEqual) {
-  histogram_[value_1] = counts_1;
-  TargetHistogram histogram_2;
-  histogram_2[value_2] = counts_2;
-
-  EXPECT_FALSE(histogram_ == histogram_2);
-}
-
-TEST_F(TargetHistogramTest, WeightedLabelledExamplesCountCorrectly) {
-  LabelledExample example = {{}, value_1};
-  example.weight = counts_1;
-  histogram_ += example;
-
-  TargetHistogram histogram_2;
-  for (size_t i = 0; i < counts_1; i++)
-    histogram_2 += value_1;
-
-  EXPECT_EQ(histogram_, histogram_2);
-}
-
-TEST_F(TargetHistogramTest, Normalize) {
-  histogram_[value_1] = counts_1;
-  histogram_[value_2] = counts_2;
-  histogram_.Normalize();
-  EXPECT_EQ(histogram_[value_1],
-            counts_1 / static_cast<double>(counts_1 + counts_2));
-  EXPECT_EQ(histogram_[value_2],
-            counts_2 / static_cast<double>(counts_1 + counts_2));
-}
-
-TEST_F(TargetHistogramTest, NormalizeEmptyDistribution) {
-  // Normalizing an empty distribution should result in an empty distribution.
-  histogram_.Normalize();
-  EXPECT_EQ(histogram_.total_counts(), 0);
-}
-
-}  // namespace learning
-}  // namespace media
diff --git a/media/learning/mojo/mojo_learning_task_controller_service.cc b/media/learning/mojo/mojo_learning_task_controller_service.cc
index 5f25122f..22ab35ac 100644
--- a/media/learning/mojo/mojo_learning_task_controller_service.cc
+++ b/media/learning/mojo/mojo_learning_task_controller_service.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/bind.h"
 #include "media/learning/common/learning_task_controller.h"
 
 namespace media {
@@ -72,5 +73,11 @@
   impl_->UpdateDefaultTarget(id, default_target);
 }
 
+void MojoLearningTaskControllerService::PredictDistribution(
+    const FeatureVector& features,
+    PredictDistributionCallback callback) {
+  impl_->PredictDistribution(features, std::move(callback));
+}
+
 }  // namespace learning
 }  // namespace media
diff --git a/media/learning/mojo/mojo_learning_task_controller_service.h b/media/learning/mojo/mojo_learning_task_controller_service.h
index 80b76f4..3222681 100644
--- a/media/learning/mojo/mojo_learning_task_controller_service.h
+++ b/media/learning/mojo/mojo_learning_task_controller_service.h
@@ -38,6 +38,8 @@
   void UpdateDefaultTarget(
       const base::UnguessableToken& id,
       const base::Optional<TargetValue>& default_target) override;
+  void PredictDistribution(const FeatureVector& features,
+                           PredictDistributionCallback callback) override;
 
  protected:
   const LearningTask task_;
diff --git a/media/learning/mojo/mojo_learning_task_controller_service_unittest.cc b/media/learning/mojo/mojo_learning_task_controller_service_unittest.cc
index 7b931cf..39d5b0d 100644
--- a/media/learning/mojo/mojo_learning_task_controller_service_unittest.cc
+++ b/media/learning/mojo/mojo_learning_task_controller_service_unittest.cc
@@ -50,6 +50,12 @@
       return LearningTask::Empty();
     }
 
+    void PredictDistribution(const FeatureVector& features,
+                             PredictionCB callback) override {
+      predict_distribution_args_.features_ = features;
+      predict_distribution_args_.callback_ = std::move(callback);
+    }
+
     struct {
       base::UnguessableToken id_;
       FeatureVector features_;
@@ -69,6 +75,11 @@
       base::UnguessableToken id_;
       base::Optional<TargetValue> default_target_;
     } update_default_args_;
+
+    struct {
+      FeatureVector features_;
+      PredictionCB callback_;
+    } predict_distribution_args_;
   };
 
  public:
@@ -193,5 +204,27 @@
             controller_raw_->update_default_args_.default_target_);
 }
 
+TEST_F(MojoLearningTaskControllerServiceTest, PredictDistribution) {
+  FeatureVector features = {FeatureValue(123), FeatureValue(456)};
+  TargetHistogram observed_prediction;
+  service_->PredictDistribution(
+      features, base::BindOnce(
+                    [](TargetHistogram* test_storage,
+                       const base::Optional<TargetHistogram>& predicted) {
+                      *test_storage = *predicted;
+                    },
+                    &observed_prediction));
+  EXPECT_EQ(features, controller_raw_->predict_distribution_args_.features_);
+  EXPECT_FALSE(controller_raw_->predict_distribution_args_.callback_.is_null());
+
+  TargetHistogram expected_prediction;
+  expected_prediction[TargetValue(1)] = 1.0;
+  expected_prediction[TargetValue(2)] = 2.0;
+  expected_prediction[TargetValue(3)] = 3.0;
+  std::move(controller_raw_->predict_distribution_args_.callback_)
+      .Run(expected_prediction);
+  EXPECT_EQ(expected_prediction, observed_prediction);
+}
+
 }  // namespace learning
 }  // namespace media
diff --git a/media/learning/mojo/public/cpp/learning_mojom_traits.cc b/media/learning/mojo/public/cpp/learning_mojom_traits.cc
index 12841f9..9124e8b 100644
--- a/media/learning/mojo/public/cpp/learning_mojom_traits.cc
+++ b/media/learning/mojo/public/cpp/learning_mojom_traits.cc
@@ -49,4 +49,16 @@
   out_observation_completion->weight = data.weight();
   return true;
 }
+
+// static
+bool StructTraits<media::learning::mojom::TargetHistogramDataView,
+                  media::learning::TargetHistogram>::
+    Read(media::learning::mojom::TargetHistogramDataView data,
+         media::learning::TargetHistogram* out_target_histogram) {
+  if (!data.ReadCounts(&out_target_histogram->counts_))
+    return false;
+
+  return true;
+}
+
 }  // namespace mojo
diff --git a/media/learning/mojo/public/cpp/learning_mojom_traits.h b/media/learning/mojo/public/cpp/learning_mojom_traits.h
index 52f8ed5a..2c42b7f6 100644
--- a/media/learning/mojo/public/cpp/learning_mojom_traits.h
+++ b/media/learning/mojo/public/cpp/learning_mojom_traits.h
@@ -15,9 +15,8 @@
 namespace mojo {
 
 template <>
-class StructTraits<media::learning::mojom::LabelledExampleDataView,
-                   media::learning::LabelledExample> {
- public:
+struct StructTraits<media::learning::mojom::LabelledExampleDataView,
+                    media::learning::LabelledExample> {
   static const std::vector<media::learning::FeatureValue>& features(
       const media::learning::LabelledExample& e) {
     return e.features;
@@ -32,9 +31,8 @@
 };
 
 template <>
-class StructTraits<media::learning::mojom::FeatureValueDataView,
-                   media::learning::FeatureValue> {
- public:
+struct StructTraits<media::learning::mojom::FeatureValueDataView,
+                    media::learning::FeatureValue> {
   static int64_t value(const media::learning::FeatureValue& e) {
     return e.value();
   }
@@ -43,9 +41,8 @@
 };
 
 template <>
-class StructTraits<media::learning::mojom::TargetValueDataView,
-                   media::learning::TargetValue> {
- public:
+struct StructTraits<media::learning::mojom::TargetValueDataView,
+                    media::learning::TargetValue> {
   static int64_t value(const media::learning::TargetValue& e) {
     return e.value();
   }
@@ -54,9 +51,8 @@
 };
 
 template <>
-class StructTraits<media::learning::mojom::ObservationCompletionDataView,
-                   media::learning::ObservationCompletion> {
- public:
+struct StructTraits<media::learning::mojom::ObservationCompletionDataView,
+                    media::learning::ObservationCompletion> {
   static media::learning::TargetValue target_value(
       const media::learning::ObservationCompletion& e) {
     return e.target_value;
@@ -70,6 +66,18 @@
       media::learning::ObservationCompletion* out_observation_completion);
 };
 
+template <>
+struct StructTraits<media::learning::mojom::TargetHistogramDataView,
+                    media::learning::TargetHistogram> {
+  static media::learning::TargetHistogram::CountMap counts(
+      const media::learning::TargetHistogram& e) {
+    return e.counts();
+  }
+
+  static bool Read(media::learning::mojom::TargetHistogramDataView data,
+                   media::learning::TargetHistogram* out_target_histogram);
+};
+
 }  // namespace mojo
 
 #endif  // MEDIA_LEARNING_MOJO_PUBLIC_CPP_LEARNING_MOJOM_TRAITS_H_
diff --git a/media/learning/mojo/public/cpp/mojo_learning_task_controller.cc b/media/learning/mojo/public/cpp/mojo_learning_task_controller.cc
index a4a8294..8a1df7d 100644
--- a/media/learning/mojo/public/cpp/mojo_learning_task_controller.cc
+++ b/media/learning/mojo/public/cpp/mojo_learning_task_controller.cc
@@ -45,5 +45,11 @@
   return task_;
 }
 
+void MojoLearningTaskController::PredictDistribution(
+    const FeatureVector& features,
+    PredictionCB callback) {
+  controller_->PredictDistribution(features, std::move(callback));
+}
+
 }  // namespace learning
 }  // namespace media
diff --git a/media/learning/mojo/public/cpp/mojo_learning_task_controller.h b/media/learning/mojo/public/cpp/mojo_learning_task_controller.h
index 708faf4..9a32b044 100644
--- a/media/learning/mojo/public/cpp/mojo_learning_task_controller.h
+++ b/media/learning/mojo/public/cpp/mojo_learning_task_controller.h
@@ -40,6 +40,8 @@
       base::UnguessableToken id,
       const base::Optional<TargetValue>& default_target) override;
   const LearningTask& GetLearningTask() override;
+  void PredictDistribution(const FeatureVector& features,
+                           PredictionCB callback) override;
 
  private:
   LearningTask task_;
diff --git a/media/learning/mojo/public/cpp/mojo_learning_task_controller_unittest.cc b/media/learning/mojo/public/cpp/mojo_learning_task_controller_unittest.cc
index c6c7720c..2b902f0d 100644
--- a/media/learning/mojo/public/cpp/mojo_learning_task_controller_unittest.cc
+++ b/media/learning/mojo/public/cpp/mojo_learning_task_controller_unittest.cc
@@ -6,6 +6,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/bind_helpers.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/test/task_environment.h"
@@ -48,6 +49,12 @@
       update_default_args_.default_target_ = default_target;
     }
 
+    void PredictDistribution(const FeatureVector& features,
+                             PredictDistributionCallback callback) override {
+      predict_args_.features_ = features;
+      predict_args_.callback_ = std::move(callback);
+    }
+
     struct {
       base::UnguessableToken id_;
       FeatureVector features_;
@@ -67,6 +74,11 @@
       base::UnguessableToken id_;
       base::Optional<TargetValue> default_target_;
     } update_default_args_;
+
+    struct {
+      FeatureVector features_;
+      PredictDistributionCallback callback_;
+    } predict_args_;
   };
 
  public:
@@ -165,5 +177,30 @@
   EXPECT_EQ(id, fake_learning_controller_.cancel_args_.id_);
 }
 
+TEST_F(MojoLearningTaskControllerTest, PredictDistribution) {
+  FeatureVector features = {FeatureValue(123), FeatureValue(456)};
+
+  TargetHistogram observed_prediction;
+  learning_controller_->PredictDistribution(
+      features, base::BindOnce(
+                    [](TargetHistogram* test_storage,
+                       const base::Optional<TargetHistogram>& predicted) {
+                      *test_storage = *predicted;
+                    },
+                    &observed_prediction));
+  task_environment_.RunUntilIdle();
+  EXPECT_EQ(features, fake_learning_controller_.predict_args_.features_);
+  EXPECT_FALSE(fake_learning_controller_.predict_args_.callback_.is_null());
+
+  TargetHistogram expected_prediction;
+  expected_prediction[TargetValue(1)] = 1.0;
+  expected_prediction[TargetValue(2)] = 2.0;
+  expected_prediction[TargetValue(3)] = 3.0;
+  std::move(fake_learning_controller_.predict_args_.callback_)
+      .Run(expected_prediction);
+  task_environment_.RunUntilIdle();
+  EXPECT_EQ(observed_prediction, expected_prediction);
+}
+
 }  // namespace learning
 }  // namespace media
diff --git a/media/learning/mojo/public/mojom/learning_task_controller.mojom b/media/learning/mojo/public/mojom/learning_task_controller.mojom
index d572f8f..782c860 100644
--- a/media/learning/mojo/public/mojom/learning_task_controller.mojom
+++ b/media/learning/mojo/public/mojom/learning_task_controller.mojom
@@ -41,4 +41,9 @@
   // so that the observation will be cancelled if the controller is destroyed.
   UpdateDefaultTarget(mojo_base.mojom.UnguessableToken id,
           TargetValue? default_target);
+
+  // Asynchronously predicts distribution for given |features|. |callback| will
+  // receive a base::nullopt prediction when model is not available.
+  PredictDistribution(array<FeatureValue> features)
+      => (TargetHistogram? predicted);
 };
diff --git a/media/learning/mojo/public/mojom/learning_types.mojom b/media/learning/mojo/public/mojom/learning_types.mojom
index cc4691852..c2a4b8f 100644
--- a/media/learning/mojo/public/mojom/learning_types.mojom
+++ b/media/learning/mojo/public/mojom/learning_types.mojom
@@ -25,3 +25,8 @@
   TargetValue target_value;
   uint64 weight = 1;
 };
+
+// learning::TargetHistogram (common/target_histogram.h)
+struct TargetHistogram {
+  map<TargetValue, double> counts;
+};
diff --git a/media/learning/mojo/public/mojom/learning_types.typemap b/media/learning/mojo/public/mojom/learning_types.typemap
index cb7d19c..74528c7 100644
--- a/media/learning/mojo/public/mojom/learning_types.typemap
+++ b/media/learning/mojo/public/mojom/learning_types.typemap
@@ -9,12 +9,11 @@
   "//media/learning/mojo/public/cpp/learning_mojom_traits.cc",
   "//media/learning/mojo/public/cpp/learning_mojom_traits.h",
 ]
-public_deps = [
-  "//media/learning/common",
-]
+public_deps = [ "//media/learning/common" ]
 type_mappings = [
   "media.learning.mojom.LabelledExample=::media::learning::LabelledExample",
   "media.learning.mojom.FeatureValue=::media::learning::FeatureValue",
   "media.learning.mojom.TargetValue=::media::learning::TargetValue",
   "media.learning.mojom.ObservationCompletion=::media::learning::ObservationCompletion",
+  "media.learning.mojom.TargetHistogram=::media::learning::TargetHistogram",
 ]
diff --git a/media/renderers/paint_canvas_video_renderer.cc b/media/renderers/paint_canvas_video_renderer.cc
index 0d53378..b2df9b6 100644
--- a/media/renderers/paint_canvas_video_renderer.cc
+++ b/media/renderers/paint_canvas_video_renderer.cc
@@ -457,22 +457,23 @@
                                       size_t task_index,
                                       size_t n_tasks,
                                       base::RepeatingClosure* done) {
+  const VideoPixelFormat format = video_frame->format();
+  const int width = video_frame->visible_rect().width();
+  const int height = video_frame->visible_rect().height();
+
   size_t rows_per_chunk = 1;
   for (size_t plane = 0; plane < VideoFrame::kMaxPlanes; ++plane) {
-    if (VideoFrame::IsValidPlane(video_frame->format(), plane)) {
+    if (VideoFrame::IsValidPlane(format, plane)) {
       rows_per_chunk =
-          LCM(rows_per_chunk,
-              VideoFrame::SampleSize(video_frame->format(), plane).height());
+          LCM(rows_per_chunk, VideoFrame::SampleSize(format, plane).height());
     }
   }
 
-  int width = video_frame->visible_rect().width();
-  int height = video_frame->visible_rect().height();
-
   base::CheckedNumeric<size_t> chunks = height / rows_per_chunk;
   DCHECK_LE(height % rows_per_chunk, 1UL);
-  size_t chunk_start = (chunks * task_index / n_tasks).ValueOrDie();
-  size_t chunk_end = (chunks * (task_index + 1) / n_tasks).ValueOrDie();
+  const size_t chunk_start = (chunks * task_index / n_tasks).ValueOrDie();
+  const size_t chunk_end = (chunks * (task_index + 1) / n_tasks).ValueOrDie();
+  const size_t rows = (chunk_end - chunk_start) * rows_per_chunk;
 
   struct {
     int stride;
@@ -480,20 +481,21 @@
   } plane_meta[VideoFrame::kMaxPlanes];
 
   for (size_t plane = 0; plane < VideoFrame::kMaxPlanes; ++plane) {
-    if (VideoFrame::IsValidPlane(video_frame->format(), plane)) {
-      auto& meta = plane_meta[plane];
-      meta.stride = video_frame->stride(plane);
+    if (VideoFrame::IsValidPlane(format, plane)) {
+      plane_meta[plane] = {
+          // Note: Unlike |data|, stride does not need to be adjusted by the
+          // visible rect and sample size. Adding the full frame stride to a
+          // pixel on row N and column M will wrap to column M on row N + 1.
+          .stride = video_frame->stride(plane),
 
-      const uint8_t* data = video_frame->visible_data(plane);
-      int rows = video_frame->rows(plane);
-      meta.data =
-          data + meta.stride * (chunk_start * rows_per_chunk * rows / height);
+          .data = video_frame->visible_data(plane) +
+                  video_frame->stride(plane) * (chunk_start * rows_per_chunk) /
+                      VideoFrame::SampleSize(format, plane).height()};
     }
   }
 
   uint8_t* pixels = static_cast<uint8_t*>(rgb_pixels) +
                     row_bytes * chunk_start * rows_per_chunk;
-  size_t rows = (chunk_end - chunk_start) * rows_per_chunk;
 
   // TODO(hubbe): This should really default to the rec709 colorspace.
   // https://crbug.com/828599
@@ -1184,10 +1186,10 @@
       break;
   }
 
-  constexpr size_t task_bytes = 1024 * 1024;  // 1 MiB
-  size_t frame_bytes = row_bytes * video_frame->visible_rect().height();
-  size_t n_tasks =
-      std::min<size_t>(std::max<size_t>(1, frame_bytes / task_bytes),
+  constexpr size_t kTaskBytes = 1024 * 1024;  // 1 MiB
+  const size_t frame_bytes = row_bytes * video_frame->visible_rect().height();
+  const size_t n_tasks =
+      std::min<size_t>(std::max<size_t>(1, frame_bytes / kTaskBytes),
                        base::SysInfo::NumberOfProcessors());
   base::WaitableEvent event;
   base::RepeatingClosure barrier = base::BarrierClosure(
diff --git a/media/renderers/paint_canvas_video_renderer_unittest.cc b/media/renderers/paint_canvas_video_renderer_unittest.cc
index 9690188..6962f843 100644
--- a/media/renderers/paint_canvas_video_renderer_unittest.cc
+++ b/media/renderers/paint_canvas_video_renderer_unittest.cc
@@ -8,6 +8,7 @@
 #include "base/bind.h"
 #include "base/macros.h"
 #include "base/memory/aligned_memory.h"
+#include "base/sys_byteorder.h"
 #include "base/test/task_environment.h"
 #include "cc/paint/paint_flags.h"
 #include "cc/paint/skia_paint_canvas.h"
@@ -26,6 +27,7 @@
 #include "media/renderers/paint_canvas_video_renderer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/libyuv/include/libyuv/convert.h"
+#include "third_party/libyuv/include/libyuv/scale.h"
 #include "third_party/skia/include/core/SkImage.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 #include "third_party/skia/include/core/SkSurface.h"
@@ -384,7 +386,7 @@
 
   SkBitmap bitmap_;
   cc::SkiaPaintCanvas target_canvas_;
-  base::test::SingleThreadTaskEnvironment task_environment_;
+  base::test::TaskEnvironment task_environment_;
 
   DISALLOW_COPY_AND_ASSIGN(PaintCanvasVideoRendererTest);
 };
@@ -624,6 +626,58 @@
   EXPECT_EQ(SK_ColorBLUE, bitmap()->getColor(kWidth * 3 / 8, kHeight * 3 / 6));
 }
 
+uint32_t MaybeConvertABGRToARGB(uint32_t abgr) {
+#if SK_B32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_R32_SHIFT == 16 && \
+    SK_A32_SHIFT == 24
+  return abgr;
+#else
+  return (base::ByteSwap(abgr & 0x00FFFFFF) >> 8) | (abgr & 0xFF000000);
+#endif
+}
+
+TEST_F(PaintCanvasVideoRendererTest, CroppedFrameToRGBParallel) {
+  // We need a test frame large enough to trigger parallel conversion. So we use
+  // cropped_frame() as a base and scale it up. Note: Visible rect and natural
+  // size must be even.
+  auto test_frame = VideoFrame::CreateFrame(
+      PIXEL_FORMAT_I420, gfx::Size(3840, 2160), gfx::Rect(1440, 810, 1920, 810),
+      gfx::Size(1920, 810), base::TimeDelta());
+
+  // Fill in the frame with the same data as the cropped frame.
+  libyuv::I420Scale(cropped_frame()->data(0), cropped_frame()->stride(0),
+                    cropped_frame()->data(1), cropped_frame()->stride(1),
+                    cropped_frame()->data(2), cropped_frame()->stride(2),
+                    cropped_frame()->coded_size().width(),
+                    cropped_frame()->coded_size().height(), test_frame->data(0),
+                    test_frame->stride(0), test_frame->data(1),
+                    test_frame->stride(1), test_frame->data(2),
+                    test_frame->stride(2), test_frame->coded_size().width(),
+                    test_frame->coded_size().height(), libyuv::kFilterNone);
+
+  const gfx::Size visible_size = test_frame->visible_rect().size();
+  const size_t row_bytes = visible_size.width() * sizeof(SkColor);
+  const size_t allocation_size = row_bytes * visible_size.height();
+
+  std::unique_ptr<uint8_t, base::AlignedFreeDeleter> memory(
+      static_cast<uint8_t*>(base::AlignedAlloc(
+          allocation_size, media::VideoFrame::kFrameAddressAlignment)));
+  memset(memory.get(), 0, allocation_size);
+
+  PaintCanvasVideoRenderer::ConvertVideoFrameToRGBPixels(
+      test_frame.get(), memory.get(), row_bytes);
+
+  const uint32_t* rgb_pixels = reinterpret_cast<uint32_t*>(memory.get());
+
+  // Check the corners; this is sufficient to reveal https://crbug.com/1027442.
+  EXPECT_EQ(SK_ColorBLACK, rgb_pixels[0]);
+  EXPECT_EQ(MaybeConvertABGRToARGB(SK_ColorRED),
+            rgb_pixels[visible_size.width() - 1]);
+  EXPECT_EQ(SK_ColorGREEN,
+            rgb_pixels[visible_size.width() * (visible_size.height() - 1)]);
+  EXPECT_EQ(MaybeConvertABGRToARGB(SK_ColorBLUE),
+            rgb_pixels[(visible_size.width() - 1) * visible_size.height()]);
+}
+
 TEST_F(PaintCanvasVideoRendererTest, CroppedFrame_NoScaling) {
   SkBitmap bitmap = AllocBitmap(kWidth, kHeight);
   cc::SkiaPaintCanvas canvas(bitmap);
diff --git a/net/BUILD.gn b/net/BUILD.gn
index d47d101..9f5134b 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -754,7 +754,6 @@
       "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",
@@ -1170,7 +1169,6 @@
       "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/android/java/src/org/chromium/net/ProxyChangeListener.java b/net/android/java/src/org/chromium/net/ProxyChangeListener.java
index 97f6277..8b88d996 100644
--- a/net/android/java/src/org/chromium/net/ProxyChangeListener.java
+++ b/net/android/java/src/org/chromium/net/ProxyChangeListener.java
@@ -233,10 +233,8 @@
             return ProxyConfig.DIRECT;
         }
 
-        // TODO(laisminchillo): replace '29' with 'Build.VERSION_CODES.Q'
-        // when Android Q is finalized for release
-        if (Build.VERSION.SDK_INT == 29 && proxyInfo.getHost().equals("localhost")
-                && proxyInfo.getPort() == -1) {
+        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q
+                && proxyInfo.getHost().equals("localhost") && proxyInfo.getPort() == -1) {
             // There's a bug in Android Q's PAC support. If ConnectivityManager
             // returns localhost:-1 then use the intent from the PROXY_CHANGE_ACTION
             // broadcast to extract the ProxyConfig. See http://crbug.com/993538.
diff --git a/net/http2/platform/impl/http2_export_impl.h b/net/http2/platform/impl/http2_export_impl.h
deleted file mode 100644
index f2321c6..0000000
--- a/net/http2/platform/impl/http2_export_impl.h
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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 e9dbdc0..2185e89 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/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
-HTTP2_EXPORT_PRIVATE extern bool FLAGS_http2_varint_decode_64_bits;
+QUICHE_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 5fb4c43..483559f 100644
--- a/net/http2/platform/impl/http2_string_utils_impl.h
+++ b/net/http2/platform/impl/http2_string_utils_impl.h
@@ -14,7 +14,6 @@
 #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/platform/impl/quic_containers_impl.h b/net/quic/platform/impl/quic_containers_impl.h
index 0858a962..84f656a 100644
--- a/net/quic/platform/impl/quic_containers_impl.h
+++ b/net/quic/platform/impl/quic_containers_impl.h
@@ -9,11 +9,11 @@
 #include <unordered_map>
 #include <unordered_set>
 
-#include "base/containers/circular_deque.h"
 #include "base/containers/queue.h"
 #include "base/containers/small_map.h"
 #include "net/base/interval_set.h"
 #include "net/third_party/quiche/src/common/simple_linked_hash_map.h"
+#include "net/third_party/quiche/src/quic/core/quic_circular_deque.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 
 namespace quic {
@@ -69,7 +69,7 @@
 //
 // DOES NOT GUARANTEE POINTER OR ITERATOR STABILITY!
 template <typename T>
-using QuicDequeImpl = base::circular_deque<T>;
+using QuicDequeImpl = QuicCircularDeque<T>;
 
 // TODO(wub): Switch to absl::InlinedVector once it is allowed.
 template <typename T, size_t N, typename A = std::allocator<T>>
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h
index 53409f6..b0a740d 100644
--- a/net/quic/quic_flags_list.h
+++ b/net/quic/quic_flags_list.h
@@ -85,7 +85,7 @@
 
 // Default enables QUIC ack decimation and adds a connection option to disable
 // it.
-QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_ack_decimation, false)
+QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_ack_decimation, true)
 
 // If true, QUIC offload pacing when using USPS as egress method.
 QUIC_FLAG(bool, FLAGS_quic_restart_flag_quic_offload_pacing_to_usps2, false)
@@ -406,3 +406,7 @@
 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/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc
index 87c61b4a..4f721020 100644
--- a/printing/backend/cups_helper.cc
+++ b/printing/backend/cups_helper.cc
@@ -31,13 +31,14 @@
 // This section contains helper code for PPD parsing for semantic capabilities.
 namespace {
 
-const char kColorDevice[] = "ColorDevice";
-const char kColorModel[] = "ColorModel";
-const char kColorMode[] = "ColorMode";
-const char kProcessColorModel[] = "ProcessColorModel";
-const char kPrintoutMode[] = "PrintoutMode";
-const char kDraftGray[] = "Draft.Gray";
-const char kHighGray[] = "High.Gray";
+constexpr char kColorDevice[] = "ColorDevice";
+constexpr char kColorModel[] = "ColorModel";
+constexpr char kColorMode[] = "ColorMode";
+constexpr char kInk[] = "Ink";
+constexpr char kProcessColorModel[] = "ProcessColorModel";
+constexpr char kPrintoutMode[] = "PrintoutMode";
+constexpr char kDraftGray[] = "Draft.Gray";
+constexpr char kHighGray[] = "High.Gray";
 
 constexpr char kDuplex[] = "Duplex";
 constexpr char kDuplexNone[] = "None";
@@ -370,6 +371,32 @@
   return true;
 }
 
+bool GetEpsonInkSettings(ppd_file_t* ppd,
+                         ColorModel* color_model_for_black,
+                         ColorModel* color_model_for_color,
+                         bool* color_is_default) {
+  // Epson printers use "Ink" attribute in their PPDs.
+  ppd_option_t* color_mode_option = ppdFindOption(ppd, kInk);
+  if (!color_mode_option)
+    return false;
+
+  if (ppdFindChoice(color_mode_option, kColor))
+    *color_model_for_color = EPSON_INK_COLOR;
+  if (ppdFindChoice(color_mode_option, kMono))
+    *color_model_for_black = EPSON_INK_MONO;
+
+  ppd_choice_t* mode_choice = ppdFindMarkedChoice(ppd, kInk);
+  if (!mode_choice) {
+    mode_choice =
+        ppdFindChoice(color_mode_option, color_mode_option->defchoice);
+  }
+
+  if (mode_choice) {
+    *color_is_default = EqualsCaseInsensitiveASCII(mode_choice->choice, kColor);
+  }
+  return true;
+}
+
 bool GetProcessColorModelSettings(ppd_file_t* ppd,
                                   ColorModel* color_model_for_black,
                                   ColorModel* color_model_for_color,
@@ -417,6 +444,7 @@
          GetHPColorSettings(ppd, cm_black, cm_color, is_color) ||
          GetHPColorModeSettings(ppd, cm_black, cm_color, is_color) ||
          GetBrotherColorSettings(ppd, cm_black, cm_color, is_color) ||
+         GetEpsonInkSettings(ppd, cm_black, cm_color, is_color) ||
          GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color);
 }
 
diff --git a/printing/backend/cups_helper_unittest.cc b/printing/backend/cups_helper_unittest.cc
index ca91283..3779f6bd 100644
--- a/printing/backend/cups_helper_unittest.cc
+++ b/printing/backend/cups_helper_unittest.cc
@@ -319,9 +319,8 @@
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingHpPrinters) {
-  {
-    constexpr char kTestPpdData[] =
-        R"(*PPD-Adobe: "4.3"
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
 *ColorDevice: True
 *OpenUI *HPColorMode/Mode: PickOne
 *DefaultHPColorMode: ColorPrint
@@ -331,19 +330,39 @@
   << /ProcessColorModel /DeviceGray >> setpagedevice"
 *CloseUI: *HPColorMode)";
 
-    PrinterSemanticCapsAndDefaults caps;
-    EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
-    EXPECT_TRUE(caps.color_changeable);
-    EXPECT_TRUE(caps.color_default);
-    EXPECT_EQ(HP_COLOR_COLOR, caps.color_model);
-    EXPECT_EQ(HP_COLOR_BLACK, caps.bw_model);
-  }
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
+  EXPECT_TRUE(caps.color_changeable);
+  EXPECT_TRUE(caps.color_default);
+  EXPECT_EQ(HP_COLOR_COLOR, caps.color_model);
+  EXPECT_EQ(HP_COLOR_BLACK, caps.bw_model);
+}
+
+TEST(PrintBackendCupsHelperTest, TestPpdParsingEpsonPrinters) {
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*OpenUI *Ink/Ink: PickOne
+*DefaultInk: COLOR
+*Ink COLOR/Color: "
+  <</cupsBitsPerColor 8 /cupsColorOrder 0
+  /cupsColorSpace 1 /cupsCompression 1>> setpagedevice"
+*Ink MONO/Monochrome: "
+  <</cupsBitsPerColor 8 /cupsColorOrder 0
+  /cupsColorSpace 0 /cupsCompression 1>> setpagedevice"
+*CloseUI: *Ink)";
+
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
+  EXPECT_TRUE(caps.color_changeable);
+  EXPECT_TRUE(caps.color_default);
+  EXPECT_EQ(EPSON_INK_COLOR, caps.color_model);
+  EXPECT_EQ(EPSON_INK_MONO, caps.bw_model);
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingSamsungPrinters) {
-  {
-    constexpr char kTestPpdData[] =
-        R"(*PPD-Adobe: "4.3"
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
 *ColorDevice: True
 *OpenUI *ColorMode/Color Mode:  Boolean
 *DefaultColorMode: True
@@ -351,13 +370,12 @@
 *ColorMode True/Color: ""
 *CloseUI: *ColorMode)";
 
-    PrinterSemanticCapsAndDefaults caps;
-    EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
-    EXPECT_TRUE(caps.color_changeable);
-    EXPECT_TRUE(caps.color_default);
-    EXPECT_EQ(COLORMODE_COLOR, caps.color_model);
-    EXPECT_EQ(COLORMODE_MONOCHROME, caps.bw_model);
-  }
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
+  EXPECT_TRUE(caps.color_changeable);
+  EXPECT_TRUE(caps.color_default);
+  EXPECT_EQ(COLORMODE_COLOR, caps.color_model);
+  EXPECT_EQ(COLORMODE_MONOCHROME, caps.bw_model);
 }
 
 }  // namespace printing
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index bd3ce83..ebb2fa5 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -142,6 +142,8 @@
   BROTHER_CUPS_MONO,            // Used in Brother color laser printer PPDs.
   BROTHER_BRSCRIPT3_COLOR,      // Used in Brother BRScript3 color printer PPDs.
   BROTHER_BRSCRIPT3_BLACK,      // Used in Brother BRScript3 color printer PPDs.
+  EPSON_INK_COLOR,              // Used in Epson printer PPDs.
+  EPSON_INK_MONO,               // Used in Epson printer PPDs.
 };
 
 // What kind of margins to use.
diff --git a/printing/print_settings.cc b/printing/print_settings.cc
index e71eba6..45ad0af8 100644
--- a/printing/print_settings.cc
+++ b/printing/print_settings.cc
@@ -31,6 +31,7 @@
   constexpr char kCUPSColorModel[] = "ColorModel";
   constexpr char kCUPSPrintoutMode[] = "PrintoutMode";
   constexpr char kCUPSProcessColorModel[] = "ProcessColorModel";
+  constexpr char kCUPSInk[] = "Ink";
   constexpr char kCUPSBrotherMonoColor[] = "BRMonoColor";
   constexpr char kCUPSBrotherPrintQuality[] = "BRPrintQuality";
 #else
@@ -38,6 +39,7 @@
   constexpr char kCUPSColorModel[] = "cups-ColorModel";
   constexpr char kCUPSPrintoutMode[] = "cups-PrintoutMode";
   constexpr char kCUPSProcessColorModel[] = "cups-ProcessColorModel";
+  constexpr char kCUPSInk[] = "cups-Ink";
   constexpr char kCUPSBrotherMonoColor[] = "cups-BRMonoColor";
   constexpr char kCUPSBrotherPrintQuality[] = "cups-BRPrintQuality";
 #endif  // defined(OS_MACOSX)
@@ -129,6 +131,14 @@
       color_setting_name->assign(kCUPSBrotherPrintQuality);
       color_value->assign(kBlack);
       break;
+    case EPSON_INK_COLOR:
+      color_setting_name->assign(kCUPSInk);
+      color_value->assign(kColor);
+      break;
+    case EPSON_INK_MONO:
+      color_setting_name->assign(kCUPSInk);
+      color_value->assign(kMono);
+      break;
     default:
       color_value->assign(kGrayscale);
       break;
diff --git a/services/network/BUILD.gn b/services/network/BUILD.gn
index f535093..47a84f48 100644
--- a/services/network/BUILD.gn
+++ b/services/network/BUILD.gn
@@ -435,6 +435,7 @@
     "test/test_network_quality_tracker.h",
     "test/test_network_service_client.cc",
     "test/test_network_service_client.h",
+    "test/test_resource_scheduler.h",
     "test/test_shared_url_loader_factory.cc",
     "test/test_shared_url_loader_factory.h",
     "test/test_url_loader_client.cc",
diff --git a/services/network/resource_scheduler/resource_scheduler.cc b/services/network/resource_scheduler/resource_scheduler.cc
index f4fafd1..f8c789a0 100644
--- a/services/network/resource_scheduler/resource_scheduler.cc
+++ b/services/network/resource_scheduler/resource_scheduler.cc
@@ -1579,6 +1579,10 @@
   return long_queued_requests_dispatch_timer_.IsRunning();
 }
 
+base::SequencedTaskRunner* ResourceScheduler::task_runner() {
+  return task_runner_.get();
+}
+
 void ResourceScheduler::SetResourceSchedulerParamsManagerForTests(
     const ResourceSchedulerParamsManager& resource_scheduler_params_manager) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
diff --git a/services/network/resource_scheduler/resource_scheduler.h b/services/network/resource_scheduler/resource_scheduler.h
index 95503d2c..f02286722 100644
--- a/services/network/resource_scheduler/resource_scheduler.h
+++ b/services/network/resource_scheduler/resource_scheduler.h
@@ -84,12 +84,12 @@
   };
 
   explicit ResourceScheduler(const base::TickClock* tick_clock = nullptr);
-  ~ResourceScheduler();
+  virtual ~ResourceScheduler();
 
   // Requests that this ResourceScheduler schedule, and eventually loads, the
   // specified |url_request|. Caller should delete the returned ResourceThrottle
   // when the load completes or is canceled, before |url_request| is deleted.
-  std::unique_ptr<ScheduledResourceRequest> ScheduleRequest(
+  virtual std::unique_ptr<ScheduledResourceRequest> ScheduleRequest(
       int child_id,
       int route_id,
       bool is_async,
@@ -99,22 +99,23 @@
 
   // Called when a renderer is created. |network_quality_estimator| is allowed
   // to be null.
-  void OnClientCreated(int child_id,
-                       int route_id,
-                       net::NetworkQualityEstimator* network_quality_estimator);
+  virtual void OnClientCreated(
+      int child_id,
+      int route_id,
+      net::NetworkQualityEstimator* network_quality_estimator);
 
   // Called when a renderer is destroyed.
-  void OnClientDeleted(int child_id, int route_id);
+  virtual void OnClientDeleted(int child_id, int route_id);
 
   // Counts the number of active resource scheduler clients.
   // A client is active when it has at least one request either in the pending
   // request queue owned by the client or in flight.
   // Note: the counter is expected to be 0 for the most of time.
-  size_t ActiveSchedulerClientsCounter() const;
+  virtual size_t ActiveSchedulerClientsCounter() const;
 
   // Records the metrics related to number of in-flight requests that are
   // observed by the global resource scheduler.
-  void RecordGlobalRequestCountMetrics() const;
+  virtual void RecordGlobalRequestCountMetrics() const;
 
   // Client functions:
 
@@ -122,17 +123,17 @@
   // start the request loading if it wasn't already started.
   // If the scheduler does not know about the request, |new_priority| is set but
   // |intra_priority_value| is ignored.
-  void ReprioritizeRequest(net::URLRequest* request,
-                           net::RequestPriority new_priority,
-                           int intra_priority_value);
+  virtual void ReprioritizeRequest(net::URLRequest* request,
+                                   net::RequestPriority new_priority,
+                                   int intra_priority_value);
   // Same as above, but keeps the existing intra priority value.
-  void ReprioritizeRequest(net::URLRequest* request,
-                           net::RequestPriority new_priority);
+  virtual void ReprioritizeRequest(net::URLRequest* request,
+                                   net::RequestPriority new_priority);
 
   // Returns true if the timer that dispatches long queued requests is running.
-  bool IsLongQueuedRequestsDispatchTimerRunning() const;
+  virtual bool IsLongQueuedRequestsDispatchTimerRunning() const;
 
-  base::SequencedTaskRunner* task_runner() { return task_runner_.get(); }
+  virtual base::SequencedTaskRunner* task_runner();
 
   // Testing setters
   void SetTaskRunnerForTesting(
diff --git a/services/network/test/test_resource_scheduler.h b/services/network/test/test_resource_scheduler.h
new file mode 100644
index 0000000..c9800924
--- /dev/null
+++ b/services/network/test/test_resource_scheduler.h
@@ -0,0 +1,57 @@
+// 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 SERVICES_NETWORK_TEST_TEST_RESOURCE_SCHEDULER_H_
+#define SERVICES_NETWORK_TEST_TEST_RESOURCE_SCHEDULER_H_
+
+#include "services/network/resource_scheduler/resource_scheduler.h"
+
+namespace network {
+
+// Noop implementation of mojom::NetworkContext.  Useful to override to create
+// specialized mocks or fakes.
+class TestResourceScheduler : public ResourceScheduler {
+ public:
+  explicit TestResourceScheduler(const base::TickClock* tick_clock = nullptr) {}
+  ~TestResourceScheduler() override = default;
+
+  TestResourceScheduler(const TestResourceScheduler&) = delete;
+  TestResourceScheduler& operator=(const TestResourceScheduler&) = delete;
+
+  std::unique_ptr<ScheduledResourceRequest> ScheduleRequest(
+      int child_id,
+      int route_id,
+      bool is_async,
+      net::URLRequest* url_request) override {
+    return nullptr;
+  }
+
+  void OnClientCreated(
+      int child_id,
+      int route_id,
+      net::NetworkQualityEstimator* network_quality_estimator) override {}
+
+  void OnClientDeleted(int child_id, int route_id) override {}
+
+  size_t ActiveSchedulerClientsCounter() const override { return 0; }
+
+  void RecordGlobalRequestCountMetrics() const override {}
+
+  void ReprioritizeRequest(net::URLRequest* request,
+                           net::RequestPriority new_priority,
+                           int intra_priority_value) override {}
+
+  void ReprioritizeRequest(net::URLRequest* request,
+                           net::RequestPriority new_priority) override {}
+
+  bool IsLongQueuedRequestsDispatchTimerRunning() const override {
+    return false;
+  }
+
+  base::SequencedTaskRunner* task_runner() override { return nullptr; }
+};
+
+}  // namespace network
+
+#endif  // SERVICES_NETWORK_TEST_TEST_RESOURCE_SCHEDULER_H_
diff --git a/skia/ext/opacity_filter_canvas.cc b/skia/ext/opacity_filter_canvas.cc
index 5baed1d8..6a8419ab 100644
--- a/skia/ext/opacity_filter_canvas.cc
+++ b/skia/ext/opacity_filter_canvas.cc
@@ -11,12 +11,12 @@
                                          float opacity,
                                          bool disable_image_filtering)
     : INHERITED(canvas),
-      alpha_(SkScalarRoundToInt(opacity * 255)),
-      disable_image_filtering_(disable_image_filtering) { }
+      opacity_(opacity),
+      disable_image_filtering_(disable_image_filtering) {}
 
 bool OpacityFilterCanvas::onFilter(SkPaint& paint) const {
-  if (alpha_ < 255)
-    paint.setAlpha(alpha_);
+  if (opacity_ < 1.f)
+    paint.setAlphaf(paint.getAlphaf() * opacity_);
 
   if (disable_image_filtering_)
     paint.setFilterQuality(kNone_SkFilterQuality);
diff --git a/skia/ext/opacity_filter_canvas.h b/skia/ext/opacity_filter_canvas.h
index a3da08ce..f64a753ed 100644
--- a/skia/ext/opacity_filter_canvas.h
+++ b/skia/ext/opacity_filter_canvas.h
@@ -29,7 +29,7 @@
  private:
   typedef SkPaintFilterCanvas INHERITED;
 
-  int alpha_;
+  float opacity_;
   bool disable_image_filtering_;
 };
 
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index 38b2c1e9..c170cfa 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -1075,6 +1075,35 @@
           "--browser=release",
           "--passthrough",
           "-v",
+          "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu"
+        ],
+        "isolate_name": "telemetry_gpu_integration_test",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "webgl_conformance_gl_passthrough_tests",
+        "should_retry_with_patch": false,
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "gpu": "8086:0a2e",
+              "os": "mac-intel-stable"
+            }
+          ],
+          "idempotent": false,
+          "shards": 2
+        }
+      },
+      {
+        "args": [
+          "webgl_conformance",
+          "--show-stdout",
+          "--browser=release",
+          "--passthrough",
+          "-v",
           "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu",
           "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json"
         ],
@@ -1318,6 +1347,37 @@
           "--browser=release",
           "--passthrough",
           "-v",
+          "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu"
+        ],
+        "isolate_name": "telemetry_gpu_integration_test",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "webgl_conformance_gl_passthrough_tests",
+        "should_retry_with_patch": false,
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "gpu": "1002:6821",
+              "hidpi": "1",
+              "os": "mac-amd-stable",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "idempotent": false,
+          "shards": 2
+        }
+      },
+      {
+        "args": [
+          "webgl_conformance",
+          "--show-stdout",
+          "--browser=release",
+          "--passthrough",
+          "-v",
           "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu",
           "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json"
         ],
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index 68fb7eb..b1c4d5b 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -5041,24 +5041,6 @@
               "gpu": "none",
               "os": "Mac-10.13.6"
             }
-          ],
-          "shards": 10
-        },
-        "test": "browser_tests",
-        "test_target": "//chrome/test:browser_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "none",
-              "os": "Mac-10.13.6"
-            }
           ]
         },
         "test": "cacheinvalidation_unittests",
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index e243299..e14821f 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -91,8 +91,10 @@
     'remove_from': [
       'CrWinAsan(dll)', # https://crbug.com/935598
       'linux-win_cross-rel',
+      'mac-rel',  # crbug.com/1042757
       'ToTLinuxTSan',  # https://crbug.com/368525
       'Mac10.10 Tests',  # https://crbug.com/828031
+      'Mac10.13 Tests',  # https://crbug.com/1042757
       'Linux TSan Tests',  # https://crbug.com/368525
       'Win10 Tests x64 (dbg)',
     ],
@@ -1069,6 +1071,7 @@
       'Mac10.13 Tests (dbg)',
       'Mac ASan 64 Tests (1)',
       'ToTMacASan',
+      'mac-rel',
     ],
     'modifications': {
       'Win10 Tests x64': {
@@ -1108,6 +1111,7 @@
       'Mac10.13 Tests (dbg)',
       'Mac ASan 64 Tests (1)',
       'ToTMacASan',
+      'mac-rel',
     ],
   },
   'network_service_content_browsertests': {
@@ -1125,6 +1129,7 @@
       'Mac10.13 Tests (dbg)',
       'Mac ASan 64 Tests (1)',
       'ToTMacASan',
+      'mac-rel',
     ],
   },
   'network_service_extensions_browsertests': {
@@ -1141,6 +1146,7 @@
       'Mac10.13 Tests (dbg)',
       'Mac ASan 64 Tests (1)',
       'ToTMacASan',
+      'mac-rel',
     ],
   },
   'network_service_headless_browsertests': {
@@ -1162,6 +1168,7 @@
       'Mac10.13 Tests (dbg)',
       'Mac ASan 64 Tests (1)',
       'ToTMacASan',
+      'mac-rel',
     ],
     'modifications': {
       'Win10 Tests x64 (dbg)': {
@@ -1604,6 +1611,7 @@
       'Win10 Tests x64',
       'Win10 Tests x64 (dbg)',
       'Win10 Tests x64 Code Coverage',
+      'mac-rel',
     ],
   },
   'telemetry_unittests': {
@@ -2082,6 +2090,18 @@
           '--additional-driver-flag=--enable-blink-features=LayoutNGFragmentPaint',
         ],
       },
+      'mac-rel': {
+        'swarming': {
+          'dimension_sets': [
+            {
+              # Run the layout tests on a consistent set of hardware
+              # (Mac Minis).
+              'gpu': '8086:0a2e',
+            },
+          ],
+          'shards': 25,
+        },
+      },
       'mac10.10-blink-rel-dummy': {
         'swarming': {
           'shards': 20,
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 7ba97e9..c897c35 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -3868,6 +3868,7 @@
       'gpu_info_collection_telemetry_tests',
       'gpu_webgl2_conformance_telemetry_tests',
       'gpu_webgl_conformance_telemetry_tests',
+      'gpu_webgl_conformance_gl_passthrough_telemetry_tests',
     ],
 
     'gpu_angle_perf_smoke_isolated_scripts_and_test_buildbucket_api_gpu_use_cases': [
diff --git a/testing/buildbot/tryserver.chromium.mac.json b/testing/buildbot/tryserver.chromium.mac.json
new file mode 100644
index 0000000..4cf7d4db
--- /dev/null
+++ b/testing/buildbot/tryserver.chromium.mac.json
@@ -0,0 +1,1616 @@
+{
+  "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
+  "AAAAA2 See generate_buildbot_json.py to make changes": {},
+  "mac-rel": {
+    "gtest_tests": [
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "accessibility_unittests",
+        "test_target": "//ui/accessibility:accessibility_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "angle_unittests",
+        "test_target": "//third_party/angle/src/tests:angle_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "app_shell_unittests",
+        "test_target": "//extensions/shell:app_shell_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "base_unittests",
+        "test_target": "//base:base_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "base_util_unittests",
+        "test_target": "//base/util:base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "blink_common_unittests",
+        "test_target": "//third_party/blink/common:blink_common_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "blink_fuzzer_unittests",
+        "test_target": "//third_party/blink/renderer/platform:blink_fuzzer_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "blink_heap_unittests",
+        "test_target": "//third_party/blink/renderer/platform/heap:blink_heap_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "blink_platform_unittests",
+        "test_target": "//third_party/blink/renderer/platform:blink_platform_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webkit_unit_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "blink_unittests",
+        "test_target": "//third_party/blink/renderer/controller:blink_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "boringssl_crypto_tests",
+        "test_target": "//third_party/boringssl:boringssl_crypto_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "boringssl_ssl_tests",
+        "test_target": "//third_party/boringssl:boringssl_ssl_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "cacheinvalidation_unittests",
+        "test_target": "//third_party/cacheinvalidation:cacheinvalidation_unittests"
+      },
+      {
+        "args": [
+          "--gtest_filter=-*UsingRealWebcam*"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "capture_unittests",
+        "test_target": "//media/capture:capture_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "cast_unittests",
+        "test_target": "//media/cast:cast_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "cc_unittests",
+        "test_target": "//cc:cc_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "chrome_app_unittests",
+        "test_target": "//chrome/test:chrome_app_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "chromedriver_unittests",
+        "test_target": "//chrome/test/chromedriver:chromedriver_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "components_browsertests",
+        "test_target": "//components:components_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "components_unittests",
+        "test_target": "//components:components_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ],
+          "shards": 6
+        },
+        "test": "content_browsertests",
+        "test_target": "//content/test:content_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "content_nocompile_tests",
+        "test_target": "//content/test:content_nocompile_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "content_unittests",
+        "test_target": "//content/test:content_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "crashpad_tests",
+        "test_target": "//third_party/crashpad/crashpad:crashpad_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "cronet_tests",
+        "test_target": "//components/cronet:cronet_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "cronet_unittests",
+        "test_target": "//components/cronet:cronet_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "crypto_unittests",
+        "test_target": "//crypto:crypto_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "device_unittests",
+        "test_target": "//device:device_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "display_unittests",
+        "test_target": "//ui/display:display_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "events_unittests",
+        "test_target": "//ui/events:events_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "extensions_browsertests",
+        "test_target": "//extensions:extensions_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "extensions_unittests",
+        "test_target": "//extensions:extensions_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "filesystem_service_unittests",
+        "test_target": "//components/services/filesystem:filesystem_service_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "gcm_unit_tests",
+        "test_target": "//google_apis/gcm:gcm_unit_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "gfx_unittests",
+        "test_target": "//ui/gfx:gfx_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "gin_unittests",
+        "test_target": "//gin:gin_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "google_apis_unittests",
+        "test_target": "//google_apis:google_apis_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "gpu_unittests",
+        "test_target": "//gpu:gpu_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "gwp_asan_unittests",
+        "test_target": "//components/gwp_asan:gwp_asan_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "headless_browsertests",
+        "test_target": "//headless:headless_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "headless_unittests",
+        "test_target": "//headless:headless_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ],
+          "shards": 3
+        },
+        "test": "interactive_ui_tests",
+        "test_target": "//chrome/test:interactive_ui_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "ipc_tests",
+        "test_target": "//ipc:ipc_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "jingle_unittests",
+        "test_target": "//jingle:jingle_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "latency_unittests",
+        "test_target": "//ui/latency:latency_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "libjingle_xmpp_unittests",
+        "test_target": "//third_party/libjingle_xmpp:libjingle_xmpp_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "media_blink_unittests",
+        "test_target": "//media/blink:media_blink_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "media_service_unittests",
+        "test_target": "//media/mojo/services:media_service_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "media_unittests",
+        "test_target": "//media:media_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "message_center_unittests",
+        "test_target": "//ui/message_center:message_center_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "midi_unittests",
+        "test_target": "//media/midi:midi_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "mojo_unittests",
+        "test_target": "//mojo:mojo_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "nacl_loader_unittests",
+        "test_target": "//components/nacl/loader:nacl_loader_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "native_theme_unittests",
+        "test_target": "//ui/native_theme:native_theme_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "net_unittests",
+        "test_target": "//net:net_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "pdf_unittests",
+        "test_target": "//pdf:pdf_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "perfetto_unittests",
+        "test_target": "//third_party/perfetto:perfetto_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "ppapi_unittests",
+        "test_target": "//ppapi:ppapi_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "printing_unittests",
+        "test_target": "//printing:printing_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "remoting_unittests",
+        "test_target": "//remoting:remoting_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "sandbox_mac_unittests",
+        "test_target": "//sandbox/mac:sandbox_mac_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "service_manager_unittests",
+        "test_target": "//services/service_manager/tests:service_manager_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "services_unittests",
+        "test_target": "//services:services_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "shell_dialogs_unittests",
+        "test_target": "//ui/shell_dialogs:shell_dialogs_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "skia_unittests",
+        "test_target": "//skia:skia_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "snapshot_unittests",
+        "test_target": "//ui/snapshot:snapshot_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "sql_unittests",
+        "test_target": "//sql:sql_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "storage_unittests",
+        "test_target": "//storage:storage_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "sync_integration_tests",
+        "test_target": "//chrome/test:sync_integration_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "ui_base_unittests",
+        "test_target": "//ui/base:ui_base_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "ui_touch_selection_unittests",
+        "test_target": "//ui/touch_selection:ui_touch_selection_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "unit_tests",
+        "test_target": "//chrome/test:unit_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "updater_tests",
+        "test_target": "//chrome/updater:updater_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "url_unittests",
+        "test_target": "//url:url_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "views_unittests",
+        "test_target": "//ui/views:views_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "viz_unittests",
+        "test_target": "//components/viz:viz_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "wtf_unittests",
+        "test_target": "//third_party/blink/renderer/platform/wtf:wtf_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "xr_browser_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test": "xr_browser_tests",
+        "test_target": "//chrome/test:xr_browser_tests"
+      }
+    ],
+    "isolated_scripts": [
+      {
+        "isolate_name": "blink_python_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "blink_python_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//:blink_python_tests"
+      },
+      {
+        "args": [
+          "--test-type=integration"
+        ],
+        "isolate_name": "chromedriver_py_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "chromedriver_py_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//chrome/test/chromedriver:chromedriver_py_tests"
+      },
+      {
+        "isolate_name": "chromedriver_replay_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "chromedriver_replay_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//chrome/test/chromedriver:chromedriver_replay_unittests"
+      },
+      {
+        "args": [
+          "--gtest-benchmark-name=components_perftests"
+        ],
+        "isolate_name": "components_perftests",
+        "merge": {
+          "args": [
+            "--smoke-test-mode"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "components_perftests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//components:components_perftests"
+      },
+      {
+        "isolate_name": "content_shell_crash_test",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "content_shell_crash_test",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//content/shell:content_shell_crash_test"
+      },
+      {
+        "isolate_name": "flatbuffers_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "flatbuffers_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//third_party/flatbuffers:flatbuffers_unittests"
+      },
+      {
+        "isolate_name": "grit_python_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "grit_python_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//tools/grit:grit_python_unittests"
+      },
+      {
+        "isolate_name": "mac_signing_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "mac_signing_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//chrome/installer/mac:mac_signing_tests"
+      },
+      {
+        "isolate_name": "metrics_python_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "metrics_python_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//tools/metrics:metrics_python_tests"
+      },
+      {
+        "isolate_name": "telemetry_gpu_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "telemetry_gpu_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ],
+          "idempotent": false
+        },
+        "test_target": "//chrome/test:telemetry_gpu_unittests"
+      },
+      {
+        "args": [
+          "--jobs=1",
+          "--extra-browser-args=--disable-gpu"
+        ],
+        "isolate_name": "telemetry_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "telemetry_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ],
+          "idempotent": false,
+          "shards": 4
+        },
+        "test_target": "//chrome/test:telemetry_unittests"
+      },
+      {
+        "args": [
+          "--gtest-benchmark-name=views_perftests"
+        ],
+        "isolate_name": "views_perftests",
+        "merge": {
+          "args": [
+            "--smoke-test-mode"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "views_perftests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
+        "test_target": "//ui/views:views_perftests"
+      },
+      {
+        "args": [
+          "--num-retries=3"
+        ],
+        "isolate_name": "blink_web_tests",
+        "merge": {
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
+        },
+        "name": "webkit_layout_tests",
+        "results_handler": "layout tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "8086:0a2e",
+              "os": "Mac-10.13.6"
+            }
+          ],
+          "shards": 25
+        },
+        "test_target": "//:blink_web_tests"
+      }
+    ],
+    "scripts": [
+      {
+        "name": "check_static_initializers",
+        "script": "check_static_initializers.py",
+        "swarming": {}
+      },
+      {
+        "name": "webkit_lint",
+        "script": "blink_lint_expectations.py",
+        "swarming": {}
+      }
+    ]
+  }
+}
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 6715cd3..3d3723d5 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -4582,6 +4582,22 @@
     },
   },
   {
+    'name': 'tryserver.chromium.mac',
+    'machines': {
+      'mac-rel': {
+        'mixins': [
+            'mac_10.13',
+            'no_gpu',
+        ],
+        'test_suites': {
+          'gtest_tests': 'chromium_mac_gtests',
+          'isolated_scripts': 'chromium_mac_rel_isolated_scripts',
+          'scripts': 'chromium_mac_scripts',
+        },
+      },
+    },
+  },
+  {
     'name': 'tryserver.devtools-frontend',
     'machines': {
       'devtools_frontend_linux_blink_light_rel': {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 18c60337..2001ad0c 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -1629,6 +1629,21 @@
             ]
         }
     ],
+    "ChromeOSLauncherAssistantIntegration": [
+        {
+            "platforms": [
+                "chromeos"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "EnableEmbeddedAssistantUI"
+                    ]
+                }
+            ]
+        }
+    ],
     "ChromeSmartSelection": [
         {
             "platforms": [
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
index 68cea61..9e814f0 100644
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -773,6 +773,21 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+  jar_path = "libs/com_android_tools_build_jetifier_jetifier_processor/jetifier-processor-1.0.0-beta08.jar"
+  output_name = "com_android_tools_build_jetifier_jetifier_processor"
+  enable_bytecode_rewriter = false
+  deps = [
+    ":com_android_tools_build_jetifier_jetifier_core_java",
+    ":org_jdom_jdom2_java",
+    ":org_jetbrains_kotlin_kotlin_stdlib_java",
+    "//third_party/ow2_asm:asm_commons_java",
+    "//third_party/ow2_asm:asm_java",
+    "//third_party/ow2_asm:asm_util_java",
+  ]
+}
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 android_aar_prebuilt("google_play_services_auth_java") {
   aar_path = "libs/com_google_android_gms_play_services_auth/play-services-auth-15.0.1.aar"
   info_path = "libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info"
@@ -1119,6 +1134,13 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+java_prebuilt("commons_cli_commons_cli_java") {
+  jar_path = "libs/commons_cli_commons_cli/commons-cli-1.3.1.jar"
+  output_name = "commons_cli_commons_cli"
+  enable_bytecode_rewriter = false
+}
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 java_prebuilt("javax_annotation_javax_annotation_api_java") {
   jar_path = "libs/javax_annotation_javax_annotation_api/javax.annotation-api-1.3.2.jar"
   output_name = "javax_annotation_javax_annotation_api"
@@ -1638,6 +1660,21 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+java_prebuilt("com_android_tools_build_jetifier_jetifier_core_java") {
+  jar_path = "libs/com_android_tools_build_jetifier_jetifier_core/jetifier-core-1.0.0-beta08.jar"
+  output_name = "com_android_tools_build_jetifier_jetifier_core"
+  enable_bytecode_rewriter = false
+
+  # To remove visibility constraint, add this dependency to
+  # //third_party/android_deps/build.gradle.
+  visibility = [ ":*" ]
+  deps = [
+    ":org_jetbrains_kotlin_kotlin_stdlib_java",
+    "//third_party/gson:gson_java",
+  ]
+}
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
   jar_path = "libs/com_github_kevinstern_software_and_algorithms/software-and-algorithms-1.0.jar"
   output_name = "com_github_kevinstern_software_and_algorithms"
@@ -2012,6 +2049,43 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+java_prebuilt("org_jdom_jdom2_java") {
+  jar_path = "libs/org_jdom_jdom2/jdom2-2.0.6.jar"
+  output_name = "org_jdom_jdom2"
+  enable_bytecode_rewriter = false
+
+  # To remove visibility constraint, add this dependency to
+  # //third_party/android_deps/build.gradle.
+  visibility = [ ":*" ]
+}
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+java_prebuilt("org_jetbrains_kotlin_kotlin_stdlib_java") {
+  jar_path = "libs/org_jetbrains_kotlin_kotlin_stdlib/kotlin-stdlib-1.3.41.jar"
+  output_name = "org_jetbrains_kotlin_kotlin_stdlib"
+  enable_bytecode_rewriter = false
+
+  # To remove visibility constraint, add this dependency to
+  # //third_party/android_deps/build.gradle.
+  visibility = [ ":*" ]
+  deps = [
+    ":org_jetbrains_kotlin_kotlin_stdlib_common_java",
+    "//third_party/intellij:intellij_annotations_java",
+  ]
+}
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+java_prebuilt("org_jetbrains_kotlin_kotlin_stdlib_common_java") {
+  jar_path = "libs/org_jetbrains_kotlin_kotlin_stdlib_common/kotlin-stdlib-common-1.3.41.jar"
+  output_name = "org_jetbrains_kotlin_kotlin_stdlib_common"
+  enable_bytecode_rewriter = false
+
+  # To remove visibility constraint, add this dependency to
+  # //third_party/android_deps/build.gradle.
+  visibility = [ ":*" ]
+}
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 java_prebuilt("org_pcollections_pcollections_java") {
   jar_path = "libs/org_pcollections_pcollections/pcollections-2.1.2.jar"
   output_name = "org_pcollections_pcollections"
diff --git a/third_party/android_deps/additional_readme_paths.json b/third_party/android_deps/additional_readme_paths.json
index 0eb0c74..4c09e79 100644
--- a/third_party/android_deps/additional_readme_paths.json
+++ b/third_party/android_deps/additional_readme_paths.json
@@ -97,6 +97,8 @@
     "libs/com_android_support_transition",
     "libs/com_android_support_versionedparcelable",
     "libs/com_android_support_viewpager",
+    "libs/com_android_tools_build_jetifier_jetifier_core",
+    "libs/com_android_tools_build_jetifier_jetifier_processor",
     "libs/com_github_kevinstern_software_and_algorithms",
     "libs/com_github_stephenc_jcip_jcip_annotations",
     "libs/com_google_android_gms_play_services_auth",
@@ -145,6 +147,7 @@
     "libs/com_google_protobuf_protobuf_lite",
     "libs/com_googlecode_java_diff_utils_diffutils",
     "libs/com_squareup_javapoet",
+    "libs/commons_cli_commons_cli",
     "libs/javax_annotation_javax_annotation_api",
     "libs/javax_annotation_jsr250_api",
     "libs/javax_inject_javax_inject",
@@ -154,5 +157,8 @@
     "libs/org_checkerframework_dataflow",
     "libs/org_checkerframework_javacutil",
     "libs/org_codehaus_mojo_animal_sniffer_annotations",
+    "libs/org_jdom_jdom2",
+    "libs/org_jetbrains_kotlin_kotlin_stdlib",
+    "libs/org_jetbrains_kotlin_kotlin_stdlib_common",
     "libs/org_pcollections_pcollections"
 ]
diff --git a/third_party/android_deps/build.gradle b/third_party/android_deps/build.gradle
index 7535791..6724f6e 100644
--- a/third_party/android_deps/build.gradle
+++ b/third_party/android_deps/build.gradle
@@ -137,6 +137,10 @@
 
     buildCompile "com.google.errorprone:error_prone_core:2.3.3"
 
+    // Jetify to androidx.
+    buildCompile "com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta08"
+    buildCompile "commons-cli:commons-cli:1.3.1"
+
     // testCompile targets have test_only = true.
     testCompile "androidx.test:core:1.0.0"
     testCompile "androidx.test:monitor:1.1.0"
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index 63b39843..c5371c45 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -35,8 +35,14 @@
     // Some libraries are hosted in Chromium's //third_party directory. This is a mapping between
     // them so they can be used instead of android_deps pulling in its own copy.
     private static final def EXISTING_LIBS = [
+        'com_google_code_gson_gson': '//third_party/gson:gson_java',
         'junit_junit': '//third_party/junit:junit',
         'org_hamcrest_hamcrest_core': '//third_party/hamcrest:hamcrest_core_java',
+        'org_jetbrains_annotations': '//third_party/intellij:intellij_annotations_java',
+        'org_ow2_asm_asm': '//third_party/ow2_asm:asm_java',
+        'org_ow2_asm_asm_commons': '//third_party/ow2_asm:asm_commons_java',
+        'org_ow2_asm_asm_tree': '//third_party/ow2_asm:asm_tree_java',
+        'org_ow2_asm_asm_util': '//third_party/ow2_asm:asm_util_java',
     ]
 
 
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy b/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
index c5072a8..57a698b 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
@@ -76,6 +76,8 @@
             url: "https://github.com/google-ar/arcore-android-sdk",
             licenseUrl: "https://raw.githubusercontent.com/google-ar/arcore-android-sdk/master/LICENSE",
             licenseName: "Apache 2.0"),
+        'commons_cli_commons_cli': new PropertyOverride(
+            licenseName: "Apache 2.0"),
         'javax_annotation_javax_annotation_api': new PropertyOverride(
             isShipped: false,  // Annotations are stripped by R8.
             licenseName: "CDDLv1.1",
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/LICENSE b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/OWNERS b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/README.chromium b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/README.chromium
new file mode 100644
index 0000000..001b58f5
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/README.chromium
@@ -0,0 +1,13 @@
+Name: Android Jetifier Core
+Short Name: jetifier-core
+URL: https://developer.android.com/jetpack/androidx
+Version: 1.0.0-beta08
+License: Apache Version 2.0
+License File: LICENSE
+Security Critical: yes
+
+Description:
+Android Jetifier Core
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/cipd.yaml b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/cipd.yaml
new file mode 100644
index 0000000..93f3baa3
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:1.0.0-beta08-cr0
+package: chromium/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_core
+description: "Android Jetifier Core"
+data:
+- file: jetifier-core-1.0.0-beta08.jar
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/LICENSE b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/OWNERS b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/README.chromium b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/README.chromium
new file mode 100644
index 0000000..527d5898
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/README.chromium
@@ -0,0 +1,13 @@
+Name: Android Jetifier Processor
+Short Name: jetifier-processor
+URL: https://developer.android.com/jetpack/androidx
+Version: 1.0.0-beta08
+License: Apache Version 2.0
+License File: LICENSE
+Security Critical: yes
+
+Description:
+Android Jetifier Processor
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/cipd.yaml b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/cipd.yaml
new file mode 100644
index 0000000..04eb524
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:1.0.0-beta08-cr0
+package: chromium/third_party/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor
+description: "Android Jetifier Processor"
+data:
+- file: jetifier-processor-1.0.0-beta08.jar
diff --git a/third_party/android_deps/libs/commons_cli_commons_cli/OWNERS b/third_party/android_deps/libs/commons_cli_commons_cli/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/commons_cli_commons_cli/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/commons_cli_commons_cli/README.chromium b/third_party/android_deps/libs/commons_cli_commons_cli/README.chromium
new file mode 100644
index 0000000..f37b5d4
--- /dev/null
+++ b/third_party/android_deps/libs/commons_cli_commons_cli/README.chromium
@@ -0,0 +1,13 @@
+Name: Apache Commons CLI
+Short Name: commons-cli
+URL: http://commons.apache.org/proper/commons-cli/
+Version: 1.3.1
+License: Apache 2.0
+License File: LICENSE
+Security Critical: yes
+
+Description:
+Apache Commons CLI provides a simple API for presenting, processing and validating a command line interface.
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/commons_cli_commons_cli/cipd.yaml b/third_party/android_deps/libs/commons_cli_commons_cli/cipd.yaml
new file mode 100644
index 0000000..9b247ddd
--- /dev/null
+++ b/third_party/android_deps/libs/commons_cli_commons_cli/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:1.3.1-cr0
+package: chromium/third_party/android_deps/libs/commons_cli_commons_cli
+description: "Apache Commons CLI"
+data:
+- file: commons-cli-1.3.1.jar
diff --git a/third_party/android_deps/libs/org_jdom_jdom2/LICENSE b/third_party/android_deps/libs/org_jdom_jdom2/LICENSE
new file mode 100644
index 0000000..c18f7bb
--- /dev/null
+++ b/third_party/android_deps/libs/org_jdom_jdom2/LICENSE
@@ -0,0 +1,54 @@
+/*-- 
+
+ Copyright (C) 2000-2012 Jason Hunter & Brett McLaughlin.
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions, and the following disclaimer.
+ 
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions, and the disclaimer that follows 
+    these conditions in the documentation and/or other materials 
+    provided with the distribution.
+
+ 3. The name "JDOM" must not be used to endorse or promote products
+    derived from this software without prior written permission.  For
+    written permission, please contact <request_AT_jdom_DOT_org>.
+ 
+ 4. Products derived from this software may not be called "JDOM", nor
+    may "JDOM" appear in their name, without prior written permission
+    from the JDOM Project Management <request_AT_jdom_DOT_org>.
+ 
+ In addition, we request (but do not require) that you include in the 
+ end-user documentation provided with the redistribution and/or in the 
+ software itself an acknowledgement equivalent to the following:
+     "This product includes software developed by the
+      JDOM Project (http://www.jdom.org/)."
+ Alternatively, the acknowledgment may be graphical using the logos 
+ available at http://www.jdom.org/images/logos.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED.  IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many 
+ individuals on behalf of the JDOM Project and was originally 
+ created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
+ Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
+ on the JDOM Project, please see <http://www.jdom.org/>. 
+
+ */
+
diff --git a/third_party/android_deps/libs/org_jdom_jdom2/OWNERS b/third_party/android_deps/libs/org_jdom_jdom2/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/org_jdom_jdom2/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/org_jdom_jdom2/README.chromium b/third_party/android_deps/libs/org_jdom_jdom2/README.chromium
new file mode 100644
index 0000000..ba2e6f3
--- /dev/null
+++ b/third_party/android_deps/libs/org_jdom_jdom2/README.chromium
@@ -0,0 +1,13 @@
+Name: JDOM
+Short Name: jdom2
+URL: http://www.jdom.org
+Version: 2.0.6
+License: Similar to Apache License but with the acknowledgment clause removed
+License File: LICENSE
+Security Critical: yes
+
+Description:
+A complete, Java-based solution for accessing, manipulating, and outputting XML data
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/org_jdom_jdom2/cipd.yaml b/third_party/android_deps/libs/org_jdom_jdom2/cipd.yaml
new file mode 100644
index 0000000..28148e4
--- /dev/null
+++ b/third_party/android_deps/libs/org_jdom_jdom2/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:2.0.6-cr0
+package: chromium/third_party/android_deps/libs/org_jdom_jdom2
+description: "JDOM"
+data:
+- file: jdom2-2.0.6.jar
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/LICENSE b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/OWNERS b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium
new file mode 100644
index 0000000..2e97468
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium
@@ -0,0 +1,13 @@
+Name: org.jetbrains.kotlin:kotlin-stdlib
+Short Name: kotlin-stdlib
+URL: https://kotlinlang.org/
+Version: 1.3.41
+License: The Apache License, Version 2.0
+License File: LICENSE
+Security Critical: yes
+
+Description:
+Kotlin Standard Library for JVM
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml
new file mode 100644
index 0000000..14985e4
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:1.3.41-cr0
+package: chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib
+description: "org.jetbrains.kotlin:kotlin-stdlib"
+data:
+- file: kotlin-stdlib-1.3.41.jar
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/LICENSE b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/OWNERS b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium
new file mode 100644
index 0000000..44a34cf
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium
@@ -0,0 +1,13 @@
+Name: org.jetbrains.kotlin:kotlin-stdlib-common
+Short Name: kotlin-stdlib-common
+URL: https://kotlinlang.org/
+Version: 1.3.41
+License: The Apache License, Version 2.0
+License File: LICENSE
+Security Critical: yes
+
+Description:
+Kotlin Common Standard Library
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml
new file mode 100644
index 0000000..3577d1c
--- /dev/null
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:1.3.41-cr0
+package: chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common
+description: "org.jetbrains.kotlin:kotlin-stdlib-common"
+data:
+- file: kotlin-stdlib-common-1.3.41.jar
diff --git a/third_party/blink/common/feature_policy/README.md b/third_party/blink/common/feature_policy/README.md
index 643cbf8..dd3b064 100644
--- a/third_party/blink/common/feature_policy/README.md
+++ b/third_party/blink/common/feature_policy/README.md
@@ -43,76 +43,26 @@
 A step-to-step guide with examples.
 
 ##### Shipping features behind a flag
-There are currently two runtime-enabled flags: `FeaturePolicy` (status:
-stable) and `FeaturePolicyExperimentalFeatures` (status: experimental).
 If the additional feature is unshipped, or if the correct behaviour with feature
-policy is undetermined, consider shipping the feature behind a flag (i.e.,
-`FeaturePolicyExperimentalFeatures`).
+policy is undetermined, consider shipping the feature behind a runtime-enabled feature.
 
 ##### Define new feature
 1. Feature policy features are defined in
-`third_party/blink/public/common/feature_policy/feature_policy_feature.h`. Add the new feature
-enum with a brief decription about what the feature does in the comment, right
-above `LAST_FEATURE`
+`third_party/blink/renderer/core/feature_policy/feature_policy_features.json5`. Add the new feature,
+placing any runtime-enabled feature or origin trial dependencies in its "depends_on" field as
+described in the file's comments.
 
 2. Append the new feature enum with a brief description as well in
-`third_party/blink/public/mojom/feature_policy/feature_policy.mojom`
+`third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom`
 
-3. Update `third_party/blink/public/mojom/feature_policy/feature_policy.mojom_traits.h`
-to include the new feature
-
-4. Update `third_party/blink/renderer/platform/feature_policy/feature_policy.cc`:
-Add your `("feature-name", FeatureEnumValue)` mapping to
-  `GetDefaultFeatureNameMap()` (note: "feature-name" is the string web
-  developers will be using to define the policy in the HTTP header and iframe
-  "allow" attribute).
-+ If shipping behind the flag (`FeaturePolicyExperimentalFeatures`):
-Add the mapping inside the `if
-(RuntimeEnabledFeatures::FeaturePolicyExperimentalFeaturesEnabled())`
-stament;
-+ Otherwise:
-Add the mapping above the if statment.
+3. In `third_party/blink/renderer/platform/feature_policy/feature_policy.cc`,
+add an entry to `FeaturePolicy::GetDefaultFeatureList` with the default value
+to use for the new feature.
 
 ##### Integrate the feature behaviour with feature policy
-1. Add a case for the feature in `IsSupportedInFeaturePolicy()` (which checks
-if feature policy is enabled and the feature is supported in feature policy):
-- If shipping behind the flag (`FeaturePolicyExperimentalFeatures`):
+1. The most common way to check if features are enabled is `ExecutionContext::IsFeatureEnabled`.
 
-    return RuntimeEnabledFeatures::FeaturePolicyExperimentalFeaturesEnabled();
-
-- Otherwise:
-
-    return true;
-
-
-2. Implement the behaviour of the new feature for the 3 cases:
-- Default behaviour without feature policy
-i.e,
-
-    if (!IsSupportedInFeaturePolicy(...)) {
-      ...
-    }
-
-- When feature policy is enabled and feature is enabled by feature policy;
-i.e,
-
-    if (!IsSupportedInFeaturePolicy(...)) {
-      if (frame->IsFeatureEnabled(...)) {
-        ...
-      }
-    }
-
-- When feature policy is enabled and feature is disabled by feature policy.
-i.e,
-
-    if (IsSupportedInFeaturePolicy(...)) {
-      if (!frame->IsFeatureEnabled(...)) {
-        ...
-      }
-    }
-
-
-3. Examples:
+2. Examples:
 - `vibrate`: `NavigatorVibration::vibrate()`
 - `payment`: `AllowedToUsePaymentRequest()`
 - `usb`: `USB::getDevices()`
@@ -124,5 +74,5 @@
 
 #### Contacts
 For more questions, please feel free to reach out to:
-loonybear@chromium.org
 iclelland@chromium.org
+(Emerita: loonybear@)
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom
index d55f72c..781ef8983 100644
--- a/third_party/blink/public/mojom/frame/frame.mojom
+++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -189,6 +189,9 @@
   // Notifies the browser that resource timing information is available and
   // should be added to the performance entries of the parent frame.
   ForwardResourceTimingToParent(ResourceTimingInfo timing);
+
+  // Notifies the browser that a document has been loaded.
+  DidFinishDocumentLoad();
 };
 
 // Implemented in Blink, this interface defines frame-specific methods that will
diff --git a/third_party/blink/public/strings/translations/blink_strings_ca.xtb b/third_party/blink/public/strings/translations/blink_strings_ca.xtb
index fa8d535..ba635d4 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ca.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ca.xtb
@@ -11,7 +11,7 @@
 <translation id="1206693055195146388">control lliscant</translation>
 <translation id="1211441953136645838">nota final</translation>
 <translation id="1281252709823657822">quadre de diàleg</translation>
-<translation id="1306460908038601864">Desactivats</translation>
+<translation id="1306460908038601864">Desactivat</translation>
 <translation id="1335095011850992622">crèdits</translation>
 <translation id="1342835525016946179">article</translation>
 <translation id="1359897965706325498">bàner</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_cs.xtb b/third_party/blink/public/strings/translations/blink_strings_cs.xtb
index 18301a27..bd24417c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_cs.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_cs.xtb
@@ -11,7 +11,7 @@
 <translation id="1206693055195146388">posuvník</translation>
 <translation id="1211441953136645838">koncová poznámka</translation>
 <translation id="1281252709823657822">dialogové okno</translation>
-<translation id="1306460908038601864">Vyp</translation>
+<translation id="1306460908038601864">Vypnuto</translation>
 <translation id="1335095011850992622">poděkování</translation>
 <translation id="1342835525016946179">čl</translation>
 <translation id="1359897965706325498">banner</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_gu.xtb b/third_party/blink/public/strings/translations/blink_strings_gu.xtb
index 6df84b54..844742b6 100644
--- a/third_party/blink/public/strings/translations/blink_strings_gu.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_gu.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">સ્લાઇડર</translation>
 <translation id="1211441953136645838">અંતિમ નોંધ</translation>
 <translation id="1281252709823657822">સંવાદ</translation>
+<translation id="1306460908038601864">બંધ</translation>
 <translation id="1335095011850992622">ક્રેડિટ</translation>
 <translation id="1342835525016946179">લેખ</translation>
 <translation id="1359897965706325498">બેનર</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> PB</translation>
 <translation id="5307600278924710095">કૃપા કરીને '<ph name="ATSIGN" />' ની આગળનો ભાગ દાખલ કરો. '<ph name="INVALIDADDRESS" />' અપૂર્ણ છે.</translation>
 <translation id="5334352251556557839">મીડિયા ચલાવવામાં નિષ્ફળ રહ્યાં.</translation>
+<translation id="537648784377940524">ન્યૂનતમ તારીખ (<ph name="MIN_DATE_OR_TIME" />) એ મહત્તમ તારીખ (<ph name="MAX_DATE_OR_TIME" />) કરતાં પહેલાંની હોવી આવશ્યક છે.</translation>
 <translation id="5406322316791861025">આકૃતિ</translation>
 <translation id="5453733299334684579">ટ્રી આઇટમ</translation>
 <translation id="5466621249238537318">કૃપા કરીને એક અથવા વધુ ફાઇલ પસંદ કરો. </translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_hy.xtb b/third_party/blink/public/strings/translations/blink_strings_hy.xtb
index 11f37463..a3c62a63 100644
--- a/third_party/blink/public/strings/translations/blink_strings_hy.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_hy.xtb
@@ -11,7 +11,7 @@
 <translation id="1206693055195146388">սահիչ</translation>
 <translation id="1211441953136645838">ավարտական ծանոթագրություն</translation>
 <translation id="1281252709823657822">երկխոսության պատուհան</translation>
-<translation id="1306460908038601864">ԱՆՋԱՏ</translation>
+<translation id="1306460908038601864">Անջատ</translation>
 <translation id="1335095011850992622">երախտիքի խոսքեր</translation>
 <translation id="1342835525016946179">article</translation>
 <translation id="1359897965706325498">ազդերիզ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_kn.xtb b/third_party/blink/public/strings/translations/blink_strings_kn.xtb
index 63b392c..438f69f 100644
--- a/third_party/blink/public/strings/translations/blink_strings_kn.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_kn.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">ಸ್ಲೈಡರ್</translation>
 <translation id="1211441953136645838">ಮುಕ್ತಾಯ ಟಿಪ್ಪಣಿ</translation>
 <translation id="1281252709823657822">ಸಂವಾದ</translation>
+<translation id="1306460908038601864">ಆಫ್</translation>
 <translation id="1335095011850992622">ಕ್ರೆಡಿಟ್‌ಗಳು</translation>
 <translation id="1342835525016946179">ಲೇಖನ</translation>
 <translation id="1359897965706325498">ಬ್ಯಾನರ್</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> PB</translation>
 <translation id="5307600278924710095">'<ph name="ATSIGN" />' ನಂತರದ ಭಾಗವನ್ನು ನಮೂದಿಸಿ. '<ph name="INVALIDADDRESS" />' ಅಪೂರ್ಣವಾಗಿದೆ.</translation>
 <translation id="5334352251556557839">ಮೀಡಿಯಾ ಪ್ಲೇ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
+<translation id="537648784377940524">ಕನಿಷ್ಠ ದಿನಾಂಕವು (<ph name="MIN_DATE_OR_TIME" />) ಗರಿಷ್ಠ ದಿನಾಂಕ (<ph name="MAX_DATE_OR_TIME" />) ಕ್ಕಿಂತ ಮೊದಲು ಬರಬೇಕು.</translation>
 <translation id="5406322316791861025">ಆಕೃತಿ</translation>
 <translation id="5453733299334684579">ಟ್ರೀ ಐಟಂ</translation>
 <translation id="5466621249238537318">ದಯವಿಟ್ಟು ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ.</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ky.xtb b/third_party/blink/public/strings/translations/blink_strings_ky.xtb
index 0c3ac878..3cb26a61 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ky.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ky.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">слайдер</translation>
 <translation id="1211441953136645838">түшүндүрмө</translation>
 <translation id="1281252709823657822">диалог</translation>
+<translation id="1306460908038601864">Өчүк</translation>
 <translation id="1335095011850992622">китептин чыгышы жөнүндөгү маалыматтар</translation>
 <translation id="1342835525016946179">article</translation>
 <translation id="1359897965706325498">баннер</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> Пб</translation>
 <translation id="5307600278924710095">'<ph name="ATSIGN" />' дегенден кийинки бөлүктү киргизиңиз. '<ph name="INVALIDADDRESS" />' толук болбой калды.</translation>
 <translation id="5334352251556557839">Аудио ойнотулбай жатат.</translation>
+<translation id="537648784377940524">Минималдуу күн (<ph name="MIN_DATE_OR_TIME" />) Максималдуу күндөн мурда болушу керек (<ph name="MAX_DATE_OR_TIME" />).</translation>
 <translation id="5406322316791861025">сөлөкөт</translation>
 <translation id="5453733299334684579">дарактагы нерсе</translation>
 <translation id="5466621249238537318">Бир же бир нече файл тандаңыз.</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_mr.xtb b/third_party/blink/public/strings/translations/blink_strings_mr.xtb
index e79f04af..71b3b7b 100644
--- a/third_party/blink/public/strings/translations/blink_strings_mr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_mr.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">स्लायडर</translation>
 <translation id="1211441953136645838">तळटीप</translation>
 <translation id="1281252709823657822">डायलॉग</translation>
+<translation id="1306460908038601864">बंद करा</translation>
 <translation id="1335095011850992622">श्रेय</translation>
 <translation id="1342835525016946179">लेख</translation>
 <translation id="1359897965706325498">बॅनर</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> PB</translation>
 <translation id="5307600278924710095">कृपया '<ph name="ATSIGN" />' मागुन येणारा भाग एंटर करा. '<ph name="INVALIDADDRESS" />' अपूर्ण आहे.</translation>
 <translation id="5334352251556557839">मीडिया प्ले करता आला नाही.</translation>
+<translation id="537648784377940524">किमान तारीख (<ph name="MIN_DATE_OR_TIME" />) कमाल तारखेपूर्वी (<ph name="MAX_DATE_OR_TIME" />) येणे आवश्यक आहे.</translation>
 <translation id="5406322316791861025">आकृती</translation>
 <translation id="5453733299334684579">ट्री आयटम</translation>
 <translation id="5466621249238537318">कृपया एक किंवा अधिक फायली निवडा.</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_or.xtb b/third_party/blink/public/strings/translations/blink_strings_or.xtb
index 1a04a001..c838dd5 100644
--- a/third_party/blink/public/strings/translations/blink_strings_or.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_or.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">ସ୍ଲାଇଡର୍</translation>
 <translation id="1211441953136645838">ଶେଷ ଟିପ୍ପଣୀ</translation>
 <translation id="1281252709823657822">ଡାୟଲଗ୍</translation>
+<translation id="1306460908038601864">ବନ୍ଦ ଅଛି</translation>
 <translation id="1335095011850992622">କ୍ରେଡିଟ୍</translation>
 <translation id="1342835525016946179">ଆର୍ଟିକଲ୍‍</translation>
 <translation id="1359897965706325498">ବ୍ୟାନର୍</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> PB</translation>
 <translation id="5307600278924710095">ଦୟାକରି '<ph name="ATSIGN" />' ପୂର୍ବର ଅଂଶ ଲେଖନ୍ତୁ। '<ph name="INVALIDADDRESS" />' ଅସମ୍ପୂର୍ଣ୍ଣ ଅଟେ।</translation>
 <translation id="5334352251556557839">ମିଡିଆ ଚଲାଇବା ପାଇଁ ଅକ୍ଷମ।</translation>
+<translation id="537648784377940524">ସର୍ବନିମ୍ନ ତାରିଖ (<ph name="MIN_DATE_OR_TIME" />) ନିଶ୍ଚିତରୂପେ ସର୍ବାଧିକ ତାରିଖ (<ph name="MAX_DATE_OR_TIME" />) ପୂର୍ବରୁ ଆସିବା ଆବଶ୍ୟକ।</translation>
 <translation id="5406322316791861025">ଆକାର</translation>
 <translation id="5453733299334684579">ଟ୍ରୀ ଆଇଟମ୍</translation>
 <translation id="5466621249238537318">ଦୟାକରି ଏକ କିମ୍ବା ଅଧିକ ଫାଇଲ୍ ଚୟନ କରନ୍ତୁ।</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sq.xtb b/third_party/blink/public/strings/translations/blink_strings_sq.xtb
index 6dcc880..1ddbc6e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sq.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sq.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">rrëshqitës</translation>
 <translation id="1211441953136645838">shënim fundor</translation>
 <translation id="1281252709823657822">dialog</translation>
+<translation id="1306460908038601864">Joaktiv</translation>
 <translation id="1335095011850992622">kredite</translation>
 <translation id="1342835525016946179">artikull</translation>
 <translation id="1359897965706325498">banderolë</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> PB</translation>
 <translation id="5307600278924710095">Fut një pjesë të ndjekur nga "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" është e paplotë.</translation>
 <translation id="5334352251556557839">Nuk mund të luajë media.</translation>
+<translation id="537648784377940524">Data minimale (<ph name="MIN_DATE_OR_TIME" />) duhet të jetë përpara datës maksimale (<ph name="MAX_DATE_OR_TIME" />).</translation>
 <translation id="5406322316791861025">figura</translation>
 <translation id="5453733299334684579">artikull i pemës</translation>
 <translation id="5466621249238537318">Përzgjidh një ose më shumë skedarë.</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_vi.xtb b/third_party/blink/public/strings/translations/blink_strings_vi.xtb
index 1bfae85..a8ca118 100644
--- a/third_party/blink/public/strings/translations/blink_strings_vi.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_vi.xtb
@@ -11,6 +11,7 @@
 <translation id="1206693055195146388">thanh trượt</translation>
 <translation id="1211441953136645838">chú thích cuối</translation>
 <translation id="1281252709823657822">hộp thoại</translation>
+<translation id="1306460908038601864">Tắt</translation>
 <translation id="1335095011850992622">ghi nhận tác giả</translation>
 <translation id="1342835525016946179">bài viết</translation>
 <translation id="1359897965706325498">biểu ngữ</translation>
@@ -129,6 +130,7 @@
 <translation id="520299402983819650"><ph name="QUANTITY" /> PB</translation>
 <translation id="5307600278924710095">Vui lòng nhập phần đứng trước '<ph name="ATSIGN" />'. '<ph name="INVALIDADDRESS" />' không hoàn chỉnh.</translation>
 <translation id="5334352251556557839">Không thể phát nội dung đa phương tiện.</translation>
+<translation id="537648784377940524">Ngày tối thiểu (<ph name="MIN_DATE_OR_TIME" />) phải trước ngày tối đa (<ph name="MAX_DATE_OR_TIME" />).</translation>
 <translation id="5406322316791861025">hình dáng</translation>
 <translation id="5453733299334684579">mục dạng cây</translation>
 <translation id="5466621249238537318">Vui lòng chọn một hoặc nhiều tệp.</translation>
diff --git a/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py b/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py
index f370fd5..7596ef9 100755
--- a/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py
+++ b/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py
@@ -43,6 +43,7 @@
         'interfaceHeaderDir': {},
         'interfaceName': {},
         'noConstructor': {},
+        'noTypeHelpers': {},
         'runtimeEnabled': {},
     }
     default_metadata = {
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index b9ae2a38..d3d11f6 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -2736,12 +2736,9 @@
     if (ElementIntersectionObserverData* observer_data =
             rare_data->IntersectionObserverData()) {
       observer_data->InvalidateCachedRects();
-      if (observer_data->IsTargetOfImplicitRootObserver() ||
-          observer_data->IsRoot()) {
-        GetDocument().EnsureIntersectionObserverController().AddTrackedElement(
-            *this, observer_data->NeedsOcclusionTracking());
-      }
-      if (observer_data->IsTarget() || observer_data->IsRoot()) {
+      observer_data->TrackWithController(
+          GetDocument().EnsureIntersectionObserverController());
+      if (!observer_data->IsEmpty()) {
         if (LocalFrameView* frame_view = GetDocument().View()) {
           frame_view->SetIntersectionObservationState(
               LocalFrameView::kRequired);
@@ -2847,8 +2844,8 @@
           IntersectionObservation::kExplicitRootObserversNeedUpdate |
           IntersectionObservation::kImplicitRootObserversNeedUpdate |
           IntersectionObservation::kIgnoreDelay);
-      GetDocument().EnsureIntersectionObserverController().RemoveTrackedElement(
-          *this);
+      data->IntersectionObserverData()->StopTrackingWithController(
+          GetDocument().EnsureIntersectionObserverController());
     }
 
     if (auto* context = data->GetDisplayLockContext())
@@ -4754,18 +4751,6 @@
   return EnsureElementRareData().EnsureIntersectionObserverData();
 }
 
-bool Element::ComputeIntersectionsForLifecycleUpdate(unsigned flags) {
-  if (ElementIntersectionObserverData* data = IntersectionObserverData())
-    return data->ComputeIntersectionsForLifecycleUpdate(flags);
-  return false;
-}
-
-bool Element::NeedsOcclusionTracking() const {
-  if (ElementIntersectionObserverData* data = IntersectionObserverData())
-    return data->NeedsOcclusionTracking();
-  return false;
-}
-
 HeapHashMap<Member<ResizeObserver>, Member<ResizeObservation>>*
 Element::ResizeObserverData() const {
   if (HasRareData())
diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h
index 0030565..3d2097c 100644
--- a/third_party/blink/renderer/core/dom/element.h
+++ b/third_party/blink/renderer/core/dom/element.h
@@ -931,10 +931,6 @@
 
   ElementIntersectionObserverData* IntersectionObserverData() const;
   ElementIntersectionObserverData& EnsureIntersectionObserverData();
-  bool ComputeIntersectionsForLifecycleUpdate(unsigned flags);
-  // Returns true if the Element is being observed by an IntersectionObserver
-  // for which trackVisibility() is true.
-  bool NeedsOcclusionTracking() const;
 
   HeapHashMap<Member<ResizeObserver>, Member<ResizeObservation>>*
   ResizeObserverData() const;
diff --git a/third_party/blink/renderer/core/html/html_element.h b/third_party/blink/renderer/core/html/html_element.h
index c74c93c..c8e1b53 100644
--- a/third_party/blink/renderer/core/html/html_element.h
+++ b/third_party/blink/renderer/core/html/html_element.h
@@ -109,6 +109,7 @@
 
   virtual bool IsHTMLUnknownElement() const { return false; }
   virtual bool IsPluginElement() const { return false; }
+  virtual bool IsHTMLPortalElement() const { return false; }
 
   // https://html.spec.whatwg.org/C/#category-label
   virtual bool IsLabelable() const;
diff --git a/third_party/blink/renderer/core/html/html_style_element.cc b/third_party/blink/renderer/core/html/html_style_element.cc
index 7810f7a..ddadb51b 100644
--- a/third_party/blink/renderer/core/html/html_style_element.cc
+++ b/third_party/blink/renderer/core/html/html_style_element.cc
@@ -37,9 +37,7 @@
 HTMLStyleElement::HTMLStyleElement(Document& document,
                                    const CreateElementFlags flags)
     : HTMLElement(html_names::kStyleTag, document),
-      StyleElement(&document, flags.IsCreatedByParser()),
-      fired_load_(false),
-      loaded_sheet_(false) {}
+      StyleElement(&document, flags.IsCreatedByParser()) {}
 
 HTMLStyleElement::~HTMLStyleElement() = default;
 
@@ -103,8 +101,9 @@
 }
 
 void HTMLStyleElement::DispatchPendingEvent(
-    std::unique_ptr<IncrementLoadEventDelayCount> count) {
-  if (loaded_sheet_) {
+    std::unique_ptr<IncrementLoadEventDelayCount> count,
+    bool is_load_event) {
+  if (is_load_event) {
     if (GetDocument().HasListenerType(
             Document::kLoadListenerAtCapturePhaseOrAtStyleElement))
       DispatchEvent(*Event::Create(event_type_names::kLoad));
@@ -119,9 +118,6 @@
 void HTMLStyleElement::NotifyLoadedSheetAndAllCriticalSubresources(
     LoadedSheetErrorStatus error_status) {
   bool is_load_event = error_status == kNoErrorLoadingSubresource;
-  if (fired_load_ && is_load_event)
-    return;
-  loaded_sheet_ = is_load_event;
   // Per the spec this should post on the network task source.
   // https://html.spec.whatwg.org/multipage/semantics.html#the-style-element
   // This guarantees that the <style> will be applied before the next <script>
@@ -135,8 +131,8 @@
           WTF::Bind(&HTMLStyleElement::DispatchPendingEvent,
                     WrapPersistent(this),
                     WTF::Passed(std::make_unique<IncrementLoadEventDelayCount>(
-                        GetDocument()))));
-  fired_load_ = true;
+                        GetDocument())),
+                    is_load_event));
 }
 
 bool HTMLStyleElement::disabled() const {
diff --git a/third_party/blink/renderer/core/html/html_style_element.h b/third_party/blink/renderer/core/html/html_style_element.h
index ed768e1..e9c7714 100644
--- a/third_party/blink/renderer/core/html/html_style_element.h
+++ b/third_party/blink/renderer/core/html/html_style_element.h
@@ -49,7 +49,8 @@
  private:
   // Always call this asynchronously because this can cause synchronous
   // Document load event and JavaScript execution.
-  void DispatchPendingEvent(std::unique_ptr<IncrementLoadEventDelayCount>);
+  void DispatchPendingEvent(std::unique_ptr<IncrementLoadEventDelayCount>,
+                            bool is_load_event);
 
   // overload from HTMLElement
   void ParseAttribute(const AttributeModificationParams&) override;
@@ -70,9 +71,6 @@
 
   const AtomicString& media() const override;
   const AtomicString& type() const override;
-
-  bool fired_load_;
-  bool loaded_sheet_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/html_tag_names.json5 b/third_party/blink/renderer/core/html/html_tag_names.json5
index 9150a6d..b85be22 100644
--- a/third_party/blink/renderer/core/html/html_tag_names.json5
+++ b/third_party/blink/renderer/core/html/html_tag_names.json5
@@ -363,6 +363,9 @@
       interfaceName: "HTMLPortalElement",
       interfaceHeaderDir: "third_party/blink/renderer/core/html/portal",
       runtimeEnabled: "Portals",
+      // Portals could be enabled in some documents but not others (due to
+      // origin trials), so we need custom type helpers.
+      noTypeHelpers: true,
     },
     "pre",
     {
diff --git a/third_party/blink/renderer/core/html/portal/html_portal_element.h b/third_party/blink/renderer/core/html/portal/html_portal_element.h
index 1faca37..42fe448 100644
--- a/third_party/blink/renderer/core/html/portal/html_portal_element.h
+++ b/third_party/blink/renderer/core/html/portal/html_portal_element.h
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/node.h"
 #include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
+#include "third_party/blink/renderer/platform/wtf/casting.h"
 
 namespace blink {
 
@@ -39,6 +40,8 @@
           portal_client_receiver = {});
   ~HTMLPortalElement() override;
 
+  bool IsHTMLPortalElement() const final { return true; }
+
   // ScriptWrappable overrides.
   void Trace(Visitor* visitor) override;
 
@@ -132,6 +135,20 @@
   bool was_just_adopted_ = false;
 };
 
+// Type casting. Custom since adoption could lead to an HTMLPortalElement ending
+// up in a document that doesn't have Portals enabled.
+template <>
+struct DowncastTraits<HTMLPortalElement> {
+  static bool AllowFrom(const HTMLElement& element) {
+    return element.IsHTMLPortalElement();
+  }
+  static bool AllowFrom(const Node& node) {
+    if (const HTMLElement* html_element = DynamicTo<HTMLElement>(node))
+      return html_element->IsHTMLPortalElement();
+    return false;
+  }
+};
+
 }  // namespace blink
 
 #endif  // THIRD_PARTY_BLINK_RENDERER_CORE_HTML_PORTAL_HTML_PORTAL_ELEMENT_H_
diff --git a/third_party/blink/renderer/core/html/resources/images/time_icon.svg b/third_party/blink/renderer/core/html/resources/images/time_icon.svg
index eedd2f1b..71a94c0 100644
--- a/third_party/blink/renderer/core/html/resources/images/time_icon.svg
+++ b/third_party/blink/renderer/core/html/resources/images/time_icon.svg
@@ -1,3 +1 @@
-<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M7 14C6.35417 14 5.73177 13.9167 5.13281 13.75C4.53906 13.5833 3.98177 13.349 3.46094 13.0469C2.94531 12.7396 2.47396 12.375 2.04688 11.9531C1.625 11.526 1.26042 11.0547 0.953125 10.5391C0.651042 10.0182 0.416667 9.46094 0.25 8.86719C0.0833333 8.26823 0 7.64583 0 7C0 6.35417 0.0833333 5.73438 0.25 5.14062C0.416667 4.54167 0.651042 3.98438 0.953125 3.46875C1.26042 2.94792 1.625 2.47656 2.04688 2.05469C2.47396 1.6276 2.94531 1.26302 3.46094 0.960938C3.98177 0.653646 4.53906 0.416667 5.13281 0.25C5.73177 0.0833333 6.35417 0 7 0C7.64583 0 8.26562 0.0833333 8.85938 0.25C9.45833 0.416667 10.0156 0.653646 10.5312 0.960938C11.0521 1.26302 11.5234 1.6276 11.9453 2.05469C12.3724 2.47656 12.737 2.94792 13.0391 3.46875C13.3464 3.98438 13.5833 4.54167 13.75 5.14062C13.9167 5.73438 14 6.35417 14 7C14 7.64583 13.9167 8.26823 13.75 8.86719C13.5833 9.46094 13.3464 10.0182 13.0391 10.5391C12.737 11.0547 12.3724 11.526 11.9453 11.9531C11.5234 12.375 11.0521 12.7396 10.5312 13.0469C10.0156 13.349 9.45833 13.5833 8.85938 13.75C8.26562 13.9167 7.64583 14 7 14ZM7 1C6.17188 1 5.39323 1.15885 4.66406 1.47656C3.9401 1.78906 3.30469 2.21875 2.75781 2.76562C2.21615 3.30729 1.78646 3.94271 1.46875 4.67188C1.15625 5.39583 1 6.17188 1 7C1 7.82812 1.15625 8.60677 1.46875 9.33594C1.78646 10.0599 2.21615 10.6953 2.75781 11.2422C3.30469 11.7839 3.9401 12.2135 4.66406 12.5312C5.39323 12.8438 6.17188 13 7 13C7.82812 13 8.60417 12.8438 9.32812 12.5312C10.0573 12.2135 10.6927 11.7839 11.2344 11.2422C11.7812 10.6953 12.2109 10.0599 12.5234 9.33594C12.8411 8.60677 13 7.82812 13 7C13 6.17188 12.8411 5.39583 12.5234 4.67188C12.2109 3.94271 11.7812 3.30729 11.2344 2.76562C10.6927 2.21875 10.0573 1.78906 9.32812 1.47656C8.60417 1.15885 7.82812 1 7 1ZM7 7V3H6V8H10V7H7Z" fill="WindowText"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"><path fill="WindowText" d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/><path d="M0 0h24v24H0z" fill="none"/><path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/></svg>
\ No newline at end of file
diff --git a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc
index 5c8d1d7..76e6b2f 100644
--- a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc
+++ b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc
@@ -15,8 +15,8 @@
 
 IntersectionObservation* ElementIntersectionObserverData::GetObservationFor(
     IntersectionObserver& observer) {
-  auto i = intersection_observations_.find(&observer);
-  if (i == intersection_observations_.end())
+  auto i = observations_.find(&observer);
+  if (i == observations_.end())
     return nullptr;
   return i->value;
 }
@@ -24,59 +24,61 @@
 void ElementIntersectionObserverData::AddObservation(
     IntersectionObservation& observation) {
   DCHECK(observation.Observer());
-  intersection_observations_.insert(observation.Observer(), &observation);
+  observations_.insert(observation.Observer(), &observation);
 }
 
 void ElementIntersectionObserverData::AddObserver(
     IntersectionObserver& observer) {
-  intersection_observers_.insert(&observer);
-}
-
-bool ElementIntersectionObserverData::IsTargetOfImplicitRootObserver() const {
-  for (auto& entry : intersection_observations_) {
-    if (entry.key->RootIsImplicit())
-      return true;
-  }
-  return false;
+  observers_.insert(&observer);
 }
 
 void ElementIntersectionObserverData::RemoveObservation(
+    IntersectionObservation& observation) {
+  observations_.erase(observation.Observer());
+}
+
+void ElementIntersectionObserverData::RemoveObserver(
     IntersectionObserver& observer) {
-  intersection_observations_.erase(&observer);
+  observers_.erase(&observer);
+}
+
+void ElementIntersectionObserverData::TrackWithController(
+    IntersectionObserverController& controller) {
+  for (auto& entry : observations_) {
+    if (entry.key->RootIsImplicit()) {
+      controller.AddTrackedObservation(*entry.value,
+                                       entry.key->trackVisibility());
+    }
+  }
+  for (auto& observer : observers_) {
+    controller.AddTrackedObserver(*observer, observer->trackVisibility());
+  }
+}
+
+void ElementIntersectionObserverData::StopTrackingWithController(
+    IntersectionObserverController& controller) {
+  for (auto& entry : observations_) {
+    if (entry.key->RootIsImplicit()) {
+      controller.RemoveTrackedObservation(*entry.value);
+    }
+  }
+  for (auto& observer : observers_) {
+    controller.RemoveTrackedObserver(*observer);
+  }
 }
 
 bool ElementIntersectionObserverData::ComputeIntersectionsForTarget(
     unsigned flags) {
   bool needs_occlusion_tracking = false;
-  for (auto& entry : intersection_observations_) {
+  for (auto& entry : observations_) {
     needs_occlusion_tracking |= entry.key->NeedsOcclusionTracking();
     entry.value->ComputeIntersection(flags);
   }
   return needs_occlusion_tracking;
 }
 
-bool ElementIntersectionObserverData::ComputeIntersectionsForLifecycleUpdate(
-    unsigned flags) {
-  bool needs_occlusion_tracking = false;
-
-  // Process explicit-root observers for which this element is root.
-  for (auto& observer : intersection_observers_) {
-    needs_occlusion_tracking |= observer->NeedsOcclusionTracking();
-    if (flags & IntersectionObservation::kExplicitRootObserversNeedUpdate) {
-      observer->ComputeIntersections(flags);
-    }
-  }
-
-  // Process implicit-root observations for which this element is target.
-  unsigned implicit_root_flags =
-      flags & ~IntersectionObservation::kExplicitRootObserversNeedUpdate;
-  needs_occlusion_tracking |=
-      ComputeIntersectionsForTarget(implicit_root_flags);
-  return needs_occlusion_tracking;
-}
-
 bool ElementIntersectionObserverData::NeedsOcclusionTracking() const {
-  for (auto& entry : intersection_observations_) {
+  for (auto& entry : observations_) {
     if (entry.key->trackVisibility())
       return true;
   }
@@ -84,15 +86,15 @@
 }
 
 void ElementIntersectionObserverData::InvalidateCachedRects() {
-  for (auto& observer : intersection_observers_)
+  for (auto& observer : observers_)
     observer->InvalidateCachedRects();
-  for (auto& entry : intersection_observations_)
+  for (auto& entry : observations_)
     entry.value->InvalidateCachedRects();
 }
 
 void ElementIntersectionObserverData::Trace(blink::Visitor* visitor) {
-  visitor->Trace(intersection_observations_);
-  visitor->Trace(intersection_observers_);
+  visitor->Trace(observations_);
+  visitor->Trace(observers_);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h
index 1246503..1f4bf14 100644
--- a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h
+++ b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h
@@ -14,6 +14,7 @@
 
 class IntersectionObservation;
 class IntersectionObserver;
+class IntersectionObserverController;
 
 class CORE_EXPORT ElementIntersectionObserverData final
     : public GarbageCollected<ElementIntersectionObserverData>,
@@ -21,21 +22,25 @@
  public:
   ElementIntersectionObserverData();
 
+  // If the argument observer is observing this Element, this method will return
+  // the observation.
   IntersectionObservation* GetObservationFor(IntersectionObserver&);
+
+  // Add an implicit-root observation with this element as target.
   void AddObservation(IntersectionObservation&);
+  // Add an explicit-root observer with this element as root.
   void AddObserver(IntersectionObserver&);
-  void RemoveObservation(IntersectionObserver&);
-  bool IsTarget() const { return !intersection_observations_.IsEmpty(); }
-  bool IsTargetOfImplicitRootObserver() const;
-  bool IsRoot() const { return !intersection_observers_.IsEmpty(); }
+  void RemoveObservation(IntersectionObservation&);
+  void RemoveObserver(IntersectionObserver&);
+  bool IsEmpty() const {
+    return observations_.IsEmpty() && observers_.IsEmpty();
+  }
+  void TrackWithController(IntersectionObserverController&);
+  void StopTrackingWithController(IntersectionObserverController&);
+
   // Run the IntersectionObserver algorithm for all observations for which this
   // element is target.
   bool ComputeIntersectionsForTarget(unsigned flags);
-  // Run the IntersectionObserver algorithm for all implicit-root observations
-  // for which this element is target; and all explicit-root observers for which
-  // this element is root. Returns true if any observer needs occlusion
-  // tracking.
-  bool ComputeIntersectionsForLifecycleUpdate(unsigned flags);
   bool NeedsOcclusionTracking() const;
   // Indicates that geometry information cached during the previous run of the
   // algorithm is invalid and must be recomputed.
@@ -49,11 +54,11 @@
  private:
   // IntersectionObservations for which the Node owning this data is target.
   HeapHashMap<Member<IntersectionObserver>, Member<IntersectionObservation>>
-      intersection_observations_;
+      observations_;
   // IntersectionObservers for which the Node owning this data is root.
   // Weak because once an observer is unreachable from javascript and has no
   // active observations, it should be allowed to die.
-  HeapHashSet<WeakMember<IntersectionObserver>> intersection_observers_;
+  HeapHashSet<WeakMember<IntersectionObserver>> observers_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observation.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observation.cc
index d85f922..cf204c3e 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observation.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observation.cc
@@ -76,18 +76,16 @@
     DCHECK(target_->IntersectionObserverData());
     ElementIntersectionObserverData* observer_data =
         target_->IntersectionObserverData();
-    observer_data->RemoveObservation(*Observer());
+    observer_data->RemoveObservation(*this);
     // We track connected elements that are either the root of an explicit root
     // observer, or the target of an implicit root observer. If the target was
     // previously being tracked, but no longer needs to be tracked, then remove
     // it.
-    if (target_->isConnected() && Observer()->RootIsImplicit() &&
-        !observer_data->IsTargetOfImplicitRootObserver() &&
-        !observer_data->IsRoot()) {
+    if (target_->isConnected() && Observer()->RootIsImplicit()) {
       IntersectionObserverController* controller =
           target_->GetDocument().GetIntersectionObserverController();
       if (controller)
-        controller->RemoveTrackedElement(*target_);
+        controller->RemoveTrackedObservation(*this);
     }
   }
   entries_.clear();
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
index ad0f94b8..de486b65 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
@@ -280,16 +280,17 @@
     root->EnsureIntersectionObserverData().AddObserver(*this);
     root->GetDocument()
         .EnsureIntersectionObserverController()
-        .AddTrackedElement(*root, track_visibility);
+        .AddTrackedObserver(*this, track_visibility);
   }
 }
 
 void IntersectionObserver::ProcessCustomWeakness(const WeakCallbackInfo& info) {
-  if (RootIsImplicit() || (root() && info.IsHeapObjectAlive(root())))
-    return;
-  DummyExceptionStateForTesting exception_state;
-  disconnect(exception_state);
-  root_ = nullptr;
+  // For explicit-root observers, if the root element disappears for any reason,
+  // any remaining obsevations must be dismantled.
+  if (root() && !info.IsHeapObjectAlive(root()))
+    root_ = nullptr;
+  if (!RootIsImplicit() && !root())
+    disconnect();
 }
 
 bool IntersectionObserver::RootIsValid() const {
@@ -319,7 +320,7 @@
     if (RootIsImplicit()) {
       target->GetDocument()
           .EnsureIntersectionObserverController()
-          .AddTrackedElement(*target, track_visibility_);
+          .AddTrackedObservation(*observation, track_visibility_);
     }
     if (LocalFrameView* frame_view = target_frame->View()) {
       // The IntersectionObsever spec requires that at least one observation
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer.h b/third_party/blink/renderer/core/intersection_observer/intersection_observer.h
index fe18fcc..7f1b008 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer.h
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer.h
@@ -72,11 +72,11 @@
 
   static IntersectionObserver* Create(const IntersectionObserverInit*,
                                       IntersectionObserverDelegate&,
-                                      ExceptionState&);
+                                      ExceptionState& = ASSERT_NO_EXCEPTION);
   static IntersectionObserver* Create(ScriptState*,
                                       V8IntersectionObserverCallback*,
                                       const IntersectionObserverInit*,
-                                      ExceptionState&);
+                                      ExceptionState& = ASSERT_NO_EXCEPTION);
 
   // Creates an IntersectionObserver that monitors changes to the intersection
   // between its target element relative to its implicit root and notifies via
@@ -110,7 +110,8 @@
   void observe(Element*, ExceptionState& = ASSERT_NO_EXCEPTION);
   void unobserve(Element*, ExceptionState& = ASSERT_NO_EXCEPTION);
   void disconnect(ExceptionState& = ASSERT_NO_EXCEPTION);
-  HeapVector<Member<IntersectionObserverEntry>> takeRecords(ExceptionState&);
+  HeapVector<Member<IntersectionObserverEntry>> takeRecords(
+      ExceptionState& = ASSERT_NO_EXCEPTION);
 
   // API attributes.
   Element* root() const { return root_.Get(); }
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
index 8dd294b..75abd71 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
@@ -66,23 +66,30 @@
     TRACE_EVENT0("blink",
                  "IntersectionObserverController::"
                  "computeIntersections");
-    HeapVector<Member<Element>> elements_to_process;
-    CopyToVector(tracked_elements_, elements_to_process);
-    for (auto& element : elements_to_process) {
-      needs_occlusion_tracking_ |=
-          element->ComputeIntersectionsForLifecycleUpdate(flags);
+    HeapVector<Member<IntersectionObserver>> observers_to_process;
+    CopyToVector(explicit_root_observers_, observers_to_process);
+    for (auto& observer : observers_to_process) {
+      needs_occlusion_tracking_ |= observer->ComputeIntersections(flags);
+    }
+    HeapVector<Member<IntersectionObservation>> observations_to_process;
+    CopyToVector(implicit_root_observations_, observations_to_process);
+    for (auto& observation : observations_to_process) {
+      observation->ComputeIntersection(flags);
+      needs_occlusion_tracking_ |= observation->Observer()->trackVisibility();
     }
   }
   return needs_occlusion_tracking_;
 }
 
-void IntersectionObserverController::AddTrackedElement(Element& element,
-                                                       bool track_occlusion) {
-  tracked_elements_.insert(&element);
+void IntersectionObserverController::AddTrackedObserver(
+    IntersectionObserver& observer,
+    bool track_occlusion) {
+  DCHECK(!observer.RootIsImplicit());
+  explicit_root_observers_.insert(&observer);
   if (!track_occlusion)
     return;
   needs_occlusion_tracking_ = true;
-  if (LocalFrameView* frame_view = element.GetDocument().View()) {
+  if (LocalFrameView* frame_view = observer.root()->GetDocument().View()) {
     if (FrameOwner* frame_owner = frame_view->GetFrame().Owner()) {
       // Set this bit as early as possible, rather than waiting for a lifecycle
       // update to recompute it.
@@ -91,17 +98,41 @@
   }
 }
 
-void IntersectionObserverController::RemoveTrackedElement(Element& target) {
+void IntersectionObserverController::RemoveTrackedObserver(
+    IntersectionObserver& observer) {
+  DCHECK(!observer.RootIsImplicit());
   // Note that we don't try to opportunistically turn off the 'needs occlusion
-  // tracking' bit here, like the way we turn it on in AddTrackedTarget. The
+  // tracking' bit here, like the way we turn it on in AddTrackedObserver. The
   // bit will get recomputed on the next lifecycle update; there's no
-  // compelling reason to do it here, so we avoid the iteration through targets
-  // and observations here.
-  tracked_elements_.erase(&target);
+  // compelling reason to do it here, so we avoid the iteration through
+  // observers and observations here.
+  explicit_root_observers_.erase(&observer);
+}
+
+void IntersectionObserverController::AddTrackedObservation(
+    IntersectionObservation& observation,
+    bool track_occlusion) {
+  DCHECK(observation.Observer()->RootIsImplicit());
+  implicit_root_observations_.insert(&observation);
+  if (!track_occlusion)
+    return;
+  needs_occlusion_tracking_ = true;
+  if (LocalFrameView* frame_view = observation.Target()->GetDocument().View()) {
+    if (FrameOwner* frame_owner = frame_view->GetFrame().Owner()) {
+      frame_owner->SetNeedsOcclusionTracking(true);
+    }
+  }
+}
+
+void IntersectionObserverController::RemoveTrackedObservation(
+    IntersectionObservation& observation) {
+  DCHECK(observation.Observer()->RootIsImplicit());
+  implicit_root_observations_.erase(&observation);
 }
 
 void IntersectionObserverController::Trace(blink::Visitor* visitor) {
-  visitor->Trace(tracked_elements_);
+  visitor->Trace(explicit_root_observers_);
+  visitor->Trace(implicit_root_observations_);
   visitor->Trace(pending_intersection_observers_);
   ContextClient::Trace(visitor);
 }
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
index edc08b0..06de2d2 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
@@ -40,29 +40,37 @@
   // communicates whether observer->trackVisibility() is true for any tracked
   // observer.
   bool ComputeIntersections(unsigned flags);
+
   // The second argument indicates whether the Element is a target of any
   // observers for which observer->trackVisibility() is true.
-  void AddTrackedElement(Element&, bool);
-  void RemoveTrackedElement(Element&);
+  void AddTrackedObserver(IntersectionObserver&, bool);
+  void AddTrackedObservation(IntersectionObservation&, bool);
+  void RemoveTrackedObserver(IntersectionObserver&);
+  void RemoveTrackedObservation(IntersectionObservation&);
+
   bool NeedsOcclusionTracking() const { return needs_occlusion_tracking_; }
 
   void Trace(blink::Visitor*) override;
   const char* NameInHeapSnapshot() const override {
     return "IntersectionObserverController";
   }
-  unsigned GetTrackedTargetCountForTesting() const {
-    return tracked_elements_.size();
+  unsigned GetTrackedObserverCountForTesting() const {
+    return explicit_root_observers_.size();
+  }
+  unsigned GetTrackedObservationCountForTesting() const {
+    return implicit_root_observations_.size();
   }
 
  private:
   void PostTaskToDeliverNotifications();
 
  private:
-  // Elements in this document which are the target of an IntersectionObserver
-  // with implicit root; or the explicit root of an IntersectionObserver.
-  HeapHashSet<WeakMember<Element>> tracked_elements_;
+  // IntersectionObserver's with an explicit root in this document.
+  HeapHashSet<WeakMember<IntersectionObserver>> explicit_root_observers_;
+  // IntersectionObservations with an implicit root and target in this document.
+  HeapHashSet<WeakMember<IntersectionObservation>> implicit_root_observations_;
   // IntersectionObservers for which this is the execution context of the
-  // callback.
+  // callback, and with unsent notifications.
   HeapHashSet<Member<IntersectionObserver>> pending_intersection_observers_;
   // This is 'true' if any tracked element is the target of an observer for
   // which observer->trackVisibility() is true.
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc
index 0f50a722..23d0d4c 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc
@@ -6,6 +6,10 @@
 
 #include "third_party/blink/renderer/core/intersection_observer/intersection_observer.h"
 
+#include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_controller.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_source_code.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h"
 #include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/exported/web_view_impl.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
@@ -46,6 +50,10 @@
   int CallCount() const { return call_count_; }
   int EntryCount() const { return entries_.size(); }
   const IntersectionObserverEntry* LastEntry() const { return entries_.back(); }
+  void Clear() {
+    entries_.clear();
+    call_count_ = 0;
+  }
   PhysicalRect LastIntersectionRect() const {
     if (entries_.IsEmpty())
       return PhysicalRect();
@@ -380,11 +388,11 @@
 
   Element* target = GetDocument().getElementById("target");
   ASSERT_TRUE(target);
+  IntersectionObserverController& controller =
+      GetDocument().EnsureIntersectionObserverController();
   observer->observe(target, exception_state);
-  EXPECT_EQ(GetDocument()
-                .EnsureIntersectionObserverController()
-                .GetTrackedTargetCountForTesting(),
-            1u);
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 1u);
 
   Compositor().BeginFrame();
   test::RunPendingTasks();
@@ -396,10 +404,8 @@
                                                           kProgrammaticScroll);
   Compositor().BeginFrame();
   observer->disconnect();
-  EXPECT_EQ(GetDocument()
-                .EnsureIntersectionObserverController()
-                .GetTrackedTargetCountForTesting(),
-            0u);
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
   test::RunPendingTasks();
   EXPECT_EQ(observer_delegate->CallCount(), 1);
 }
@@ -488,15 +494,122 @@
   observer2->observe(target, exception_state);
   ASSERT_FALSE(exception_state.HadException());
 
+  ElementIntersectionObserverData* target_data =
+      target->IntersectionObserverData();
+  ASSERT_TRUE(target_data);
   IntersectionObserverController& controller =
       GetDocument().EnsureIntersectionObserverController();
-  EXPECT_EQ(controller.GetTrackedTargetCountForTesting(), 1u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 2u);
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
   observer1->unobserve(target, exception_state);
   ASSERT_FALSE(exception_state.HadException());
-  EXPECT_EQ(controller.GetTrackedTargetCountForTesting(), 1u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 1u);
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
   observer2->unobserve(target, exception_state);
   ASSERT_FALSE(exception_state.HadException());
-  EXPECT_EQ(controller.GetTrackedTargetCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
+}
+
+TEST_F(IntersectionObserverTest, TrackedRootBookkeeping) {
+  SimRequest main_resource("https://example.com/", "text/html");
+  LoadURL("https://example.com/");
+  main_resource.Complete(R"HTML(
+    <div id='root'>
+      <div id='target1'></div>
+      <div id='target2'></div>
+    </div>
+  )HTML");
+
+  IntersectionObserverController& controller =
+      GetDocument().EnsureIntersectionObserverController();
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
+
+  Persistent<Element> root = GetDocument().getElementById("root");
+  Persistent<Element> target = GetDocument().getElementById("target1");
+  Persistent<IntersectionObserverInit> observer_init =
+      IntersectionObserverInit::Create();
+  observer_init->setRoot(root);
+  Persistent<TestIntersectionObserverDelegate> observer_delegate =
+      MakeGarbageCollected<TestIntersectionObserverDelegate>(GetDocument());
+  Persistent<IntersectionObserver> observer =
+      IntersectionObserver::Create(observer_init, *observer_delegate);
+
+  // For an explicit-root observer, the root element is tracked, even when it
+  // has no observations.
+  ElementIntersectionObserverData* root_data = root->IntersectionObserverData();
+  ASSERT_TRUE(root_data);
+  EXPECT_FALSE(root_data->IsEmpty());
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 1u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
+
+  // For an explicit-root observer, target elements are not tracked.
+  observer->observe(target);
+  ElementIntersectionObserverData* target_data =
+      target->IntersectionObserverData();
+  ASSERT_TRUE(target_data);
+  EXPECT_FALSE(target_data->IsEmpty());
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 1u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
+
+  // The existing observation should keep the observer alive and active, even
+  // when there are no other references to the observer.
+  observer = nullptr;
+  // Flush any pending notifications, which hold a hard reference to the
+  // observer and can prevent it from being gc'ed. The observation will be the
+  // only thing keeping the observer alive.
+  test::RunPendingTasks();
+  observer_delegate->Clear();
+  V8GCController::CollectAllGarbageForTesting(
+      v8::Isolate::GetCurrent(),
+      v8::EmbedderHeapTracer::EmbedderStackState::kEmpty);
+  EXPECT_FALSE(root_data->IsEmpty());
+  EXPECT_FALSE(target_data->IsEmpty());
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 1u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
+
+  // When the last observation is disconnected, as a result of the target being
+  // gc'ed, the observer should also get gc'ed and the root element should no
+  // longer be tracked.
+  target->remove();
+  target = nullptr;
+  target_data = nullptr;
+  // Removing the target from the DOM tree forces a notification to be
+  // queued, so flush it out.
+  test::RunPendingTasks();
+  observer_delegate->Clear();
+  V8GCController::CollectAllGarbageForTesting(
+      v8::Isolate::GetCurrent(),
+      v8::EmbedderHeapTracer::EmbedderStackState::kEmpty);
+  EXPECT_TRUE(root_data->IsEmpty());
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
+
+  target = GetDocument().getElementById("target2");
+  observer = IntersectionObserver::Create(observer_init, *observer_delegate);
+  observer->observe(target);
+  target_data = target->IntersectionObserverData();
+  ASSERT_TRUE(target_data);
+
+  // If the explicit root of an observer goes away, any existing observations
+  // should be disconnected.
+  target->remove();
+  root->remove();
+  root = nullptr;
+  test::RunPendingTasks();
+  observer_delegate->Clear();
+  observer_delegate = nullptr;
+  observer_init = nullptr;
+  // Removing the target from the tree is not enough to disconnect the
+  // observation.
+  EXPECT_FALSE(target_data->IsEmpty());
+  V8GCController::CollectAllGarbageForTesting(
+      v8::Isolate::GetCurrent(),
+      v8::EmbedderHeapTracer::EmbedderStackState::kEmpty);
+  EXPECT_TRUE(target_data->IsEmpty());
+  EXPECT_EQ(controller.GetTrackedObserverCountForTesting(), 0u);
+  EXPECT_EQ(controller.GetTrackedObservationCountForTesting(), 0u);
 }
 
 TEST_F(IntersectionObserverTest, RootMarginDevicePixelRatio) {
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 6433c6f1..a7bd7da 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
@@ -1014,7 +1014,6 @@
           is_new_formatting_context(false),
           is_orthogonal_writing_mode_root(false),
           is_painted_atomically(false),
-          is_fixed_block_size_indefinite(false),
           use_first_line_style(false),
           ancestor_has_clearance_past_adjoining_floats(false),
           needs_baseline(false),
@@ -1023,6 +1022,7 @@
           is_shrink_to_fit(false),
           is_fixed_inline_size(false),
           is_fixed_block_size(false),
+          is_fixed_block_size_indefinite(false),
           table_cell_child_layout_mode(static_cast<unsigned>(
               NGTableCellChildLayoutMode::kNotTableCellChild)),
           percentage_inline_storage(kSameAsAvailable),
@@ -1050,6 +1050,8 @@
       return is_shrink_to_fit == other.is_shrink_to_fit &&
              is_fixed_inline_size == other.is_fixed_inline_size &&
              is_fixed_block_size == other.is_fixed_block_size &&
+             is_fixed_block_size_indefinite ==
+                 other.is_fixed_block_size_indefinite &&
              table_cell_child_layout_mode == other.table_cell_child_layout_mode;
     }
 
@@ -1064,7 +1066,6 @@
     unsigned is_orthogonal_writing_mode_root : 1;
 
     unsigned is_painted_atomically : 1;
-    unsigned is_fixed_block_size_indefinite : 1;
     unsigned use_first_line_style : 1;
     unsigned ancestor_has_clearance_past_adjoining_floats : 1;
 
@@ -1075,6 +1076,7 @@
     unsigned is_shrink_to_fit : 1;
     unsigned is_fixed_inline_size : 1;
     unsigned is_fixed_block_size : 1;
+    unsigned is_fixed_block_size_indefinite : 1;
     unsigned table_cell_child_layout_mode : 2;  // NGTableCellChildLayoutMode
 
     unsigned percentage_inline_storage : 2;           // NGPercentageStorage
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc
index 2ba9550..f9304323 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc
@@ -84,6 +84,8 @@
 
   DCHECK_EQ(new_space.IsFixedInlineSize(), old_space.IsFixedInlineSize());
   DCHECK_EQ(new_space.IsFixedBlockSize(), old_space.IsFixedBlockSize());
+  DCHECK_EQ(new_space.IsFixedBlockSizeIndefinite(),
+            old_space.IsFixedBlockSizeIndefinite());
   DCHECK_EQ(new_space.IsShrinkToFit(), old_space.IsShrinkToFit());
   DCHECK_EQ(new_space.TableCellChildLayoutMode(),
             old_space.TableCellChildLayoutMode());
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc
index 6da57581..0e31143 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.cc
+++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -340,6 +340,8 @@
 
   progress_tracker_->FinishedParsing();
 
+  frame_->GetLocalFrameHostRemote().DidFinishDocumentLoad();
+
   if (Client()) {
     ScriptForbiddenScope forbid_scripts;
     Client()->DispatchDidFinishDocumentLoad();
diff --git a/third_party/blink/renderer/core/loader/resource/image_resource_content.cc b/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
index 4c83eff4..c426faf 100644
--- a/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
+++ b/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
@@ -195,7 +195,8 @@
   auto it = observers_.find(observer);
   bool fully_erased;
   if (it != observers_.end()) {
-    fully_erased = observers_.erase(it);
+    fully_erased = observers_.erase(it) && finished_observers_.find(observer) ==
+                                               finished_observers_.end();
   } else {
     it = finished_observers_.find(observer);
     DCHECK(it != finished_observers_.end());
diff --git a/third_party/blink/renderer/core/page/focus_controller.cc b/third_party/blink/renderer/core/page/focus_controller.cc
index 99fc097..54e3ef0c 100644
--- a/third_party/blink/renderer/core/page/focus_controller.cc
+++ b/third_party/blink/renderer/core/page/focus_controller.cc
@@ -49,6 +49,7 @@
 #include "third_party/blink/renderer/core/html/forms/text_control_element.h"
 #include "third_party/blink/renderer/core/html/html_plugin_element.h"
 #include "third_party/blink/renderer/core/html/html_slot_element.h"
+#include "third_party/blink/renderer/core/html/portal/html_portal_element.h"
 #include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/input/event_handler.h"
 #include "third_party/blink/renderer/core/layout/hit_test_result.h"
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter_test.cc b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter_test.cc
index 0dfa168..60890af 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter_test.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter_test.cc
@@ -65,4 +65,21 @@
   EXPECT_EQ(6u, RootPaintController().GetDisplayItemList().size());
 }
 
+TEST_P(NGTextFragmentPainterTest, DegenerateUnderlineIntercepts) {
+  SetBodyInnerHTML(R"HTML(
+    <!DOCTYPE html>
+    <style>
+      span {
+        font-size: 20px;
+        text-decoration: underline;
+      }
+    </style>
+    <span style="letter-spacing: -1e9999em;">a|b|c d{e{f{</span>
+    <span style="letter-spacing: 1e9999em;">a|b|c d{e{f{</span>
+  )HTML");
+  UpdateAllLifecyclePhasesForTest();
+  // Test for https://crbug.com/1043753: the underline intercepts are infinite
+  // due to letter spacing and this test passes if that does not cause a crash.
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/text_painter_base.cc b/third_party/blink/renderer/core/paint/text_painter_base.cc
index 419b89ad..b93e6b0 100644
--- a/third_party/blink/renderer/core/paint/text_painter_base.cc
+++ b/third_party/blink/renderer/core/paint/text_painter_base.cc
@@ -179,6 +179,9 @@
     // pixel makes sure we're always covering. This should only be done on the
     // clipping rectangle, not when computing the glyph intersects.
     clip_rect.InflateY(1.0);
+
+    if (!clip_rect.IsFinite())
+      continue;
     graphics_context_.ClipOut(clip_rect);
   }
 }
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
index ecb6f6ec..2d6615c 100644
--- a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
+++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
@@ -85,6 +85,8 @@
 void FakeLocalFrameHost::ForwardResourceTimingToParent(
     mojom::blink::ResourceTimingInfoPtr timing) {}
 
+void FakeLocalFrameHost::DidFinishDocumentLoad() {}
+
 void FakeLocalFrameHost::BindFrameHostReceiver(
     mojo::ScopedInterfaceEndpointHandle handle) {
   receiver_.Bind(mojo::PendingAssociatedReceiver<mojom::blink::LocalFrameHost>(
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.h b/third_party/blink/renderer/core/testing/fake_local_frame_host.h
index ce41dadc..da28a86e 100644
--- a/third_party/blink/renderer/core/testing/fake_local_frame_host.h
+++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.h
@@ -63,6 +63,7 @@
   void DocumentOnLoadCompleted() override;
   void ForwardResourceTimingToParent(
       mojom::blink::ResourceTimingInfoPtr timing) override;
+  void DidFinishDocumentLoad() override;
 
  private:
   void BindFrameHostReceiver(mojo::ScopedInterfaceEndpointHandle handle);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 1db4dfb..ec0766f4 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1629,6 +1629,8 @@
 
   if (GetLayoutObject())
     return GetLayoutObject()->Style()->Visibility() != EVisibility::kVisible;
+  else if (GetNode() && IsA<HTMLNoScriptElement>(GetNode()))
+    return true;
 
   // This is an obscure corner case: if a node has no LayoutObject, that means
   // it's not rendered, but we still may be exploring it as part of a text
diff --git a/third_party/blink/renderer/platform/geometry/float_rect.cc b/third_party/blink/renderer/platform/geometry/float_rect.cc
index 3b0b298b..f9c9055 100644
--- a/third_party/blink/renderer/platform/geometry/float_rect.cc
+++ b/third_party/blink/renderer/platform/geometry/float_rect.cc
@@ -63,6 +63,10 @@
 
 #endif
 
+bool FloatRect::IsFinite() const {
+  return static_cast<SkRect>(*this).isFinite();
+}
+
 bool FloatRect::IsExpressibleAsIntRect() const {
   return isWithinIntRange(X()) && isWithinIntRange(Y()) &&
          isWithinIntRange(Width()) && isWithinIntRange(Height()) &&
diff --git a/third_party/blink/renderer/platform/geometry/float_rect.h b/third_party/blink/renderer/platform/geometry/float_rect.h
index 1e3c7b0..5964ea6 100644
--- a/third_party/blink/renderer/platform/geometry/float_rect.h
+++ b/third_party/blink/renderer/platform/geometry/float_rect.h
@@ -92,6 +92,8 @@
 
   constexpr bool IsEmpty() const { return size_.IsEmpty(); }
   constexpr bool IsZero() const { return size_.IsZero(); }
+  // True if no member is infinite or NaN.
+  bool IsFinite() const;
   bool IsExpressibleAsIntRect() const;
 
   FloatPoint Center() const {
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
index 1fcade53..216f5f7 100644
--- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
+++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
@@ -67,6 +67,11 @@
     const PaintArtifact* paint_artifact) const {
   DCHECK(RuntimeEnabledFeatures::CompositeAfterPaintEnabled() ||
          paint_artifact);
+
+  if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled() &&
+      !tracks_raster_invalidations_)
+    flags &= ~kLayerTreeIncludesPaintInvalidations;
+
   LayersAsJSON layers_as_json(flags);
   if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) {
     for (const auto& layer : root_layer_->children()) {
diff --git a/third_party/blink/web_tests/FlagExpectations/composite-after-paint b/third_party/blink/web_tests/FlagExpectations/composite-after-paint
index f12ae8c7..c2359e7 100644
--- a/third_party/blink/web_tests/FlagExpectations/composite-after-paint
+++ b/third_party/blink/web_tests/FlagExpectations/composite-after-paint
@@ -37,13 +37,15 @@
 crbug.com/1039401 virtual/scroll_customization/fast/scrolling/scrollbar-mousedown-mouseup.html [ Pass ]
 
 # Missing composited layers for elements without visible contents.
-crbug.com/937573 compositing/geometry/foreground-layer.html [ Failure ]
 crbug.com/937573 compositing/geometry/limit-layer-bounds-opacity-transition.html [ Failure ]
 crbug.com/937573 compositing/geometry/limit-layer-bounds-overflow-root.html [ Failure ]
 crbug.com/937573 compositing/geometry/limit-layer-bounds-positioned-transition.html [ Failure ]
 crbug.com/937573 compositing/geometry/limit-layer-bounds-positioned.html [ Failure ]
 crbug.com/937573 compositing/geometry/limit-layer-bounds-transformed.html [ Failure ]
 crbug.com/937573 compositing/layer-creation/scroll-partial-update.html [ Failure ]
+crbug.com/937573 paint/invalidation/compositing/iframe-inside-squashed-layer.html [ Failure ]
+crbug.com/937573 paint/invalidation/compositing/remove-squashed-layer-plus-move.html [ Failure ]
+crbug.com/937573 paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint.html [ Failure ]
 
 virtual/android/fullscreen/video-overlay-scroll.html [ Failure ]
 virtual/android/rootscroller/fixed-chaining-with-implicit-pointer-events-none.html [ Failure ]
@@ -51,14 +53,8 @@
 virtual/android/url-bar/bottom-and-top-fixed-sticks-to-top.html [ Crash ]
 virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html [ Crash ]
 
-# Composited filters are not working.
-crbug.com/1008501 compositing/reflections/deeply-nested-reflections.html [ Failure ]
-
-# Wrong contentsOpaque or background color.
-crbug.com/1029620 compositing/contents-opaque/control-layer.html [ Failure ]
-crbug.com/1029620 compositing/contents-opaque/layer-opacity.html [ Failure ]
-# Flaky result of contentsOpqaue.
-crbug.com/1029620 paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered.html [ Pass Failure ]
+# Wrong clip of nested reflection.
+compositing/reflections/deeply-nested-reflections.html [ Failure ]
 
 # Needs to implement logic for CompositingReasons::kAssumedOverlap.
 compositing/layer-creation/overlap-animation-clipping.html [ Failure ]
@@ -74,7 +70,6 @@
 crbug.com/667946 compositing/overflow/scrolls-with-respect-to-transform.html [ Failure ]
 crbug.com/667946 compositing/overflow/scrolls-with-respect-to.html [ Failure ]
 compositing/squashing/do-not-squash-scroll-child-with-composited-descendants.html [ Failure ]
-compositing/squashing/squashed-repaints.html [ Failure ]
 compositing/visibility/layer-visible-content.html [ Failure ]
 external/wpt/css/css-transforms/transform3d-backface-visibility-006.html [ Failure ]
 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow.html [ Crash ]
@@ -109,37 +104,25 @@
 paint/invalidation/scroll/overflow-hidden-yet-scrolled-with-custom-scrollbar.html [ Failure ]
 paint/invalidation/scroll/overflow-hidden-yet-scrolled.html [ Failure ]
 
-# "Missing" raster invalidation because composited layers are re-created.
-crbug.com/842356 paint/invalidation/compositing/containing-block-added-individual.html [ Failure ]
-crbug.com/842356 paint/invalidation/compositing/containing-block-added.html [ Failure ]
-crbug.com/842356 paint/invalidation/compositing/containing-block-removed-individual.html [ Failure ]
-crbug.com/842356 paint/invalidation/compositing/containing-block-removed.html [ Failure ]
-
 # Extra raster invalidations.
 compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html [ Failure ]
 paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants.html [ Failure ]
-paint/invalidation/compositing/should-not-repaint-composited-filter.html [ Failure ]
-paint/invalidation/compositing/should-not-repaint-composited-opacity.html [ Failure ]
 paint/invalidation/compositing/should-not-repaint-move-backface-hidden.html [ Failure ]
 paint/invalidation/scroll/iframe-scroll-repaint.html [ Failure ]
-paint/invalidation/scroll/repaint-composited-child-in-scrolled-container.html [ Failure ]
 paint/invalidation/position/relative-positioned-movement-repaint.html [ Failure ]
 
-# Wrong invalidation/painting/rasterization for multicol. Different layer tree.
-crbug.com/648274 paint/invalidation/multicol/multicol-as-paint-container.html [ Failure ]
-
-# Different layer tree about squashing.
-crbug.com/757977 compositing/squashing/squashed-layer-loses-graphicslayer.html [ Failure ]
-crbug.com/757977 paint/invalidation/compositing/remove-squashed-layer-plus-move.html [ Failure ]
-crbug.com/757977 paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint.html [ Failure ]
+# Should not decomposite effects for composited elements.
+crbug.com/765003 paint/invalidation/compositing/should-not-repaint-composited-filter.html [ Failure ]
+crbug.com/765003 paint/invalidation/compositing/should-not-repaint-composited-opacity.html [ Failure ]
+crbug.com/765003 compositing/contents-opaque/layer-opacity.html [ Failure ]
 
 # Less layers or other different layer trees.
-paint/invalidation/compositing/iframe-inside-squashed-layer.html [ Failure ]
 paint/invalidation/compositing/overlap-test-with-filter.html [ Failure ]
 paint/invalidation/compositing/should-not-repaint-composited-descendants.html [ Failure ]
 
 # Subpixel or invisible color differences that look benign, but we can't rebaseline ref tests.
 compositing/overflow/ancestor-with-clip-path.html [ Failure ]
+css3/blending/svg-isolation-add-clipper-text.html [ Failure ]
 fast/multicol/mixed-opacity-fixed-test.html [ Failure ]
 fullscreen/rendering/backdrop-object.html [ Failure ]
 external/wpt/svg/render/reftests/blending-001.svg [ Failure ]
@@ -153,9 +136,6 @@
 
 virtual/threaded/compositing/visibility/layer-visible-content.html [ Failure ]
 
-crbug.com/931486 compositing/overflow/overlap-testing-ancestor-scroller-high-dpi.html [ Failure ]
-crbug.com/931486 compositing/squashing/squash-above-fixed-1.html [ Failure ]
-crbug.com/931486 compositing/squashing/squash-above-fixed-3.html [ Failure ]
 crbug.com/931486 paint/invalidation/compositing/pointer-events-composited-scrolling.html [ Failure ]
 crbug.com/931486 paint/invalidation/compositing/scrolling-neg-z-index-descendants.html [ Failure ]
 crbug.com/931486 paint/invalidation/scroll/composited-iframe-scroll-repaint.html [ Failure ]
@@ -171,8 +151,6 @@
 
 paint/pagination/composited-paginated-outlined-box.html [ Failure ]
 paint/invalidation/media-audio-no-spurious-repaints.html [ Failure ]
-paint/invalidation/reflection/scroll-fixed-layer-with-reflection.html [ Failure ]
-paint/invalidation/reflection/scroll-fixed-reflected-layer.html [ Failure ]
 
 # Extra raster invalidation on start/end of animation. Caused by animation
 # element id namespaces
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index d82a7a0..34262e4 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1328,6 +1328,7 @@
 crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/flex-aspect-ratio-img-column-004.html [ Failure ]
 crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/hittest-overlapping-margin.html [ Failure ]
 crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/hittest-overlapping-order.html [ Failure ]
+crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/percentage-heights-010.html [ Failure ]
 crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/quirks-auto-block-size-with-percentage-item.html [ Pass Failure ]
 crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-intrinsic-ratio-003.html [ Failure ]
 crbug.com/845235 virtual/layout_ng_flex_box/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-intrinsic-ratio-004.html [ Failure ]
@@ -2798,6 +2799,67 @@
 crbug.com/641245 external/wpt/css/motion/offset-path-ray-contain-005.html [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+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 ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-border-image.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-border-image.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-border-image.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/compositing_simple_div.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/compositing_simple_div.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/compositing_simple_div.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-simple.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html [ Failure ]
+crbug.com/626703 [ Linux ] 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-blended-with-transform-and-perspective.html [ Failure ]
+crbug.com/626703 [ Mac10.11 ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Failure ]
+crbug.com/626703 [ Retina ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Failure ]
+crbug.com/626703 [ Mac10.10 ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Failure Timeout ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-svg.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-filter.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-filter.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-filter.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-script.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/svg/mix-blend-mode-in-svg-image.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/svg/mix-blend-mode-in-svg-image.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/svg/mix-blend-mode-in-svg-image.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-mask.html [ Failure ]
 crbug.com/626703 [ Mac10.10 ] external/wpt/webrtc/RTCPeerConnection-createDataChannel.html [ Failure Crash ]
 crbug.com/626703 [ Mac10.10 ] external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window.html [ Failure Timeout ]
 crbug.com/626703 [ Mac10.12 ] external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window.html [ Failure Timeout ]
@@ -6119,7 +6181,6 @@
 crbug.com/1027434 virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Pass Timeout ]
 
 # Sheriff 2019-12-02
-crbug.com/1029713 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.html [ Pass Failure ]
 crbug.com/1029528 [ Linux ] http/tests/devtools/network/oopif-content.js [ Pass Failure ]
 crbug.com/1028477 [ Mac ] http/tests/devtools/appcache/appcache-manifest-with-non-existing-file.js [ Pass Timeout ]
 crbug.com/1028477 [ Win ] http/tests/devtools/appcache/appcache-manifest-with-non-existing-file.js [ Pass Timeout ]
@@ -6300,6 +6361,18 @@
 crbug.com/1044567 [ Mac10.10 ] media/video-colorspace-yuv420.html [ Pass Failure ]
 crbug.com/1044567 [ Mac10.10 ] virtual/audio-service/media/video-colorspace-yuv420.html [ Pass Failure ]
 crbug.com/1044568 [ Mac10.11 ] virtual/cascade/fast/forms/calendar-picker/calendar-picker-appearance-zoom125.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/date-suggestion-picker-appearance.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl.html [ Pass Failure ]
+crbug.com/1044712 [ Win ] virtual/controls-refresh/color-scheme/suggestion-picker/date-suggestion-picker-appearance.html [ Pass Failure ]
+crbug.com/1044715 [ Win ] external/wpt/pointerevents/pointerevent_touch-action-pan-right-css_touch.html [ Pass Failure ]
+crbug.com/1044715 [ Win ] external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html [ Pass Failure ]
+crbug.com/1044715 [ Win ] external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html [ Pass Failure ]
 
 # Ref_Tests which fail when SkiaRenderer is enable, and which cannot be
 # rebaselined. TODO(jonross): triage these into any existing bugs or file more
diff --git a/third_party/blink/web_tests/WPTOverrideExpectations b/third_party/blink/web_tests/WPTOverrideExpectations
index 46943d5..07fc360 100644
--- a/third_party/blink/web_tests/WPTOverrideExpectations
+++ b/third_party/blink/web_tests/WPTOverrideExpectations
@@ -918,6 +918,7 @@
 crbug.com/1033611 external/wpt/webxr/getInputPose_handedness.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/getInputPose_pointer.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/getViewerPose_emulatedPosition.https.html [ Failure ]
+crbug.com/1033611 external/wpt/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/navigator_xr_sameObject.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/render_state_vertical_fov_immersive.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/render_state_vertical_fov_inline.https.html [ Failure ]
@@ -941,6 +942,7 @@
 crbug.com/1033611 external/wpt/webxr/xrDevice_supportsSession_immersive_unsupported.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/xrDevice_supportsSession_non_immersive.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/xrFrame_getPose.https.html [ Failure ]
+crbug.com/1033611 external/wpt/webxr/xrFrame_getViewerPose_getPose.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/xrFrame_lifetime.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/xrFrame_session_sameObject.https.html [ Failure ]
 crbug.com/1033611 external/wpt/webxr/xrInputSource_add_remove.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/accessibility/noscript-name-contribution.html b/third_party/blink/web_tests/accessibility/noscript-name-contribution.html
new file mode 100644
index 0000000..815263e
--- /dev/null
+++ b/third_party/blink/web_tests/accessibility/noscript-name-contribution.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+
+<div>
+  <a id="link" href="#">
+    <noscript><img alt="noscripty"></noscript>
+    <img alt="scripty">
+  </a>
+</div>
+
+<script>
+function axElementById(id) {
+    return accessibilityController.accessibleElementById(id);
+}
+
+test(function(t) {
+    let link = axElementById("link");
+    assert_equals(link.name, 'scripty');
+}, "Noscript should not contribute to name when scripting is on");
+</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 f066290..12ff71b 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
@@ -32343,6 +32343,546 @@
      {}
     ]
    ],
+   "css/compositing/background-blending/background-blend-mode-gradient-image.html": [
+    [
+     "css/compositing/background-blending/background-blend-mode-gradient-image.html",
+     [
+      [
+       "/css/compositing/background-blending/reference/background-blend-mode-gradient-image-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/compositing_simple_div.html": [
+    [
+     "css/compositing/compositing_simple_div.html",
+     [
+      [
+       "/css/compositing/compositing_simple_div-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-animation.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-animation.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-animation-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/green-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-scroll.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-scroll.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-scroll-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-3D-transform-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/green-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-border-image.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-border-image.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-border-image-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-parent-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-sibling-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-filter.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-filter.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-filter-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-parent-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-sibling-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-image.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-image.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-image-notref.html",
+       "!="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-mask.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-mask.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-mask-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-overflowing-child-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-background-image-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-3D-transform-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-border-radius-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-text-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-script.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-script.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-script-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-sibling-with-3D-transform-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-simple.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-simple.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/green-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-creates-isolation-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-svg.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-svg.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-svg-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-sibling-notref.html",
+       "!="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-video.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-video.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-notref.html",
+       "!="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html",
+     [
+      [
+       "/css/compositing/mix-blend-mode/reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/root-element-background-transparency.html": [
+    [
+     "css/compositing/root-element-background-transparency.html",
+     [
+      [
+       "/css/compositing/root-element-background-transparency-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/root-element-blend-mode.html": [
+    [
+     "css/compositing/root-element-blend-mode.html",
+     [
+      [
+       "/css/compositing/root-element-blend-mode-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/root-element-filter.html": [
+    [
+     "css/compositing/root-element-filter.html",
+     [
+      [
+       "/css/compositing/root-element-filter-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/root-element-opacity.html": [
+    [
+     "css/compositing/root-element-opacity.html",
+     [
+      [
+       "/css/compositing/root-element-opacity-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/svg/mix-blend-mode-in-svg-image.html": [
+    [
+     "css/compositing/svg/mix-blend-mode-in-svg-image.html",
+     [
+      [
+       "/css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/compositing/svg/mix-blend-mode-svg-rectangle.html": [
+    [
+     "css/compositing/svg/mix-blend-mode-svg-rectangle.html",
+     [
+      [
+       "/css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-align/baseline-of-scrollable-1a.html": [
     [
      "css/css-align/baseline-of-scrollable-1a.html",
@@ -135394,6 +135934,204 @@
    "css/build-css-testsuites.sh": [
     []
    ],
+   "css/compositing/Blending_in_a_group_with_filter-ref.html": [
+    []
+   ],
+   "css/compositing/Blending_in_a_group_with_opacity-ref.html": [
+    []
+   ],
+   "css/compositing/META.yml": [
+    []
+   ],
+   "css/compositing/Text_with_SVG_background-ref.html": [
+    []
+   ],
+   "css/compositing/background-blending/reference/background-blend-mode-gradient-image-ref.html": [
+    []
+   ],
+   "css/compositing/background-blending/support/red.png": [
+    []
+   ],
+   "css/compositing/compositing_simple_div-ref.html": [
+    []
+   ],
+   "css/compositing/line-with-svg-background-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context-expected.txt": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/green-square.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-animation-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-scroll-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-3D-transform-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-border-image-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-parent-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-sibling-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-filter-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-parent-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-sibling-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-image-notref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-mask-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-overflowing-child-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-background-image-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-3D-transform-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-border-radius-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-text-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-script-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-sibling-with-3D-transform-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-001-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-creates-isolation-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-svg-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-video-notref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-video-sibling-notref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/RGB_Circles.mov": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/RGB_Circles.mp4": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/RGB_Circles.oggtheora.ogv": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/RGB_Circles.webmhd.webm": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/RGB_Circles.webmsd.webm": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/red.png": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/red_circle.mp4": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/red_circle.svg": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/red_square.html": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/red_square.svg": [
+    []
+   ],
+   "css/compositing/mix-blend-mode/support/yellow_square.svg": [
+    []
+   ],
+   "css/compositing/parsing/background-blend-mode-computed-expected.txt": [
+    []
+   ],
+   "css/compositing/root-element-background-transparency-ref.html": [
+    []
+   ],
+   "css/compositing/root-element-blend-mode-ref.html": [
+    []
+   ],
+   "css/compositing/root-element-filter-ref.html": [
+    []
+   ],
+   "css/compositing/root-element-opacity-ref.html": [
+    []
+   ],
+   "css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html": [
+    []
+   ],
+   "css/compositing/svg/support/green_square_blending.svg": [
+    []
+   ],
+   "css/compositing/test-plan/css-blending-test-plan-proposal.html": [
+    []
+   ],
+   "css/compositing/test-plan/test-plan.html": [
+    []
+   ],
+   "css/compositing/test-plan/test-plan.src.html": [
+    []
+   ],
+   "css/compositing/test-plan/test_template.png": [
+    []
+   ],
+   "css/compositing/text-with-svg-background-ref.html": [
+    []
+   ],
    "css/css-align/META.yml": [
     []
    ],
@@ -182395,6 +183133,12 @@
    "wasm/jsapi/table/assertions.js": [
     []
    ],
+   "wasm/jsapi/table/grow-reftypes.tentative.any-expected.txt": [
+    []
+   ],
+   "wasm/jsapi/table/grow-reftypes.tentative.any.worker-expected.txt": [
+    []
+   ],
    "wasm/jsapi/wasm-module-builder.js": [
     []
    ],
@@ -183631,9 +184375,6 @@
    "webrtc/RTCRtpParameters-degradationPreference-expected.txt": [
     []
    ],
-   "webrtc/RTCRtpParameters-encodings-expected.txt": [
-    []
-   ],
    "webrtc/RTCRtpParameters-helper.js": [
     []
    ],
@@ -211175,6 +211916,78 @@
      {}
     ]
    ],
+   "css/compositing/inheritance.html": [
+    [
+     "css/compositing/inheritance.html",
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html",
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parsing.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parsing.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/background-blend-mode-computed.html": [
+    [
+     "css/compositing/parsing/background-blend-mode-computed.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/background-blend-mode-invalid.html": [
+    [
+     "css/compositing/parsing/background-blend-mode-invalid.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/background-blend-mode-valid.html": [
+    [
+     "css/compositing/parsing/background-blend-mode-valid.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/isolation-computed.html": [
+    [
+     "css/compositing/parsing/isolation-computed.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/isolation-invalid.html": [
+    [
+     "css/compositing/parsing/isolation-invalid.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/isolation-valid.html": [
+    [
+     "css/compositing/parsing/isolation-valid.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/mix-blend-mode-computed.html": [
+    [
+     "css/compositing/parsing/mix-blend-mode-computed.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/mix-blend-mode-invalid.html": [
+    [
+     "css/compositing/parsing/mix-blend-mode-invalid.html",
+     {}
+    ]
+   ],
+   "css/compositing/parsing/mix-blend-mode-valid.html": [
+    [
+     "css/compositing/parsing/mix-blend-mode-valid.html",
+     {}
+    ]
+   ],
    "css/css-align/animation/column-gap-composition.html": [
     [
      "css/css-align/animation/column-gap-composition.html",
@@ -317903,6 +318716,78 @@
      }
     ]
    ],
+   "wasm/jsapi/table/grow-reftypes.tentative.any.js": [
+    [
+     "wasm/jsapi/table/grow-reftypes.tentative.any.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "jsshell"
+       ],
+       [
+        "script",
+        "assertions.js"
+       ],
+       [
+        "script",
+        "/wasm/jsapi/wasm-constants.js"
+       ],
+       [
+        "script",
+        "/wasm/jsapi/wasm-module-builder.js"
+       ]
+      ]
+     }
+    ],
+    [
+     "wasm/jsapi/table/grow-reftypes.tentative.any.js",
+     {
+      "jsshell": true,
+      "script_metadata": [
+       [
+        "global",
+        "jsshell"
+       ],
+       [
+        "script",
+        "assertions.js"
+       ],
+       [
+        "script",
+        "/wasm/jsapi/wasm-constants.js"
+       ],
+       [
+        "script",
+        "/wasm/jsapi/wasm-module-builder.js"
+       ]
+      ]
+     }
+    ],
+    [
+     "wasm/jsapi/table/grow-reftypes.tentative.any.worker.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "jsshell"
+       ],
+       [
+        "script",
+        "assertions.js"
+       ],
+       [
+        "script",
+        "/wasm/jsapi/wasm-constants.js"
+       ],
+       [
+        "script",
+        "/wasm/jsapi/wasm-module-builder.js"
+       ]
+      ]
+     }
+    ]
+   ],
    "wasm/jsapi/table/grow.any.js": [
     [
      "wasm/jsapi/table/grow.any.html",
@@ -322716,6 +323601,12 @@
      }
     ]
    ],
+   "webrtc-extensions/RTCRtpParameters-maxFramerate.html": [
+    [
+     "webrtc-extensions/RTCRtpParameters-maxFramerate.html",
+     {}
+    ]
+   ],
    "webrtc-extensions/RTCRtpReceiver-playoutDelayHint.html": [
     [
      "webrtc-extensions/RTCRtpReceiver-playoutDelayHint.html",
@@ -337350,6 +338241,54 @@
      {}
     ]
    ],
+   "css/compositing/Blending_in_a_group_with_filter.html": [
+    [
+     "css/compositing/Blending_in_a_group_with_filter.html",
+     {}
+    ]
+   ],
+   "css/compositing/Blending_in_a_group_with_opacity.html": [
+    [
+     "css/compositing/Blending_in_a_group_with_opacity.html",
+     {}
+    ]
+   ],
+   "css/compositing/Text_with_SVG_background.html": [
+    [
+     "css/compositing/Text_with_SVG_background.html",
+     {}
+    ]
+   ],
+   "css/compositing/isolation/blend-isolation.html": [
+    [
+     "css/compositing/isolation/blend-isolation.html",
+     {}
+    ]
+   ],
+   "css/compositing/line-with-svg-background.html": [
+    [
+     "css/compositing/line-with-svg-background.html",
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html",
+     {}
+    ]
+   ],
+   "css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html": [
+    [
+     "css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html",
+     {}
+    ]
+   ],
+   "css/compositing/text-with-svg-background.html": [
+    [
+     "css/compositing/text-with-svg-background.html",
+     {}
+    ]
+   ],
    "css/css-align/ttwf-reftest-alignContent.html": [
     [
      "css/css-align/ttwf-reftest-alignContent.html",
@@ -371207,6 +372146,530 @@
    "5cb26179b8dbe4423885bcc7c8d687bab224df91",
    "support"
   ],
+  "css/compositing/Blending_in_a_group_with_filter-ref.html": [
+   "ad512028adae91920814b79714ea99ec51de4dc2",
+   "support"
+  ],
+  "css/compositing/Blending_in_a_group_with_filter.html": [
+   "77c09030023612ed966798d1fc3dbd58782e21cb",
+   "visual"
+  ],
+  "css/compositing/Blending_in_a_group_with_opacity-ref.html": [
+   "6f2248994883acc6631b00909129aa64930c4e22",
+   "support"
+  ],
+  "css/compositing/Blending_in_a_group_with_opacity.html": [
+   "40b10441124ad873294d69cfb8fd64bc3f20cb14",
+   "visual"
+  ],
+  "css/compositing/META.yml": [
+   "73541d894be1e6e42a5d029dce7844c30c391282",
+   "support"
+  ],
+  "css/compositing/Text_with_SVG_background-ref.html": [
+   "7ccc63a5559c377aee5fb11b376f32a29a331f0f",
+   "support"
+  ],
+  "css/compositing/Text_with_SVG_background.html": [
+   "5ee919ba8c64dec636428b3b4efbf53dc3840906",
+   "visual"
+  ],
+  "css/compositing/background-blending/background-blend-mode-gradient-image.html": [
+   "3707748a25644128a3d2875cf87b2e84228c5592",
+   "reftest"
+  ],
+  "css/compositing/background-blending/reference/background-blend-mode-gradient-image-ref.html": [
+   "4389960d783c91c414b33e1aaf0466ca91ee5942",
+   "support"
+  ],
+  "css/compositing/background-blending/support/red.png": [
+   "acc86d477054ba431d2de1671085569b4575d898",
+   "support"
+  ],
+  "css/compositing/compositing_simple_div-ref.html": [
+   "2f462178120a1a625e85905f7855881d9ab3e141",
+   "support"
+  ],
+  "css/compositing/compositing_simple_div.html": [
+   "44f138b5a6e1bb0d92206a5e0777de98f641fec0",
+   "reftest"
+  ],
+  "css/compositing/inheritance.html": [
+   "8bd08672edf54d3e6478841af7714235afb7bfab",
+   "testharness"
+  ],
+  "css/compositing/isolation/blend-isolation.html": [
+   "d1aa412ecf1b970a271f8ed0919c378ab9ec5fdb",
+   "visual"
+  ],
+  "css/compositing/line-with-svg-background-ref.html": [
+   "0d992bc75a7166e9b46c53c1aba7dd604590355b",
+   "support"
+  ],
+  "css/compositing/line-with-svg-background.html": [
+   "194096e66cb2fb8852af8a10487355ebb20366c8",
+   "visual"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-animation.html": [
+   "e5ce4684d10bd21fd66369ef75b2eaa179703cef",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html": [
+   "765467c43bb93d816017b726c0ba3734013ffb81",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html": [
+   "482f91d1a43db68ee3895e25418c7c906f212faa",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-scroll.html": [
+   "238e6e0d2463fe5a9a26f944bc2ddff9fb76da16",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html": [
+   "3d980d2afc3ff1d741047c0b933f7b8bb1b74b2b",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html": [
+   "acd5a404cb8cbf9c54e01d5f39f9f260eae20511",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html": [
+   "9c01694dc37ce5ca40eec47b5494ce5317bd99a6",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html": [
+   "8f95c87a0d77c217b1f7566a600cccdc34895e67",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-border-image.html": [
+   "7309e37372cf1abe913cfc5521c6f4b77c6a523a",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html": [
+   "c593973b4d1d9f95a7232bb42237a84b1e3de7f9",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html": [
+   "3a0d6b18adca75bcfde74e5c70140559e32b8364",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html": [
+   "6d4bdc6200dc783b9deb38746b3b50b716f5a745",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context-expected.txt": [
+   "9a23e6b813312929af0d2386a3242a40779dda3f",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html": [
+   "3351f2f32fd8939a301e8d174fa0b28eae46e492",
+   "testharness"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-filter.html": [
+   "d95866f839e5703b51aeadaa653cd886dc15ea08",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html": [
+   "69c8cb8296a6b69abdd56848555043975728d03f",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html": [
+   "6f82c9195b2d47e034bfd26e9c430359e3f94c59",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-image.html": [
+   "bd0ef8eb7c241adf143363bbf501b42a6b0259d1",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html": [
+   "875b64e18c0e85ed65f123683f340ed9e21f8e2d",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-mask.html": [
+   "8bfeb08f8a3f9ee8b9c11df766f13380a1fec761",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html": [
+   "418cde358984643915af75cb5d8b40417c930e55",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child.html": [
+   "47042b5ec2450dece70871df216d1c995e275d46",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html": [
+   "a4f5c226da603d226ac7c84289ae34894e6e33dd",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html": [
+   "4b61d2465462018af1aa4849111ccc1700c46ae9",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html": [
+   "0ef8ae3626ad450610f79dde2111147488710000",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html": [
+   "59989bc9f7f24b3bbf37b348f1ef126640bf1838",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html": [
+   "cd7cfce9979a5afe41acfcda0a7115071eaf2f0c",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html": [
+   "cd5f0e462b384ce1c18a9783a0473c1511ed2e40",
+   "visual"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html": [
+   "a6864a9d462bf76e5de2cf35f990669e3b7e3f09",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html": [
+   "9fc5cad92460d22bab53c69ce05ad33c89d20b3b",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html": [
+   "06a8c25c97e8470ba5960662c1c01287541d4035",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-parsing.html": [
+   "25bb5aa3658b36d2a570b9c5828654f90345d007",
+   "testharness"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-script.html": [
+   "1268a8dc3f8242f03007dfc5a5afbd321ee57b7b",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html": [
+   "798b1e261848653a9cccd0bba2fff9e595b19b03",
+   "visual"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html": [
+   "03c2f36ed0a2566701e26861b687df9f3e79a3e2",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-simple.html": [
+   "367238c0c0333aef477518e8511241ca8e545c00",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html": [
+   "6c11653c5f19f8ff47c429e1381b760b1e624cfb",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html": [
+   "255b9095a340603582963ccb8e1f4c432360bef0",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-svg.html": [
+   "c950e540fd6b5beaff357d2af7a4efa0e3127206",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html": [
+   "fa9fe6405658f9aab5a573bc87536b53c03edc98",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-video.html": [
+   "298ba990804e458e1b661628129267f81b5983db",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html": [
+   "6e351c9b15e1156136a9e851c672c9f2ad3d4e85",
+   "reftest"
+  ],
+  "css/compositing/mix-blend-mode/reference/green-square.html": [
+   "bfc4f715efe571e47ba2b07df57797059b3d7498",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-animation-ref.html": [
+   "0e94efa12d0758a2f9630cc3d2f1fa57a109980e",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html": [
+   "32e73e7fe9416af5c45832c4fd2d5faffcf7beb0",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-scroll-ref.html": [
+   "12bc979025bc0bda53a4db2f11cfc91a9017ac31",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html": [
+   "ee77433640826e78a4a1490788de0f91858ae3b6",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-3D-transform-ref.html": [
+   "83ee7deef146256619585a5f42264ed740f042b8",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html": [
+   "3219d0f65ee38c11266c0cf704b92980eda5dab4",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-border-image-ref.html": [
+   "9f12587738057c0b6c8a557fa822ab5437b89862",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html": [
+   "af2827b1c6112c67c9bf76f9295ae3b52a298bee",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-parent-ref.html": [
+   "44a9f48aacac280d7839141f6e441c1c8f4ba885",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-sibling-ref.html": [
+   "cf4ce401171239f1270b4d43ea0a07e26be3cd32",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-filter-ref.html": [
+   "282d52575304689c9932762bd97478d37bcf733f",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-parent-ref.html": [
+   "f1c8e9d105247c6ea71d500b3ef13acf6cae577d",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-sibling-ref.html": [
+   "0be26410cece8d651057d43237e97429c3f1c308",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-image-notref.html": [
+   "963697d84b900b7581d6c9d6b5098682d2d17cf0",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html": [
+   "96ac8b3e319783087d47ad4df286a55b87012bdf",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-mask-ref.html": [
+   "530a5d5ec701f891e560048b3fc4711367c83bfd",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-overflowing-child-ref.html": [
+   "a083cbc53202ca59139ecce786cec0625a28bc97",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-background-image-ref.html": [
+   "3a89df453bbe9d7c62d15b06f689f1886fa629f5",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-ref.html": [
+   "dc8b21654a6b32c7962732db04fa97a4fb604301",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html": [
+   "d415624f20bbaf2342a491278fb7abe905efd7c0",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html": [
+   "f88bfde0c5cdc61d51a892bc87f4d59d31601a4c",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-ref.html": [
+   "1e583b349cb2f29919dfbe3d1f6084d628358937",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-3D-transform-ref.html": [
+   "d512e70d6caaecab98aed2846200a9c9094bd5b9",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-border-radius-ref.html": [
+   "68e97ecff9083acd37408d9fc3bf8a6930af035e",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-text-ref.html": [
+   "275105c5dbb03cf1b82eb058e856d53b129ecbe9",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-script-ref.html": [
+   "b18ed6cd3c83d98495ab7c46ccb90fc593c3ad49",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-sibling-with-3D-transform-ref.html": [
+   "146f7b630799567d1e68a3bfe37403944f98f18e",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-001-ref.html": [
+   "9b0710acecac4f4220bb79a696e3a9b1b8a5d535",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-creates-isolation-ref.html": [
+   "806abe25e851d4eac7c4103ea628960e942c960b",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-svg-ref.html": [
+   "2ebde9167c63dc0acb282f0e462635e778205dbf",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-video-notref.html": [
+   "43b8e11e5a417b36cd76eeeb4a9b5ba2b38467f3",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-video-sibling-notref.html": [
+   "f42bb53f26ee8bb673d9134b88367d819c291ac7",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html": [
+   "cb92384720b2bc00db0a36d519aaf957397dbd7c",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/RGB_Circles.mov": [
+   "08e6b499cc98fd6f1f0e4cdae8cd4e5478f439b1",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/RGB_Circles.mp4": [
+   "0d0ac933ecc8c5c5ccca1cd17d7aa35967822204",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/RGB_Circles.oggtheora.ogv": [
+   "baed6e2f5df3573ca38c233d105b696867323b3f",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/RGB_Circles.webmhd.webm": [
+   "37e6862bcaff04e20e155ea9bd1921ec3beb72eb",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/RGB_Circles.webmsd.webm": [
+   "51337c7cffc605f8a60983964e518d93d4b42135",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/red.png": [
+   "acc86d477054ba431d2de1671085569b4575d898",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/red_circle.mp4": [
+   "ff251316a55d272c5339d9c42b1bbec429cf0741",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/red_circle.svg": [
+   "3a8050ec30a44e00a1eb8bc8c24e52685ad825da",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/red_square.html": [
+   "05bac7a135978d18f9f2a985bcfc581359b8d6a9",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/red_square.svg": [
+   "a078e6b731b3c08edd6c8ec821a4dc85a8058953",
+   "support"
+  ],
+  "css/compositing/mix-blend-mode/support/yellow_square.svg": [
+   "9ab6394e2aa521c87f1553cff441acca4bf9d6a6",
+   "support"
+  ],
+  "css/compositing/parsing/background-blend-mode-computed-expected.txt": [
+   "7774b396f846b95f1cffecac322d6e44de856231",
+   "support"
+  ],
+  "css/compositing/parsing/background-blend-mode-computed.html": [
+   "22d6a5f380c910cd1eccc7be076bb7bd684b7721",
+   "testharness"
+  ],
+  "css/compositing/parsing/background-blend-mode-invalid.html": [
+   "4fdd3d36ed96fede6396f3ed5db7fbb7115fee7e",
+   "testharness"
+  ],
+  "css/compositing/parsing/background-blend-mode-valid.html": [
+   "151a01c75a5a769cc745d3b15937fe3ce40ec388",
+   "testharness"
+  ],
+  "css/compositing/parsing/isolation-computed.html": [
+   "2f7a6e7924962eba1a48049bf9748f113af601c2",
+   "testharness"
+  ],
+  "css/compositing/parsing/isolation-invalid.html": [
+   "d5b8f49c61374e05b8afd396c5503a00d5b2f361",
+   "testharness"
+  ],
+  "css/compositing/parsing/isolation-valid.html": [
+   "252ff138e0f29d34569665eb63eb3fe800edd4b7",
+   "testharness"
+  ],
+  "css/compositing/parsing/mix-blend-mode-computed.html": [
+   "38a2c863514317802b719e35c06acc317e9e840e",
+   "testharness"
+  ],
+  "css/compositing/parsing/mix-blend-mode-invalid.html": [
+   "e73d28e585a930c5ec933f60124b08702926d971",
+   "testharness"
+  ],
+  "css/compositing/parsing/mix-blend-mode-valid.html": [
+   "c6393343dff89a6e5a5a5087675145cb1ec1de83",
+   "testharness"
+  ],
+  "css/compositing/root-element-background-transparency-ref.html": [
+   "4671d44c1c3f3e2ff16149cbaabebb0433aef3e5",
+   "support"
+  ],
+  "css/compositing/root-element-background-transparency.html": [
+   "910eb08e8d3004da7418f8f00f38d022841262f2",
+   "reftest"
+  ],
+  "css/compositing/root-element-blend-mode-ref.html": [
+   "14c99f708564ff97c5affe66c4a634eded0a7ff8",
+   "support"
+  ],
+  "css/compositing/root-element-blend-mode.html": [
+   "2c97d8b5e8ca9139bb83aca0ca90494d6fbbb255",
+   "reftest"
+  ],
+  "css/compositing/root-element-filter-ref.html": [
+   "27cfb11b8f480cdd3cc94c5467bf6b3dc9b831db",
+   "support"
+  ],
+  "css/compositing/root-element-filter.html": [
+   "62bde9dfd991d01314569ae694b495adc489a21e",
+   "reftest"
+  ],
+  "css/compositing/root-element-opacity-ref.html": [
+   "be2348ab967f2ff4c161f8bbb9999a0bd8523e82",
+   "support"
+  ],
+  "css/compositing/root-element-opacity.html": [
+   "4885d805ad3f3b59d60ccbf3047e8694d7be0f18",
+   "reftest"
+  ],
+  "css/compositing/svg/mix-blend-mode-in-svg-image.html": [
+   "658e0275d70b357b210ae70243a2f58b9752910c",
+   "reftest"
+  ],
+  "css/compositing/svg/mix-blend-mode-svg-rectangle.html": [
+   "e74181e2c35bd0ba1b78eadb84640d321dfa6577",
+   "reftest"
+  ],
+  "css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html": [
+   "6d74ee05211bedabbd0957d431dce86f27f14f33",
+   "support"
+  ],
+  "css/compositing/svg/support/green_square_blending.svg": [
+   "19d61e27fed1edbd74b20c64134395443420a87d",
+   "support"
+  ],
+  "css/compositing/test-plan/css-blending-test-plan-proposal.html": [
+   "c82a543a4e2395b3a5a77b3e364cd0aefec6d512",
+   "support"
+  ],
+  "css/compositing/test-plan/test-plan.html": [
+   "a378004beeb4b60313f242515b65ae0e6f9e87b0",
+   "support"
+  ],
+  "css/compositing/test-plan/test-plan.src.html": [
+   "c29f268837dd828a24f04a89aa149092b85e11cc",
+   "support"
+  ],
+  "css/compositing/test-plan/test_template.png": [
+   "dbd7752efe549d3f7d517087c3a8cb81a1441852",
+   "support"
+  ],
+  "css/compositing/text-with-svg-background-ref.html": [
+   "dfbde22f66bb425049452613f15476906a5aae85",
+   "support"
+  ],
+  "css/compositing/text-with-svg-background.html": [
+   "2297cf9d5e09a6f4d1c9f0020ec55150402d94da",
+   "visual"
+  ],
   "css/css-align/META.yml": [
    "bd26585d9e639e3133a650c26d3f3cb93579e4ae",
    "support"
@@ -481060,7 +482523,7 @@
    "testharness"
   ],
   "media-source/mediasource-duration-boundaryconditions.html": [
-   "b95e495cb1dd1a0f119257f35ab514239290e22c",
+   "e5be9f18fc4620250b4cb5ad97b2dce5ae091db1",
    "testharness"
   ],
   "media-source/mediasource-duration-expected.txt": [
@@ -521864,7 +523327,7 @@
    "support"
   ],
   "tools/wptrunner/requirements.txt": [
-   "328b43a0737b98503ae0b85dabb35b3a38d958e0",
+   "ccf55d2ca7f15f16d779971ec70c2070dcadf921",
    "support"
   ],
   "tools/wptrunner/requirements_android_webview.txt": [
@@ -522036,7 +523499,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/base.py": [
-   "3d8af4de4868e9da86b38d1c9d7b32ed0bfd265b",
+   "603c606e1cde1de879f4fcb2d82f98952de96ce7",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executorchrome.py": [
@@ -522352,7 +523815,7 @@
    "support"
   ],
   "tools/wptserve/wptserve/handlers.py": [
-   "efc1a16a93225d033574a22f7ba81e7d3d50bfd9",
+   "c18fa2d3792597a4c2a850dda233be56590c67ea",
    "support"
   ],
   "tools/wptserve/wptserve/logger.py": [
@@ -522360,7 +523823,7 @@
    "support"
   ],
   "tools/wptserve/wptserve/pipes.py": [
-   "e5d6e1c96db9c18020ed2b8aee23d41dd503509a",
+   "3500948fc8c296daa3baf6ba0965f8262ddf9fb3",
    "support"
   ],
   "tools/wptserve/wptserve/ranges.py": [
@@ -522528,7 +523991,7 @@
    "testharness"
   ],
   "trusted-types/TrustedTypePolicy-CSP.tentative.html": [
-   "0b57c3a908a9a6218d45c4692ee6fd901e49328b",
+   "8ae162558f41fe0b8015292fe8be84433469311e",
    "testharness"
   ],
   "trusted-types/TrustedTypePolicy-createXXX.tentative.html": [
@@ -522556,7 +524019,7 @@
    "testharness"
   ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html": [
-   "0b57c3a908a9a6218d45c4692ee6fd901e49328b",
+   "8ae162558f41fe0b8015292fe8be84433469311e",
    "testharness"
   ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html": [
@@ -527195,6 +528658,18 @@
    "bd053b389c904ed9b2587ad2817650d31fde7504",
    "testharness"
   ],
+  "wasm/jsapi/table/grow-reftypes.tentative.any-expected.txt": [
+   "8d14673e08c27f5f58fb1b12eca7d7cfc90eb83b",
+   "support"
+  ],
+  "wasm/jsapi/table/grow-reftypes.tentative.any.js": [
+   "807aea991bbc82eaa4702a12f5b1093baaef6d10",
+   "testharness"
+  ],
+  "wasm/jsapi/table/grow-reftypes.tentative.any.worker-expected.txt": [
+   "4354c6fb3539295d179cfb68fabf0ad87d22599f",
+   "support"
+  ],
   "wasm/jsapi/table/grow.any.js": [
    "558b49d1c7d3bcba9798370792fa4b6f83332105",
    "testharness"
@@ -531203,6 +532678,10 @@
    "4ceee0664cbfb800ac8b410c295dde4c7009b024",
    "support"
   ],
+  "webrtc-extensions/RTCRtpParameters-maxFramerate.html": [
+   "7067fbc79980743867c0c497c359e96c736ed400",
+   "testharness"
+  ],
   "webrtc-extensions/RTCRtpReceiver-playoutDelayHint.html": [
    "d8e47bda22174c63094c0918ccabed63513ea9fa",
    "testharness"
@@ -531512,11 +532991,11 @@
    "testharness"
   ],
   "webrtc/RTCPeerConnection-createDataChannel-expected.txt": [
-   "13176da50051bfb8a67a02ca1cd09fbdd2b8c291",
+   "ff3d593e5063d165f3cbb488cfa755adc2b06676",
    "support"
   ],
   "webrtc/RTCPeerConnection-createDataChannel.html": [
-   "943e5728775494b8c5be4c521ce9671cd4e1bc4e",
+   "350f71567820f80506fdc6d86452784521f0ff40",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-createOffer-expected.txt": [
@@ -531755,12 +533234,8 @@
    "e2c92bc1c0814f294e1b9153febc76886cf2fdb9",
    "testharness"
   ],
-  "webrtc/RTCRtpParameters-encodings-expected.txt": [
-   "51107eb10b616b062680202545ee34a10fb85d06",
-   "support"
-  ],
   "webrtc/RTCRtpParameters-encodings.html": [
-   "c9e14cb374b232b8f9df0472f082b16cc02f9f28",
+   "f71964429ae6bdb055157ead1af990e0e6716c6d",
    "testharness"
   ],
   "webrtc/RTCRtpParameters-headerExtensions.html": [
@@ -531768,7 +533243,7 @@
    "testharness"
   ],
   "webrtc/RTCRtpParameters-helper.js": [
-   "d70694930086590ab3616c1cde0fec419c1b63da",
+   "d61d8e14932963e9f17c47b99f2998d7ef0e9ff4",
    "support"
   ],
   "webrtc/RTCRtpParameters-rtcp.html": [
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js b/third_party/blink/web_tests/external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js
index 625f521..030297e 100644
--- a/third_party/blink/web_tests/external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js
+++ b/third_party/blink/web_tests/external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js
@@ -43,7 +43,13 @@
       { name: 'cookie-name1', matchType: 'equals', url: `${scope}/path1` },
     ];
     await registration.cookies.subscribe(subscriptions);
-    testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+    testCase.add_cleanup(() => {
+      // For non-ServiceWorker environments, registration.unregister() cleans up
+      // cookie subscriptions.
+      if (self.GLOBAL.isWorker()) {
+        return registration.cookies.unsubscribe(subscriptions);
+      }
+    });
   }
   {
     const subscriptions = [
@@ -51,7 +57,13 @@
       { name: 'cookie-prefix', matchType: 'starts-with' },
     ];
     await registration.cookies.subscribe(subscriptions);
-    testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+    testCase.add_cleanup(() => {
+      // For non-ServiceWorker environments, registration.unregister() cleans up
+      // cookie subscriptions.
+      if (self.GLOBAL.isWorker()) {
+        return registration.cookies.unsubscribe(subscriptions);
+      }
+    });
   }
 
   const subscriptions = await registration.cookies.getSubscriptions();
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_filter-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_filter-ref.html
new file mode 100644
index 0000000..ad51202
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_filter-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>mix-blend-mode with isolated groups API Test: Blending in a group with filter</title>
+    <link rel="author" title="windtale" href="mailto:windtale@163.com">
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/">
+    <link rel="help" href="">
+    <meta name="flags" content="dom">
+    <meta name="assert" content="Blending in a group with filter">
+    <style type="text/css">
+        #svgMain {
+            top: 100px;
+            left: 100px;
+            width: 200px;
+            height: 200px;
+			background: blue;
+        }
+    </style>
+
+</head>
+<body>
+
+<svg id="svgMain">
+	<rect id="redSquare" width="100" height="100" fill="red"></rect>
+</svg>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_filter.html b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_filter.html
new file mode 100644
index 0000000..77c0903
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_filter.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>mix-blend-mode with isolated groups API Test: Blending in a group with filter</title>
+    <link rel="author" title="windtale" href="mailto:windtale@163.com">
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/#mix-blend-mode">
+    <meta name="flags" content="svg">
+    <meta name="assert" content="Blending in a group with filter">
+    <style type="text/css">
+        #redSquare {
+			mix-blend-mode: lighten;
+        }
+        #svgMain {
+            top: 100px;
+            left: 100px;
+            width: 200px;
+            height: 200px;
+			background: blue;
+        }
+		#group{
+			filter: alpha(opacity=50,finishopacity=50,style=2);
+		}
+    </style>
+
+</head>
+<body>
+
+<svg id="svgMain">
+	<g id="group">
+		<rect id="redSquare" width="100" height="100" fill="red"></rect>
+	</g>
+</svg>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_opacity-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_opacity-ref.html
new file mode 100644
index 0000000..6f22489
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_opacity-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="author" title="windtale" href="mailto:windtale@163.com">
+    <style type="text/css">
+        #svgMain {
+            top: 100px;
+            left: 100px;
+            width: 200px;
+            height: 200px;
+			background: blue;
+        }
+    </style>
+
+</head>
+<body>
+
+<svg id="svgMain">
+	<rect id="redSquare" width="100" height="100" fill="red" opacity=".59"></rect>
+</svg>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_opacity.html b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_opacity.html
new file mode 100644
index 0000000..40b1044
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/Blending_in_a_group_with_opacity.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>mix-blend-mode with isolated groups API Test: Blending in a group with opacity</title>
+    <link rel="author" title="windtale" href="mailto:windtale@163.com">
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/#mix-blend-mode">
+    <meta name="flags" content="svg">
+    <meta name="assert" content="Blending in a group with opacity">
+    <style type="text/css">
+        #greenSquare {
+			mix-blend-mode: darken;
+        }
+        #redSquare {
+			mix-blend-mode: lighten;
+        }
+        #svgMain {
+            top: 100px;
+            left: 100px;
+            width: 200px;
+            height: 200px;
+			background: blue;
+        }
+    </style>
+
+</head>
+<body>
+
+<svg id="svgMain">
+	<g opacity="0.59">
+		<rect id="redSquare" width="100" height="100" fill="red"></rect>
+	</g>
+</svg>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/META.yml b/third_party/blink/web_tests/external/wpt/css/compositing/META.yml
new file mode 100644
index 0000000..73541d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/META.yml
@@ -0,0 +1,5 @@
+spec: https://drafts.fxtf.org/compositing/
+suggested_reviewers:
+  - chrishtr
+  - plinss
+  - nikosandronikos
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/Text_with_SVG_background-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/Text_with_SVG_background-ref.html
new file mode 100644
index 0000000..7ccc63a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/Text_with_SVG_background-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>CSS Reference File</title>
+    <link rel="author" title="windtale" href="mailto:windtale@163.com">
+    <style type="text/css">
+        #svgMain {
+            top: 100px;
+            left: 100px;
+            width: 200px;
+            height: 200px;
+			background: blue;
+        }
+    </style>
+
+</head>
+<body>
+
+<svg id="svgMain">
+	<text id="lblTxt" y="55">Text with SVG background</text>
+</svg>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/Text_with_SVG_background.html b/third_party/blink/web_tests/external/wpt/css/compositing/Text_with_SVG_background.html
new file mode 100644
index 0000000..5ee919b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/Text_with_SVG_background.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>mix-blend-mode with simple SVG graphical elements API Test: Text with SVG background</title>
+    <link rel="author" title="windtale" href="mailto:windtale@163.com">
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/#mix-blend-mode">
+    <meta name="flags" content="svg">
+    <meta name="assert" content="Text with SVG background">
+    <style type="text/css">
+        #lblTxt {
+			mix-blend-mode: darken;
+        }
+        #svgMain {
+            top: 100px;
+            left: 100px;
+            width: 200px;
+            height: 200px;
+			background: blue;
+        }
+    </style>
+
+</head>
+<body>
+
+<svg id="svgMain">
+	<text id="lblTxt" y="55">Text with SVG background</text>
+</svg>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/background-blend-mode-gradient-image.html b/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/background-blend-mode-gradient-image.html
new file mode 100644
index 0000000..3707748
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/background-blend-mode-gradient-image.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<title>CSS Test: blending between multiple backgrounds (gradient and image) using background-blend-mode</title>
+		<link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+		<link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+		<link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+		<link rel="help" href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">
+		<meta name="flags" content="">
+		<meta name="assert" content="Test checks that setting background-blend-mode property for an element with two background layers (a gradient and a png image) results in blending between the two layers.">
+		<link rel="match" href="reference/background-blend-mode-gradient-image-ref.html">
+		<style>
+			div {
+				margin: 5px;
+				width: 130px;
+				height: 130px;
+				background:  url('support/red.png') no-repeat 0 0 /100% 100%, linear-gradient(to right, lime 50%, blue 51%);
+				/*lime: rgb(0,255,0);
+				blue: rgb(0,0,255);*/
+				display: block;
+				float: left;
+				background-blend-mode: multiply, normal;
+			}
+		</style>
+	</head>
+	<body>
+		<p>Test passes if there is no red square on the screen. <br>
+		You should see a black square.</p>
+		<div></div>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/reference/background-blend-mode-gradient-image-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/reference/background-blend-mode-gradient-image-ref.html
new file mode 100644
index 0000000..4389960
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/reference/background-blend-mode-gradient-image-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<title>CSS Reftest Reference</title>
+		<link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+		<style>
+			div {
+				margin: 5px;
+				width: 130px;
+				height: 130px;
+				background: black;/*rgb(0,0,0);*/
+				display: block;
+				float: left;
+			}
+		</style>
+	</head>
+	<body>
+		<p>Test passes if there is no red square on the screen. <br>
+		You should see a black square.</p>
+		<div></div>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/support/red.png b/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/support/red.png
new file mode 100644
index 0000000..acc86d47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/background-blending/support/red.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/compositing_simple_div-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/compositing_simple_div-ref.html
new file mode 100644
index 0000000..2f46217
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/compositing_simple_div-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<head>
+<title>[simple<div>] blending reference</title>
+
+<link rel="author" title="Aili Wang"  href="mailto:augur521@hotmail.com">
+<link rel="help" href="http://www.w3.org/TR/compositing-1/">
+
+
+
+<style>
+  #b{background-color:rgb(0,255,0); width:100px;height:100px
+	  }
+
+</style>
+</head>
+<body>
+
+<div id="b"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/compositing_simple_div.html b/third_party/blink/web_tests/external/wpt/css/compositing/compositing_simple_div.html
new file mode 100644
index 0000000..44f138b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/compositing_simple_div.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<head>
+<title>[simple<div>] blending</title>
+
+<link rel="author" title="Aili Wang"  href="mailto:augur521@hotmail.com">
+<link rel="help" href="http://www.w3.org/TR/compositing-1/#mix-blend-mode">
+<link rel="match" href="compositing_simple_div-ref.html">
+
+
+<style>
+  #b{background-color:rgb(255,0,255); mix-blend-mode:difference; width:100px;height:100px
+	  }
+
+</style>
+</head>
+<body>
+
+<div id="b"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/inheritance.html b/third_party/blink/web_tests/external/wpt/css/compositing/inheritance.html
new file mode 100644
index 0000000..8bd08672
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/inheritance.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Inheritance of Compositing and Blending properties</title>
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#property-index">
+<meta name="assert" content="Properties do not inherit.">
+<meta name="assert" content="Properties have initial values according to the spec.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+</head>
+<body>
+<div id="container">
+  <div id="target"></div>
+</div>
+<script>
+assert_not_inherited('background-blend-mode', 'normal', 'multiply');
+assert_not_inherited('isolation', 'auto', 'isolate');
+assert_not_inherited('mix-blend-mode', 'normal', 'overlay');
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/isolation/blend-isolation.html b/third_party/blink/web_tests/external/wpt/css/compositing/isolation/blend-isolation.html
new file mode 100644
index 0000000..d1aa412
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/isolation/blend-isolation.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>CSS Compositing and Blending: isolation applied to a group containing blending</title>
+    <link rel="author" title="cabanier" href="mailto:cabanier@adobe.com">
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/#isolation">
+    <meta name="assert" content="Isolation on a group with blending">
+<style>
+.a {
+  background-color: rgb(0,255,0);
+}
+#b {
+  width: 200px;
+  height: 210px;
+}
+.c {
+  width: 100px;
+  height: 100px;
+  mix-blend-mode: difference;
+}
+#d {
+  isolation: isolate;
+}
+</style>
+<p>Test passes if you see a solid green rectangle</p>
+<div id="b" class="a">
+  <div id="d">
+    <div class="a c"></div>
+  </div>
+</div>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/line-with-svg-background-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/line-with-svg-background-ref.html
new file mode 100644
index 0000000..0d992bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/line-with-svg-background-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>CSS mix-blend-mode API Test</title>
+    <link rel="author" title="dmyang" href="mailto:yangdemo@gmail.com">
+    <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com"><!-- 11-09-2013 @TestTWF Shenzhen -->
+    <meta name="flags" content="svg">
+    <style type="text/css">
+      .svg {
+        background-color: #888;
+        width: 500px;
+        display: block;
+        height: 60px;
+        margin: 10px auto;
+      }
+      .svg text {
+        font-size: 25px;
+        line-height: 50px;
+        mix-blend-mode: normal;
+      }
+    </style>
+</head>
+<body>
+    <svg class="svg">
+        <line class="multiply" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="screen" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="overlay" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="darken" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="lighten" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="color-dodge" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="hard-light" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="soft-light" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="difference" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="exclusion" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/line-with-svg-background.html b/third_party/blink/web_tests/external/wpt/css/compositing/line-with-svg-background.html
new file mode 100644
index 0000000..194096e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/line-with-svg-background.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>CSS mix-blend-mode API Test</title>
+    <link rel="author" title="dmyang" href="mailto:yangdemo@gmail.com">
+    <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com"><!-- 11-09-2013 @TestTWF Shenzhen -->
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/#mix-blend-mode">
+    <meta name="flags" content="svg">
+    <style type="text/css">
+      .svg {
+        background-color: #888;
+        width: 500px;
+        display: block;
+        height: 60px;
+        margin: 10px auto;
+      }
+      .svg text {
+        font-size: 25px;
+        line-height: 50px;
+      }
+      .multiply {mix-blend-mode: multiply;}
+      .screen {mix-blend-mode: screen;}
+      .overlay {mix-blend-mode: overlay;}
+      .darken {mix-blend-mode: darken;}
+      .color-dodge {mix-blend-mode: color-dodge;}
+      .color-burn {mix-blend-mode: color-burn;}
+      .hard-light {mix-blend-mode: hard-light;}
+      .soft-light {mix-blend-mode: soft-light;}
+      .difference {mix-blend-mode: difference;}
+      .exclusion {mix-blend-mode: exclusion;}
+    </style>
+</head>
+<body>
+    <svg class="svg">
+        <line class="multiply" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="screen" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="overlay" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="darken" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="lighten" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="color-dodge" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="hard-light" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="soft-light" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="difference" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+    <svg class="svg">
+        <line class="exclusion" x1="10" y1="30" x2="300" y2="30" style="stroke:blue; stroke-width:20;" />
+    </svg>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-animation.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-animation.html
new file mode 100644
index 0000000..e5ce4684
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-animation.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with animation</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode and animation blends with the parent element.">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-animation-ref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+
+            @keyframes changeOpacity
+            {
+                from { opacity: 1; }
+                to { opacity: 0.1; }
+            }
+
+            #blender {
+                background: #F00;
+                mix-blend-mode: difference;
+                animation: changeOpacity 1s;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a fading green box.</p>
+        <div><div id="blender"></div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html
new file mode 100644
index 0000000..765467c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode having a child blends with the parent element.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/green-square.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+            }
+            .parent {
+                background: #FF0;
+            }
+            .blender {
+                background: #345;
+                mix-blend-mode: difference;
+            }
+            .child {
+                background: #F00;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green square on the screen.</p>
+        <div class="parent">
+            <div class="blender">
+                <div class="child"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html
new file mode 100644
index 0000000..482f91d1a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element and its child having overflow:hidden and border-radius</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element having mix-blend-mode, overflow:hidden and border-radius blends correctly with its parent element.">
+        <link rel="match" href="reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 150px;
+                height: 150px;
+                position: relative;
+                z-index: 1;
+            }
+            .blended {
+                width: 150px;
+                height: 150px;
+                overflow: hidden;
+                border-radius: 2em 2em;
+                mix-blend-mode: multiply;
+            }
+            .childOfBlended {
+                background: yellow;/*rgb(255,255,0);*/
+                width: 150px;
+                height: 150px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>The test passes if you see a lime rectangle with aqua rounded corners.</p>
+        <div class="parent">
+            <div class="blended">
+                <div class="childOfBlended"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-scroll.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-scroll.html
new file mode 100644
index 0000000..238e6e0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-overflow-scroll.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element and its child having overflow:scroll</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode and overflow:scroll blends with its parent element">
+        <link rel="match" href="reference/mix-blend-mode-blended-element-overflow-scroll-ref.html">
+        <style type="text/css">
+            .parent {
+                background: yellow;/*rgb(0,255,255);*/
+                width: 100px;
+                height: 100px;
+                position: relative;
+                z-index: 1;
+                overflow: hidden;
+            }
+            .blended {
+                background: red;/*rgb(255,0,0);*/
+                width: 150px;
+                height: 150px;
+                overflow:scroll;
+                mix-blend-mode: difference;
+            }
+            .scrollingContent {
+                width: 200px;
+                height: 200px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a lime rectangle.</p>
+        <div class="parent">
+            <div class="blended">
+                <div class="scrollingContent"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html
new file mode 100644
index 0000000..3d980d2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element with transparent pixels and a child element</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that blending is performed with a parent
+            that creates a stacking context, but not with any of its underlying content.
+            The element, including its children, must blend with the parent as a whole.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html">
+        <style type="text/css">
+            .parent {
+                position: absolute;
+                z-index: 1;
+                background: #00F;
+                width: 100px;
+                height: 100px;
+                margin: 10px;
+            }
+            .blender {
+                width: 120px;
+                height: 120px;
+                background: transparent;
+                mix-blend-mode: difference;
+                margin: -10px;
+            }
+            .blendedChild {
+                width: 120px;
+                height: 120px;
+                background: #0FF;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a lime square with aqua borders.<br>
+            If the borders are red, the test fails.</p>
+        <div class="parent">
+            <div class="blender">
+                <div class="blendedChild"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html
new file mode 100644
index 0000000..acd5a40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element and its child with 3D transform </title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that the element with mix-blend-mode and 3D transform blends correctly with its parent">
+        <link rel="match" href="reference/mix-blend-mode-blended-with-3D-transform-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                position:relative;
+                z-index: 1;
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                transform:rotateX(20deg);
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a fuchsia square overlapping an aqua square. <br>
+            The overlapping area should be yellow. </p>
+        <div class="parent">
+            <div class="blended">
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html
new file mode 100644
index 0000000..9c01694d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element and its child having mix-blend-mode and perspective</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element having mix-blend-mode and perspective blends correctly with its parent">
+        <link rel="match" href="reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html">
+        <style type="text/css">
+            div {
+                height: 150px;
+                width: 150px;
+            }
+            .container {
+                position: relative;
+                z-index: 1;
+                background-color: lime;/*rgb(0,255,0);*/
+            }
+            .transformed {
+                transform: perspective(600px) translateZ(-200px);
+                background-color: red;/*rgb(255,0,0);*/
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a yellow square inside a green container.</p>
+        <div class="container">
+          <div class="transformed">
+          </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html
new file mode 100644
index 0000000..8f95c87
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element and its sibling</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends with a sibling element">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/green-square.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+            }
+            .container {
+                position: fixed;
+                z-index: 0;
+                background: #FFF;
+            }
+            .blender {
+                background: #FF0;
+                mix-blend-mode: difference;
+            }
+            .sibling {
+                margin-top: -100px;
+                background: #F00;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green square on the screen.</p>
+        <div class="container">
+            <div class="blender"></div>
+            <div class="sibling"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-border-image.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-border-image.html
new file mode 100644
index 0000000..7309e37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-border-image.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with border image</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks if mix-blend-mode is applied for an element with border-image.">
+        <meta name="flags" content="svg">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-border-image-ref.html">
+        <style type="text/css">
+            .parent {
+                width: 120px;
+                height: 120px;
+                background: #FF0;
+                position: fixed;
+                z-index: 1;
+            }
+
+            .child {
+                width: 100px;
+                height: 100px;
+                background: #F00;
+                mix-blend-mode: difference;
+                border-width: 10px;
+                border-image: url('support/red_square.svg') 10 repeat;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the div is displayed with red. </p>
+        <div class="parent"><div class="child"></div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html
new file mode 100644
index 0000000..c593973b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-both-parent-and-blended-with-3D-transform.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element and its child (both with 3D transform) </title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that the element with mix-blend-mode blends with the parent element (both with 3D transform)">
+        <link rel="match" href="reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                transform:rotateX(20deg);
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                transform:rotateX(20deg);
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a fuchsia square overlapping an aqua square. <br>
+            The overlapping area should be yellow. </p>
+        <div class="parent">
+            <div class="blended">
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html
new file mode 100644
index 0000000..3a0d6b18
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Canvas with mix-blend-mode blends with the parent element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that a canvas element having mix-blend-mode applied blends with the content of the parent element.">
+        <meta name="flags" content="dom"/>
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-canvas-parent-ref.html">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+        <div style="width: 100px; height: 100px; background: #FF0;">
+            <canvas id="cvs" width="100" height="100" style="mix-blend-mode: difference;"></canvas>
+            <script type="text/javascript">
+                var cvs = document.getElementById("cvs");
+                var ctx = cvs.getContext("2d");
+                ctx.fillStyle = "#F00";
+                ctx.fillRect(0, 0, 100, 100);
+            </script>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html
new file mode 100644
index 0000000..6d4bdc6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Canvas with mix-blend-mode blends with sibling element</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that a canvas element having mix-blend-mode applied blends with a sibling element.">
+        <meta name="flags" content="dom"/>
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-canvas-sibling-ref.html">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+        <div style="width: 100px; height: 100px; background: #FF0;"></div>
+        <canvas id="cvs" width="100" height="100" style="mix-blend-mode: difference; position: relative; top: -100px;"></canvas>
+        <script type="text/javascript">
+            var canvas = document.getElementById("cvs");
+            var context = canvas.getContext("2d");
+
+            context.fillStyle = "#F00";
+            context.fillRect(0, 0, 100, 100);
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context-expected.txt b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context-expected.txt
new file mode 100644
index 0000000..9a23e6b8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL CSS Test: an element with mix-blend-mode other than normal creates a stacking context assert_true: expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html
new file mode 100644
index 0000000..3351f2f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: an element with mix-blend-mode other than normal creates a stacking context</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="dom">
+        <meta name="assert" content="Test checks that applying a blendmode other than normal
+        to the element must establish a new stacking context.">
+        <script src="/resources/testharness.js"></script>
+        <script src="/resources/testharnessreport.js"></script>
+    </head>
+    <body>
+        <div id="blender"></div>
+        <script type="text/javascript">
+            var blendModes = ["multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn",
+                "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
+
+            test(function() {
+                var blender = document.getElementById("blender");
+                for (var i = 0; i < blendModes.length; ++i) {
+                    blender.style.mixBlendMode = blendModes[i];
+                    var blenderStyle = window.getComputedStyle(blender);
+                    assert_true(blenderStyle.zIndex !== "auto");
+                }
+            });
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-filter.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-filter.html
new file mode 100644
index 0000000..d95866f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-filter.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with filter.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element having a filter effect and mix-blend-mode blends with its parent element.">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-filter-ref.html">
+    </head>
+    <style type="text/css">
+        div {
+            width: 100px;
+            height: 100px;
+        }
+    </style>
+    <body>
+        <p>Test passes if you can see a green blurred square. <br>
+        The test fails if the square is drawn with red. </p>
+
+        <div style="background: #FF0;">
+            <div style="background: #F00; mix-blend-mode: difference; filter: opacity(0.9);"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html
new file mode 100644
index 0000000..69c8cb8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-parent.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: an iframe element with mix-blend-mode should blend with its parent element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an iframe element blends with its parent element.">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-iframe-parent-ref.html">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+
+        <div style="width: 100px; height: 100px; background: #FF0;">
+            <iframe src="support/red_square.html" frameborder="0" style="margin-top: -8px; margin-left: -8px; mix-blend-mode: difference;"></iframe>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html
new file mode 100644
index 0000000..6f82c91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-iframe-sibling.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: an iframe element with mix-blend-mode should blend with a sibling element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an iframe element blends with a sibling element.">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-iframe-sibling-ref.html">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+
+        <div style="width: 100px; height: 100px; background: #FF0;"></div>
+        <iframe src="support/red_square.html" frameborder="0" style="margin-top: -108px; margin-left: -8px; mix-blend-mode: difference;"></iframe>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-image.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-image.html
new file mode 100644
index 0000000..bd0ef8e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-image.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Image element with mix-blend-mode.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that mix-blend-mode is applied to an img element.">
+        <meta name="flags" content="image">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="mismatch" href="reference/mix-blend-mode-image-notref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 75px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle.</p>
+        <div>
+            <img src="support/red.png" style="max-width:100%; max-height:100%; mix-blend-mode: difference;">
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html
new file mode 100644
index 0000000..875b64e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element and its child having overflow:hidden and border-radius, when the blending element overlaps a sibling element</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that the element with mix-blend-mode, overflow:hidden and border-radius blends correctly with its parent, as well as with the sibling element where they overlap.">
+        <link rel="match" href="reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 150px;
+                height: 150px;
+                position: relative;
+                z-index: 1;
+            }
+            .blended {
+                background: fuchsia;
+                width: 150px;
+                height: 75px;
+                margin-top: -75px;
+                mix-blend-mode: difference;
+            }
+            .siblingOfBlended {
+                background: yellow;/*rgb(255,255,0);*/
+                width: 150px;
+                height: 150px;
+                overflow: hidden;
+                border-radius: 2em 2em;
+            }
+        </style>
+    </head>
+    <body>
+        <p> This test passes if you can see a rectangle split in two pieces: the top half is yellow with aqua rounded borders and the bottom half is aqua with yellow borders.</p>
+        <div class="parent">
+            <div class="siblingOfBlended"></div>
+            <div class="blended">
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-mask.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-mask.html
new file mode 100644
index 0000000..8bfeb08
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-mask.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with masking.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element having mask and mix-blend-mode blends with its parent element.">
+        <meta name="flags" content="svg">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-mask-ref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green circle. <br>
+        The test fails if the circle is drawn with red. </p>
+
+        <div style="background: #FF0">
+            <div style="background: #F00; mix-blend-mode: difference; mask-image: url('support/red_circle.svg');"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html
new file mode 100644
index 0000000..418cde3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blend an element having an overflowing child.</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that a group consisting of an element
+            with mix-blend-mode and an overflowing child blends as a whole with the
+            underlying stacking context.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html">
+        <style type="text/css">
+            .parent {
+                position: absolute;
+                z-index: 1;
+                background: #00F;
+                width: 100px;
+                height: 100px;
+                margin: 10px;
+            }
+            .blender {
+                background: #777;
+                width: 120px;
+                height: 120px;
+                margin: -10px;
+                mix-blend-mode: difference;
+            }
+            .child {
+                background: #0FF;
+                width: 120px;
+                height: 120px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a lime square with aqua borders.<br>
+            If the borders are red, the test fails.</p>
+        <div class="parent">
+            <div class="blender">
+                <div class="child"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child.html
new file mode 100644
index 0000000..47042b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: blended element overflows parent</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an overflowing element with mix-blend-mode blends with the parent element.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/mix-blend-mode-overflowing-child-ref.html">
+        <style type="text/css">
+            body {
+                background: lightgray;
+            }
+            .container {
+                position: absolute;
+                z-index: 1;
+                width: 100px;
+                height: 100px;
+                background: #0F0;
+            }
+            .blender {
+                background: #0F0;
+                margin: 50px;
+                width: 100px;
+                height: 100px;
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see two green squares and a black square as their intersection,<br>
+            drawn over a light gray background.</p>
+        <div class="container">
+            <div class="blender"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html
new file mode 100644
index 0000000..a4f5c226
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph-background-image.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Paragraph element with mix-blend-mode over parent with background image.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that test a paragraph element blends with the parent element having background image.">
+        <meta name="flags" content="svg">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-paragraph-background-image-ref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background-image: url('support/yellow_square.svg');
+            }
+
+            #blender {
+                mix-blend-mode: difference;
+                color: #F00;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if the paragraph text is drawn with green.</p>
+        <div>
+            <p id="blender">This should be drawn with green.</p>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html
new file mode 100644
index 0000000..4b61d246
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Paragraph element with mix-blend-mode.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that test a paragraph element blends with the parent element.">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-paragraph-ref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+
+            #blender {
+                mix-blend-mode: difference;
+                color: #F00;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if the paragraph text is drawn with green.</p>
+        <div>
+            <p id="blender">This should be drawn with green.</p>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html
new file mode 100644
index 0000000..0ef8ae3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element having overflow:hidden and border-radius and its child</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element having mix-blend-mode blends with the parent element having overflow:hidden and border-radius">
+        <link rel="match" href="reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html">
+        <style type="text/css">
+            .parent {
+                background: red;
+                width: 140px;
+                height: 140px;
+                position: relative;
+                z-index: 1;
+                overflow: hidden;
+                border-radius: 1em 5em;
+            }
+            .blended {
+                background: yellow;
+                width: 200px;
+                height: 200px;
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p> Test passes if you see a lime square with rounded corners.</p>
+        <div class="parent">
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html
new file mode 100644
index 0000000..59989bc9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element having overflow:scroll and its child having position: fixed</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends with the parent element with overflow:scroll">
+        <link rel="match" href="reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 150px;
+                height: 150px;
+                position: relative;
+                z-index: 1;
+                overflow:scroll;
+            }
+
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                width: 100px;
+                height: 100px;
+                mix-blend-mode: multiply;
+                position: fixed;
+            }
+
+            .scrollableContent {
+                width: 200px;
+                height: 200px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a blue square inside an aqua container. <br>
+        The aqua container should have scrollbars on the left and bottom.</p>
+        <div class="parent">
+            <div class="blended"></div>
+            <div class="scrollableContent"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html
new file mode 100644
index 0000000..cd7cfce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element with overflow:scroll and its child</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends its parent having overflow:scroll">
+        <link rel="match" href="reference/mix-blend-mode-parent-element-overflow-scroll-ref.html">
+        <style type="text/css">
+            .parent {
+                background: yellow;
+                width: 140px;
+                height: 140px;
+                position: relative;
+                z-index: 1;
+                overflow:scroll;
+            }
+            .blended {
+                background: red;
+                width: 200px;
+                height: 200px;
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a scrollable lime rectangle.</p>
+        <div class="parent">
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html
new file mode 100644
index 0000000..cd5f0e46
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element having 3D transitions and its child</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="dom"/>
+        <meta name="assert" content="Test checks that an element having mix-blend-mode blends with its parent element having 3D transform and transition">
+        <style type="text/css">
+            .parent {
+                background: yellow;
+                width: 140px;
+                height: 140px;
+                position:relative;
+                z-index: 1;
+                margin: 10px;
+                float: left;
+                transition: transform 2s;
+
+            }
+            .rotated {
+                transform: rotateX(60deg) rotateZ(10deg) rotateY(180deg);
+            }
+            .blended {
+                background: red;
+                width: 140px;
+                height: 140px;
+                mix-blend-mode: difference;
+            }
+            .ref {
+                background: none;
+            }
+            .ref .blended {
+                background: lime;
+                mix-blend-mode: normal;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see two rotating lime rectangles, both identical.</p>
+        <div>
+            <div class="parent" id="parent">
+                <div class="blended"></div>
+            </div>
+            <div class="parent ref" id="parentref">
+                <div class="blended"></div>
+            </div>
+        </div>
+        <script type="text/javascript">
+            var parent = document.getElementById('parent');
+            var parentref = document.getElementById('parentref');
+             function rotate (el, cl) {
+                if (el.className === cl + ' rotated')
+                    el.className = cl;
+                else
+                    el.className = cl + ' rotated';
+            }
+            setTimeout(function () { rotate(parent, 'parent'); rotate(parentref, 'parent ref'); }, 0);
+            setInterval(function () { rotate(parent, 'parent'); rotate(parentref, 'parent ref'); }, 2000);
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html
new file mode 100644
index 0000000..a6864a9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element with 3D transform and its child</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends with its parent having 3D transform">
+        <link rel="match" href="reference/mix-blend-mode-parent-with-3D-transform-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                transform:rotateX(20deg);
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a fuchsia square overlapping an aqua square. <br>
+            The overlapping area should be yellow. </p>
+        <div class="parent">
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html
new file mode 100644
index 0000000..9fc5cad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending with parent having border radius</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends
+            with the parent element having border-radius.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/mix-blend-mode-parent-with-border-radius-ref.html">
+        <style type="text/css">
+            body {
+                background: lightgray;
+            }
+            .parent {
+                position: absolute;
+                z-index: 1;
+                width: 100px;
+                height: 100px;
+                background: #F00;
+                border-radius: 50px;
+            }
+            .blended {
+                background: #FF0;
+                width: 100px;
+                height: 100px;
+                mix-blend-mode: difference;
+            }
+
+        </style>
+    </head>
+    <body>
+        <p>Test passes if a green circle is drawn on top of a yellow square, over a lightgray background.</p>
+        <div class="parent">
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html
new file mode 100644
index 0000000..06a8c25c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: check that the stacking context created by the parent element isolates blending.</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode only blends with the contents
+        of a parent that creates a stacking context.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/mix-blend-mode-parent-with-text-ref.html">
+        <style type="text/css">
+            .parent {
+                position: absolute;
+                z-index: 1;
+                width: 100px;
+                height: 100px;
+            }
+            .blender {
+                background: #FF0;
+                width: 100px;
+                height: 100px;
+                margin-top: -60px;
+                mix-blend-mode: difference;
+            }
+            .text {
+                height: 60px;
+                color: #F00;
+            }
+            body {
+                background: lightgray;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if a yellow square with green text is drawn over a lightgray background.</p>
+        <div class="parent">
+            <div class="text">Red text that becomes green after blending </div>
+            <div class="blender"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html
new file mode 100644
index 0000000..25bb5aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: parsing mix-blend-mode property</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="dom">
+        <meta name="assert" content="Test checks that the value specified for mix-blend-mode property is correctly parsed">
+        <script src="/resources/testharness.js"></script>
+        <script src="/resources/testharnessreport.js"></script>
+    </head>
+    <body>
+        <div id="log"></div>
+        <script type="text/javascript">
+            function testParse(declaration) {
+                var div = document.createElement("div");
+                div.setAttribute("style", declaration);
+                return div.style.mixBlendMode;
+            }
+
+            var blendModes = ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn",
+                      "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
+
+            for (var i = 0; i < blendModes.length; i++) {
+                test(function() {assert_equals(testParse("mix-blend-mode: " + blendModes[i]), blendModes[i] )}, "Mix-blend-mode " + blendModes[i]);
+            };
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-script.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-script.html
new file mode 100644
index 0000000..1268a8d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-script.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Set mix-blend-mode from script.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that mix-blend-mode is applied when set from script.">
+        <meta name="flags" content="dom"/>
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-script-ref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green box.</p>
+        <div><div id="blender" style="background: #F00;"></div></div>
+        <script type="text/javascript">
+            document.getElementById("blender").style.mixBlendMode = "difference";
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html
new file mode 100644
index 0000000..798b1e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element and its sibling having 3D transform and transition</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="dom"/>
+        <meta name="assert" content="Test checks that an element having mix-blend-mode blends with an overlapping sibling element having 3D transform and transition">
+        <style type="text/css">
+            .parent {
+                position: relative;
+                z-index: 1;
+                float: left;
+                margin-left: 10px;
+            }
+            .blended {
+                background: blue;
+                margin-top: -120px;
+                width: 140px;
+                position: relative;
+                z-index: 1;
+                height: 140px;
+                mix-blend-mode: difference;
+            }
+            .siblingOfBlended {
+                background: aqua;
+                width: 100px;
+                height: 100px;
+                margin-top: 20px;
+                margin-left: 20px;
+                transition: transform 2s;
+            }
+            .rotated {
+                transform: rotateX(60deg) rotateY(10deg) rotateZ(90deg);
+            }
+
+            .ref .blended {
+                mix-blend-mode: normal;
+            }
+            .ref .siblingOfBlended {
+                z-index: 2;
+                position: relative;
+                background: lime;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see two blue rectangles having inside a lime rotating rectangle each.<br>
+        Lime rectangles should look identical when while rotating.</p>
+        <div>
+            <div class="parent">
+                <div class="siblingOfBlended" id="sibling"></div>
+                <div class="blended"></div>
+            </div>
+            <div class="parent ref">
+                <div class="siblingOfBlended ref" id="siblingref"></div>
+                <div class="blended"></div>
+            </div>
+        </div>
+        <script type="text/javascript">
+            var sibling = document.getElementById('sibling');
+            var siblingref = document.getElementById('siblingref');
+            function rotate (el, cl) {
+                if (el.className === cl + ' rotated')
+                    el.className = cl;
+                else
+                    el.className = cl + ' rotated';
+            }
+            setTimeout(function () { rotate(sibling, 'siblingOfBlended'); rotate(siblingref, 'siblingOfBlended ref'); }, 0);
+            setInterval(function () { rotate(sibling, 'siblingOfBlended'); rotate(siblingref, 'siblingOfBlended ref'); }, 2000);
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html
new file mode 100644
index 0000000..03c2f36e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: blending between an element and its sibling element having 3D transform</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends with both parent element and with sibling element having 3D transform">
+        <link rel="match" href="reference/mix-blend-mode-sibling-with-3D-transform-ref.html">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                position: relative;
+                z-index: 1;
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: -200px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                mix-blend-mode: difference;
+            }
+            .siblingOfBlended {
+                background: red;/*rgb(255,0,0);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                transform: perspective(600px) translateZ(-200px);
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see three overlapping squares, from back to front, having the following colors: aqua, fuchsia and blue. <br>
+        The intersection area between aqua and fuchsia squares, which is not overlapped by the blue square, should be yellow.</p>
+        <div class="parent">
+            <div class="siblingOfBlended"></div>
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-simple.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-simple.html
new file mode 100644
index 0000000..367238c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-simple.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: An element with mix-blend-mode blends with its parent element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an element with mix-blend-mode blends with its parent element.">
+        <meta name="flags" content=""/>
+        <link rel="match" href="reference/green-square.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+            }
+            .parent {
+                background: #FF0;
+            }
+            .child {
+                background: #F00;
+                mix-blend-mode: difference;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green square on the screen.</p>
+        <div class="parent">
+            <div class="child"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html
new file mode 100644
index 0000000..6c11653c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-001.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element and its child</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that the element with mix-blend-mode and opacity blends with the parent element">
+        <link rel="match" href="reference/mix-blend-mode-stacking-context-001-ref.html">
+        <style>
+            .simple{
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                display:inline-block;
+            }
+            .mixed {
+                opacity: 0.9;
+                background: red;/*rgb(255,0,0);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 100px;
+                height: 100px;
+                mix-blend-mode: multiply;
+                }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a black rectangle with large aqua borders.
+        You should not see a red rectangle on the page. </p>
+        <div class="simple">
+            <div class="mixed"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html
new file mode 100644
index 0000000..255b9095
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: stacking context creates isolated group</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that properties that cause the creation of stacking context cause a group to be isolated">
+        <link rel="match" href="reference/mix-blend-mode-stacking-context-creates-isolation-ref.html">
+        <style>
+            .container{
+                margin: 30px;
+                width: 130px;
+                height: 130px;
+                float: left;
+                background: yellow;/*rgb(255,255,0);*/
+            }
+            .simple{
+                background: lime;/* rgb(0,255,0);*/
+                width: 100px;
+                height: 100px;
+                position: fixed;
+            }
+            .mixed {
+                background: red;/*rgb(255,0,0);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 100px;
+                height: 100px;
+                mix-blend-mode: multiply;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if there is no complete red square on the screen. <br>
+        You should see two overlapping lime and red squares on top of a yellow one. <br>
+        At the intersection of the lime and red squares, a black square will be created. </p>
+        <div class="container">
+            <div class="simple">
+                <div class="mixed"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-svg.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-svg.html
new file mode 100644
index 0000000..c950e54
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-svg.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: SVG element is blended.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that an SVG element blends with the parent container.">
+        <meta name="flags" content="svg">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="match" href="reference/mix-blend-mode-svg-ref.html">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green box.</p>
+        <div>
+            <svg width="100" height="100" style="mix-blend-mode: difference;">
+              <rect width="100" height="100" style="fill: #F00;">
+            </svg>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html
new file mode 100644
index 0000000..fa9fe64
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode blending between a video element and an overlapping sibling</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that a video element blends with an overlapping sibling element with some text inside">
+        <meta name="flags" content=""/>
+        <link rel="mismatch" href="reference/mix-blend-mode-video-sibling-notref.html">
+        <style type="text/css">
+            div {
+                mix-blend-mode: difference;
+                margin-top: -361px;
+                background-color: #FF0;
+                width: 300px;
+                height: 350px;
+                color: #F00;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see text and a circle moving from the top to the bottom of the page,<br>
+        both drawn with green, over a blue background.</p>
+        <video autoplay>
+            <source type="video/mp4" src="support/red_circle.mp4">
+       </video>
+       <div>Some text inside the div.</div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video.html
new file mode 100644
index 0000000..298ba990
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-video.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Video element with mix-blend-mode.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="assert" content="Test checks that mix-blend-mode is applied to a video element.">
+        <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+        <link rel="reviewer" title="Mirela Budaes" href="mailto:mbudaes@adobe.com">
+        <link rel="mismatch" href="reference/mix-blend-mode-video-notref.html">
+        <style type="text/css">
+            div {
+                width: 480px;
+                height: 352px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green circle over a blue background.</p>
+        <div>
+            <video autoplay style="mix-blend-mode: difference">
+                <source src="support/red_circle.mp4" type="video/mp4">
+            </video>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html
new file mode 100644
index 0000000..6e351c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-with-transform-and-preserve-3D.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode between an element and its child having 3D transform and preserve 3D</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+        <meta name="flags" content="">
+        <meta name="assert" content="Test checks that mix-blend-mode overrides the behavior of transform-style:preserve-3d">
+        <link rel="match" href="reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html">
+        <style type="text/css">
+            div {
+                height: 150px;
+                width: 150px;
+            }
+            .container {
+                position: relative;
+                z-index: 1;
+                background-color: lime;/*rgb(0,255,0);*/
+            }
+            .transformed {
+                transform-style: preserve-3d;
+                transform: rotateY(50deg);
+                background-color: aqua;/*rgb(0,255,255);*/
+                mix-blend-mode: difference;
+            }
+            .child {
+                transform-origin: top left;
+                transform: rotateX(40deg);
+                background-color: red;/*rgb(255,0,0);*/
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see 2 small rectangles (yellow and blue) drawn inside a lime container.<br>
+            The edges for all the rectangles should be either horizontal, or vertical (not skewed).</p>
+        <div class="container">
+          <div class="transformed">
+              <div class="child"></div>
+          </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/green-square.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/green-square.html
new file mode 100644
index 0000000..bfc4f71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/green-square.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                background: #0F0;
+                width: 100px;
+                height: 100px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green square on the screen.</p>
+        <div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-animation-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-animation-ref.html
new file mode 100644
index 0000000..0e94efa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-animation-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with animation</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+
+            @keyframes changeOpacity
+            {
+                from { opacity: 1; }
+                to { opacity: 0.1; }
+            }
+
+            #blender {
+                background: #0F0;
+                animation: changeOpacity 1s;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a fading green box.</p>
+        <div><div id="blender"></div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html
new file mode 100644
index 0000000..32e73e7f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-hidden-and-border-radius-ref.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 150px;
+                height: 150px;
+                position: relative;
+                z-index: 1;
+            }
+            .blended {
+                width: 150px;
+                height: 150px;
+                overflow: hidden;
+                border-radius: 2em 2em;
+            }
+            .childOfBlended {
+                background: lime;/*rgb(0,255,0);*/
+                width: 150px;
+                height: 150px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>The test passes if you see a lime rectangle with aqua rounded corners.</p>
+        <div class="parent">
+            <div class="blended">
+                <div class="childOfBlended">
+                </div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-scroll-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-scroll-ref.html
new file mode 100644
index 0000000..12bc9790
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-overflow-scroll-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background-color: lime;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a lime rectangle.</p>
+        <div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html
new file mode 100644
index 0000000..ee77433
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-element-with-transparent-pixels-ref.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <style type="text/css">
+            .parent {
+                position: absolute;
+                z-index: 1;
+                background: #0FF;
+                width: 120px;
+                height: 120px;
+            }
+            .child {
+                background: #0F0;
+                width: 100px;
+                height: 100px;
+                margin: 10px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a lime square with aqua borders.<br>
+            If the borders are red, the test fails.</p>
+        <div class="parent">
+            <div class="child"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-3D-transform-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-3D-transform-ref.html
new file mode 100644
index 0000000..83ee7de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-3D-transform-ref.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                position:relative;
+                z-index: 1;
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                transform:rotateX(20deg);
+            }
+            .childOfBlended {
+                background: yellow;/*rgb(255,255,0);*/
+                width: 120px;
+                height: 122px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a fuchsia square overlapping an aqua square. <br>
+            The overlapping area should be yellow. </p>
+        <div class="parent">
+            <div class="blended">
+                <div class="childOfBlended"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html
new file mode 100644
index 0000000..3219d0f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-blended-with-transform-and-perspective-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                 height: 150px;
+                 width: 150px;
+            }
+            .container {
+                position: relative;
+                z-index: 1;
+                background-color: lime;/*rgb(0,255,0);*/
+            }
+            .transformed {
+                transform: perspective(600px) translateZ(-200px);
+                background-color: yellow;/*rgb(255,255,0);*/
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a yellow square inside a green container.</p>
+        <div class="container">
+          <div class="transformed">
+          </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-border-image-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-border-image-ref.html
new file mode 100644
index 0000000..9f125877
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-border-image-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with border image</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style>
+            div {
+                width: 120px;
+                height: 120px;
+                background: #0F0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the div is displayed with red. </p>
+        <div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html
new file mode 100644
index 0000000..af2827b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-both-parent-and-blended-with-3D-transform-ref.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                transform:rotateX(20deg);
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                transform:rotateX(20deg);
+            }
+            .childOfBlended {
+                background: yellow;/*rgb(255,255,0);*/
+                width: 120px;
+                height: 122px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a fuchsia square overlapping an aqua square. <br>
+            The overlapping area should be yellow. </p>
+        <div class="parent">
+            <div class="blended">
+                <div class="childOfBlended"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-parent-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-parent-ref.html
new file mode 100644
index 0000000..44a9f48
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-parent-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Canvas with mix-blend-mode blends with the parent element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+        <div style="width: 100px; height: 100px; background: #0F0;">
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-sibling-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-sibling-ref.html
new file mode 100644
index 0000000..cf4ce401
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-canvas-sibling-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Canvas with mix-blend-mode blends with sibling element</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+        <div style="width: 100px; height: 100px; background: #0F0"></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-filter-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-filter-ref.html
new file mode 100644
index 0000000..282d525
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-filter-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with filter.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green blurred square. <br>
+        The test fails if the square is drawn with red. </p>
+
+        <div style="background: #0F0; filter: opacity(0.9);"></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-parent-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-parent-ref.html
new file mode 100644
index 0000000..f1c8e9d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-parent-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: an iframe element with mix-blend-mode should blend with its parent element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+
+        <div style="width: 100px; height: 100px; background: #0F0;"></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-sibling-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-sibling-ref.html
new file mode 100644
index 0000000..0be2641
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-iframe-sibling-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: an iframe element with mix-blend-mode should blend with a sibling element.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle. <br>
+        If blending is not performed, the canvas is displayed with red. </p>
+
+        <div style="width: 100px; height: 100px; background: #0F0;"></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-image-notref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-image-notref.html
new file mode 100644
index 0000000..963697d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-image-notref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Image element with mix-blend-mode.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 75px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green rectangle.</p>
+        <div>
+            <img src="../support/red.png" style="max-width:100%; max-height:100%;">
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html
new file mode 100644
index 0000000..96ac8b3e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;
+                width: 150px;
+                height: 150px;
+                position: relative;
+                z-index: 1;
+            }
+            .blended {
+                background: yellow;
+                width: 150px;
+                height: 150px;
+                border-radius: 2em 2em;
+            }
+            .blended1 {
+                background: yellow;
+                width: 150px;
+                height: 75px;
+                margin-top: -75px;
+            }
+            .child1 {
+                background: aqua;
+                width: 150px;
+                height: 75px;
+                border-radius: 0 0 2em 2em;
+            }
+            .siblingOfBlended {
+                background: yellow;
+                width: 150px;
+                height: 150px;
+                overflow: hidden;
+                border-radius: 2em 2em;
+            }
+        </style>
+    </head>
+    <body>
+        <p> This test passes if you can see a rectangle split in two pieces: the top half is yellow with aqua rounded borders and the bottom half is aqua with yellow borders.</p>
+        <div class="parent">
+            <div class="blended">
+                <div class="child"></div>
+            </div>
+            <div class="blended1">
+                <div class="child1"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-mask-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-mask-ref.html
new file mode 100644
index 0000000..530a5d5e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-mask-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Blended element with masking.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+    </head>
+    <style type="text/css">
+        div {
+            width: 100px;
+            height: 100px;
+        }
+    </style>
+    <body>
+        <p>Test passes if you can see a green circle. <br>
+        The test fails if the circle is drawn with red. </p>
+
+        <div style="background: #FF0;"><div style="background: #0F0; mask-image: url('../support/red_circle.svg');"></div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-overflowing-child-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-overflowing-child-ref.html
new file mode 100644
index 0000000..a083cbc5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-overflowing-child-ref.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <style type="text/css">
+            body {
+                background: lightgray;
+            }
+            .container {
+                position: absolute;
+                z-index: 1;
+                width: 100px;
+                height: 100px;
+                background: #0F0;
+            }
+            .blender {
+                background: #0F0;
+                margin: 50px;
+                width: 100px;
+                height: 100px;
+            }
+            .intersection {
+                background: #000;
+                width: 50px;
+                height: 50px;
+                margin-top: -150px;
+                margin-left: 50px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see two green squares and a black square as their intersection,<br>
+            drawn over a light gray background.</p>
+        <div class="container">
+            <div class="blender"></div>
+            <div class="intersection"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-background-image-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-background-image-ref.html
new file mode 100644
index 0000000..3a89df4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-background-image-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Paragraph element with mix-blend-mode over parent with background image.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background-image: url('../support/yellow_square.svg');
+            }
+
+            #blender {
+                color: #0F0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if the paragraph text is drawn with green.</p>
+        <div>
+            <p id="blender">This should be drawn with green.</p>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-ref.html
new file mode 100644
index 0000000..dc8b216
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-paragraph-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Paragraph element with mix-blend-mode.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <meta name="assert" content="Test checks that test a paragraph element blends with the parent element.">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+
+            #blender {
+                color: #0F0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if the paragraph text is drawn with green.</p>
+        <div>
+            <p id="blender">This should be drawn with green.</p>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html
new file mode 100644
index 0000000..d415624f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: lime;
+                width: 140px;
+                height: 140px;
+                border-radius: 1em 5em;
+            }
+        </style>
+    </head>
+    <body>
+        <p> Test passes if you see a lime square with rounded corners.</p>
+        <div class="parent">
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html
new file mode 100644
index 0000000..f88bfde
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-blended-position-fixed-ref.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 150px;
+                height: 150px;
+                position: relative;
+                z-index: 1;
+                overflow:scroll;
+            }
+
+            .blended {
+                background: blue;/*rgb(0,0,255);*/
+                width: 100px;
+                height: 100px;
+                position: fixed;
+            }
+
+            .scrollableContent {
+                width: 200px;
+                height: 200px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a blue square inside a bigger aqua container. <br>
+        The aqua container should have scrollbars on the left and bottom.</p>
+        <div class="parent">
+            <div class="blended"></div>
+            <div class="scrollableContent"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-ref.html
new file mode 100644
index 0000000..1e583b3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-scroll-ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                width: 140px;
+                height: 140px;
+                position: relative;
+                z-index: 1;
+                overflow:scroll;
+            }
+            .blended {
+                background: lime;
+                width: 200px;
+                height: 200px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a scrollable lime rectangle.</p>
+        <div class="parent">
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-3D-transform-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-3D-transform-ref.html
new file mode 100644
index 0000000..d512e70d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-3D-transform-ref.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                transform:rotateX(20deg);
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+            }
+            .childOfBlended {
+                background: yellow;/*rgb(255,255,0);*/
+                width: 120px;
+                height: 120px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see a fuchsia square overlapping an aqua square. <br>
+            The overlapping area should be yellow. </p>
+        <div class="parent">
+            <div class="blended">
+                <div class="childOfBlended"></div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-border-radius-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-border-radius-ref.html
new file mode 100644
index 0000000..68e97ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-border-radius-ref.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <style type="text/css">
+            body {
+                background: lightgray;
+            }
+            .parent {
+                position: absolute;
+                z-index: 1;
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+            .blended {
+                background: #0F0;
+                width: 100px;
+                height: 100px;
+                border-radius: 50px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if a green circle is drawn on top of a yellow square, over a lightgray background.</p>
+        <div class="parent">
+            <div class="blended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-text-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-text-ref.html
new file mode 100644
index 0000000..275105c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-with-text-ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+        <link rel="reviewer" title="Horia Olaru" href="mailto:olaru@adobe.com">
+        <style type="text/css">
+            .container {
+                background: #FF0;
+                width: 100px;
+                height: 100px;
+            }
+            .text {
+                color: #0F0;
+            }
+            body {
+                background: lightgray;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if a yellow square with green text is drawn over a lightgray background.</p>
+        <div class="container">
+            <div class="text">Red text that becomes green after blending</div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-script-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-script-ref.html
new file mode 100644
index 0000000..b18ed6cd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-script-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Set mix-blend-mode from script.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green box.</p>
+        <div><div style="background: #0F0;"></div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-sibling-with-3D-transform-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-sibling-with-3D-transform-ref.html
new file mode 100644
index 0000000..146f7b6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-sibling-with-3D-transform-ref.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            .parent {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                padding-top: 1px;
+                position: relative;
+                z-index: 1;
+            }
+            .blended {
+                background: fuchsia;/*rgb(255,0,255);*/
+                margin-top: -200px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+            }
+            .siblingOfBlended {
+                background: blue;/*rgb(0,0,255);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 200px;
+                height: 200px;
+                transform: perspective(600px) translateZ(-200px);
+            }
+            .intersectionOfBlended {
+                background: yellow;/*rgb(255,255,0);*/
+                margin-top: -200px;
+                margin-left: 20px;
+                width: 120px;
+                height: 120px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see three overlapping squares, from back to front, having the following colors: aqua, fuchsia and blue. <br>
+        The intersection area between aqua and fuchsia squares, which is not overlapped by the blue square, should be yellow.</p>
+        <div class="parent">
+            <div class="siblingOfBlended"></div>
+            <div class="blended"></div>
+            <div class="intersectionOfBlended"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-001-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-001-ref.html
new file mode 100644
index 0000000..9b0710a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-001-ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <style>
+            .simple {
+                background: aqua;/*rgb(0,255,255);*/
+                width: 140px;
+                height: 140px;
+                display:inline-block;
+            }
+            .mixed {
+                background: black;/*rgb(0,0,0);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 100px;
+                height: 100px;
+                }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you see a black rectangle with large aqua borders.
+        You should not see a red rectangle on the page. </p>
+        <div class="simple">
+            <div class="mixed"></div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-creates-isolation-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-creates-isolation-ref.html
new file mode 100644
index 0000000..806abe25e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-stacking-context-creates-isolation-ref.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <style>
+            .container{
+                margin: 30px;
+                width: 130px;
+                height: 130px;
+                float: left;
+                background: yellow;/*rgb(255,255,0);*/
+            }
+            .simple{
+                background: lime;/* rgb(0,255,0);*/
+                width: 100px;
+                height: 100px;
+                position: fixed;
+            }
+            .mixed {
+                background: red;/*rgb(255,0,0);*/
+                margin-top: 20px;
+                margin-left: 20px;
+                width: 100px;
+                height: 100px;
+            }
+            .overlap {
+                background: black;/*rgb(0,0,0);*/
+                width: 80px;
+                height: 80px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if there is no complete red square on the screen. <br>
+        You should see two overlapping lime and red squares on top of a yellow one. <br>
+        At the intersection of the lime and red squares, a black square will be created. </p>
+        <div class="container">
+            <div class="simple">
+                <div class="mixed">
+                    <div class="overlap"></div>
+                </div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-svg-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-svg-ref.html
new file mode 100644
index 0000000..2ebde91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-svg-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: SVG element is blended.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 100px;
+                height: 100px;
+                background: #0F0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green box.</p>
+        <div></div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-notref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-notref.html
new file mode 100644
index 0000000..43b8e11
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-notref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: Video element with mix-blend-mode.</title>
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                width: 480px;
+                height: 352px;
+                background: #FF0;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see a green circle over a blue background.</p>
+        <div>
+            <video autoplay>
+                <source src="../support/red_circle.mp4" type="video/mp4">
+            </video>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-sibling-notref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-sibling-notref.html
new file mode 100644
index 0000000..f42bb53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-video-sibling-notref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Test: mix-blend-mode blending between a video element and an overlapping sibling</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Mihai Tica" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                margin-top: -361px;
+                background-color: #FF0;
+                width: 300px;
+                height: 350px;
+                color: #F00;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if you can see text and a circle moving from the top to the bottom of the page,<br>
+        both drawn with green, over a blue background.</p>
+        <video autoplay>
+            <source src="../support/red_circle.mp4" type="video/mp4">
+       </video>
+       <div>Some text inside the div.</div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html
new file mode 100644
index 0000000..cb92384
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/reference/mix-blend-mode-with-transform-and-preserve-3D-ref.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>CSS Reftest Reference</title>
+        <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+        <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com">
+        <link rel="reviewer" title="Mihai Țică" href="mailto:mitica@adobe.com">
+        <style type="text/css">
+            div {
+                height: 150px;
+                width: 150px;
+            }
+            .container {
+                position: relative;
+                z-index: 1;
+                background-color: lime;/*rgb(0,255,0);*/
+            }
+            .transformed {
+                /*transform-style: preserve-3d;*/
+                transform: rotateY(50deg);
+                background-color: blue;/*rgb(0,0,255);*/
+                /*mix-blend-mode: difference;*/
+            }
+            .child {
+                transform-origin: top left;
+                transform: rotateX(40deg);
+                background-color: yellow;/*rgb(255,255,0);*/
+            }
+        </style>
+    </head>
+    <body>
+        <p>You should see 2 small rectangles (yellow and blue) drawn inside a lime container.<br>
+            The edges for all the rectangles should be either horizontal, or vertical (not skewed).</p>
+        <div class="container">
+          <div class="transformed">
+              <div class="child"></div>
+          </div>
+        </div>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.mov b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.mov
new file mode 100644
index 0000000..08e6b49
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.mov
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.mp4 b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.mp4
new file mode 100644
index 0000000..0d0ac93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.mp4
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.oggtheora.ogv b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.oggtheora.ogv
new file mode 100644
index 0000000..baed6e2f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.oggtheora.ogv
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.webmhd.webm b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.webmhd.webm
new file mode 100644
index 0000000..37e6862bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.webmhd.webm
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.webmsd.webm b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.webmsd.webm
new file mode 100644
index 0000000..51337c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/RGB_Circles.webmsd.webm
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red.png b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red.png
new file mode 100644
index 0000000..acc86d47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_circle.mp4 b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_circle.mp4
new file mode 100644
index 0000000..ff25131
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_circle.mp4
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_circle.svg b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_circle.svg
new file mode 100644
index 0000000..3a8050ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+    <circle cx="50" cy="50" r="40" fill="#F00"/>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_square.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_square.html
new file mode 100644
index 0000000..05bac7a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_square.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+	<div style="width: 100px; height: 100px; background: #F00;"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_square.svg b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_square.svg
new file mode 100644
index 0000000..a078e6b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/red_square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+    <rect width="100" height="100" style="fill:rgb(255,0,0);"/>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/yellow_square.svg b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/yellow_square.svg
new file mode 100644
index 0000000..9ab6394
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/support/yellow_square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+    <rect width="100" height="100" style="fill:rgb(255,255,0);"/>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-computed-expected.txt b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-computed-expected.txt
new file mode 100644
index 0000000..7774b39
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-computed-expected.txt
@@ -0,0 +1,22 @@
+This is a testharness.js-based test.
+PASS Property background-blend-mode value 'normal'
+PASS Property background-blend-mode value 'multiply'
+PASS Property background-blend-mode value 'screen'
+PASS Property background-blend-mode value 'overlay'
+PASS Property background-blend-mode value 'darken'
+PASS Property background-blend-mode value 'lighten'
+PASS Property background-blend-mode value 'color-dodge'
+PASS Property background-blend-mode value 'color-burn'
+PASS Property background-blend-mode value 'hard-light'
+PASS Property background-blend-mode value 'soft-light'
+PASS Property background-blend-mode value 'difference'
+PASS Property background-blend-mode value 'exclusion'
+PASS Property background-blend-mode value 'hue'
+PASS Property background-blend-mode value 'saturation'
+PASS Property background-blend-mode value 'color'
+PASS Property background-blend-mode value 'luminosity'
+FAIL Property background-blend-mode value 'normal, luminosity' assert_equals: expected "normal, luminosity" but got "normal"
+FAIL Property background-blend-mode value 'screen, overlay' assert_equals: expected "screen, overlay" but got "screen"
+FAIL Property background-blend-mode value 'color, saturation' assert_equals: expected "color, saturation" but got "color"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-computed.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-computed.html
new file mode 100644
index 0000000..22d6a5f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-computed.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: getComputedStyle().backgroundBlendMode</title>
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-background-blend-mode">
+<meta name="assert" content="background-blend-mode computed value is as specified.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("background-blend-mode", "normal");
+test_computed_value("background-blend-mode", "multiply");
+test_computed_value("background-blend-mode", "screen");
+test_computed_value("background-blend-mode", "overlay");
+test_computed_value("background-blend-mode", "darken");
+test_computed_value("background-blend-mode", "lighten");
+test_computed_value("background-blend-mode", "color-dodge");
+test_computed_value("background-blend-mode", "color-burn");
+test_computed_value("background-blend-mode", "hard-light");
+test_computed_value("background-blend-mode", "soft-light");
+test_computed_value("background-blend-mode", "difference");
+test_computed_value("background-blend-mode", "exclusion");
+test_computed_value("background-blend-mode", "hue");
+test_computed_value("background-blend-mode", "saturation");
+test_computed_value("background-blend-mode", "color");
+test_computed_value("background-blend-mode", "luminosity");
+
+test_computed_value("background-blend-mode", "normal, luminosity");
+test_computed_value("background-blend-mode", "screen, overlay");
+test_computed_value("background-blend-mode", "color, saturation");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-invalid.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-invalid.html
new file mode 100644
index 0000000..4fdd3d36
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: parsing background-blend-mode with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-background-blend-mode">
+<meta name="assert" content="background-blend-mode supports only the grammar '<blend-mode>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-blend-mode", "auto");
+test_invalid_value("background-blend-mode", "normal luminosity");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-valid.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-valid.html
new file mode 100644
index 0000000..151a01c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/background-blend-mode-valid.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: parsing background-blend-mode with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-background-blend-mode">
+<meta name="assert" content="background-blend-mode supports the full grammar '<blend-mode>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-blend-mode", "normal");
+test_valid_value("background-blend-mode", "multiply");
+test_valid_value("background-blend-mode", "screen");
+test_valid_value("background-blend-mode", "overlay");
+test_valid_value("background-blend-mode", "darken");
+test_valid_value("background-blend-mode", "lighten");
+test_valid_value("background-blend-mode", "color-dodge");
+test_valid_value("background-blend-mode", "color-burn");
+test_valid_value("background-blend-mode", "hard-light");
+test_valid_value("background-blend-mode", "soft-light");
+test_valid_value("background-blend-mode", "difference");
+test_valid_value("background-blend-mode", "exclusion");
+test_valid_value("background-blend-mode", "hue");
+test_valid_value("background-blend-mode", "saturation");
+test_valid_value("background-blend-mode", "color");
+test_valid_value("background-blend-mode", "luminosity");
+
+test_valid_value("background-blend-mode", "normal, luminosity");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-computed.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-computed.html
new file mode 100644
index 0000000..2f7a6e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-computed.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: getComputedStyle().isolation</title>
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-isolation">
+<meta name="assert" content="isolation computed value is as specified.">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("isolation", "auto");
+test_computed_value("isolation", "isolate");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-invalid.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-invalid.html
new file mode 100644
index 0000000..d5b8f49
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: parsing isolation with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-isolation">
+<meta name="assert" content="isolation supports only the grammar '<isolation-mode>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("isolation", "none");
+test_invalid_value("isolation", "auto isolate");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-valid.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-valid.html
new file mode 100644
index 0000000..252ff138
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/isolation-valid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: parsing isolation with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-isolation">
+<meta name="assert" content="isolation supports the full grammar '<isolation-mode>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("isolation", "auto");
+test_valid_value("isolation", "isolate");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-computed.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-computed.html
new file mode 100644
index 0000000..38a2c86
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-computed.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: getComputedStyle().mixBlendMode</title>
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-mix-blend-mode">
+<meta name="assert" content="mix-blend-mode computed value is as specified.">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("mix-blend-mode", "normal");
+test_computed_value("mix-blend-mode", "multiply");
+test_computed_value("mix-blend-mode", "screen");
+test_computed_value("mix-blend-mode", "overlay");
+test_computed_value("mix-blend-mode", "darken");
+test_computed_value("mix-blend-mode", "lighten");
+test_computed_value("mix-blend-mode", "color-dodge");
+test_computed_value("mix-blend-mode", "color-burn");
+test_computed_value("mix-blend-mode", "hard-light");
+test_computed_value("mix-blend-mode", "soft-light");
+test_computed_value("mix-blend-mode", "difference");
+test_computed_value("mix-blend-mode", "exclusion");
+test_computed_value("mix-blend-mode", "hue");
+test_computed_value("mix-blend-mode", "saturation");
+test_computed_value("mix-blend-mode", "color");
+test_computed_value("mix-blend-mode", "luminosity");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-invalid.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-invalid.html
new file mode 100644
index 0000000..e73d28e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: parsing mix-blend-mode with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-mix-blend-mode">
+<meta name="assert" content="mix-blend-mode supports only the grammar '<blend-mode>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("mix-blend-mode", "auto");
+test_invalid_value("mix-blend-mode", "normal luminosity");
+test_invalid_value("mix-blend-mode", "normal, luminosity");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-valid.html b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-valid.html
new file mode 100644
index 0000000..c639334
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/parsing/mix-blend-mode-valid.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Compositing and Blending Level 1: parsing mix-blend-mode with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-mix-blend-mode">
+<meta name="assert" content="mix-blend-mode supports the full grammar '<blend-mode>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("mix-blend-mode", "normal");
+test_valid_value("mix-blend-mode", "multiply");
+test_valid_value("mix-blend-mode", "screen");
+test_valid_value("mix-blend-mode", "overlay");
+test_valid_value("mix-blend-mode", "darken");
+test_valid_value("mix-blend-mode", "lighten");
+test_valid_value("mix-blend-mode", "color-dodge");
+test_valid_value("mix-blend-mode", "color-burn");
+test_valid_value("mix-blend-mode", "hard-light");
+test_valid_value("mix-blend-mode", "soft-light");
+test_valid_value("mix-blend-mode", "difference");
+test_valid_value("mix-blend-mode", "exclusion");
+test_valid_value("mix-blend-mode", "hue");
+test_valid_value("mix-blend-mode", "saturation");
+test_valid_value("mix-blend-mode", "color");
+test_valid_value("mix-blend-mode", "luminosity");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/svg/mix-blend-mode-in-svg-image.html b/third_party/blink/web_tests/external/wpt/css/compositing/svg/mix-blend-mode-in-svg-image.html
new file mode 100644
index 0000000..658e027
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/svg/mix-blend-mode-in-svg-image.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>CSS Compositing and Blending: mix-blend-mode in an SVG linked as an image</title>
+		<link rel="author" title="Rik Cabanier" href="mailto:cabanier@adobe.com"">
+		<link rel="help" href="https://drafts.fxtf.org/compositing-1/#isolation">
+		<link rel="reviewer" title="Dirk Schulze" href="mailto:dschulze@adobe.com">
+		<link rel="help" href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_SVG">
+		<link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+		<meta name="flags" content="svg">
+		<link rel="match" href="reference/mix-blend-mode-svg-rectangle-ref.html">
+	</head>
+	<body>
+		<p>There should be a green rectangle on the screen. <br>
+		   Test passes if you see a green rectangle.</p>
+		<img src="support/green_square_blending.svg"/>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/svg/mix-blend-mode-svg-rectangle.html b/third_party/blink/web_tests/external/wpt/css/compositing/svg/mix-blend-mode-svg-rectangle.html
new file mode 100644
index 0000000..e74181e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/svg/mix-blend-mode-svg-rectangle.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<title>CSS Test: mix-blend-mode for a simple SVG element - rectangle</title>
+		<link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+		<link rel="reviewer" title="Mihai Balan" href="mailto:mibalan@adobe.com">
+		<link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com">
+		<link rel="help" href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_SVG">
+		<link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">
+		<meta name="flags" content="svg">
+		<link rel="match" href="reference/mix-blend-mode-svg-rectangle-ref.html">
+	</head>
+	<body>
+		<p>There should be no red rectangle on the screen. <br>
+		   Test passes if you see a black rectangle.</p>
+		<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="400px" height="400px" >
+			<rect x="0" y="0" width="100" height="100" fill="aqua"/>
+			<rect x="0" y="0" width="100" height="100" fill="red" style="mix-blend-mode: multiply"/>
+		</svg>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html
new file mode 100644
index 0000000..6d74ee05
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<title>CSS Reftest Reference</title>
+		<link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com">
+		<style>
+		div {
+			width: 100px;
+			height:100px;
+			background-color: black;/*rgb(0,0,0);*/
+		}
+		</style>
+	</head>
+	<body>
+		<p>There should be no red rectangle on the screen. <br>
+		   Test passes if you see a black rectangle.</p>
+		<div></div>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/svg/support/green_square_blending.svg b/third_party/blink/web_tests/external/wpt/css/compositing/svg/support/green_square_blending.svg
new file mode 100644
index 0000000..19d61e27
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/svg/support/green_square_blending.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+    <rect width="100" height="100" style="fill:rgb(0,255,0);mix-blend-mode: difference;"/>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/css-blending-test-plan-proposal.html b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/css-blending-test-plan-proposal.html
new file mode 100644
index 0000000..c82a543a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/css-blending-test-plan-proposal.html
@@ -0,0 +1,1616 @@
+
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>Compositing and Blending test plan</title>
+		<meta charset='utf-8'>
+		<script src='http://www.w3.org/Tools/respec/respec-w3c-common'
+						async class='remove'></script>
+		<script class='remove'>
+			var respecConfig = {
+					specStatus: "unofficial",
+					shortName:  "css3-blending-test-plan",
+					editors: [
+								{
+									name: "Mirela Budaes",
+									company: "Adobe Systems, Inc.",
+									companyURL: "http://www.adobe.com/"
+								},
+								{
+									name: "Horia Olaru",
+									company: "Adobe Systems, Inc.",
+									companyURL: "http://www.adobe.com/"
+								},
+								{
+									name: "Mihai Tica",
+									company: "Adobe Systems, Inc.",
+									companyURL: "http://www.adobe.com/"
+								},
+
+					]
+			};
+		</script>
+		<style>
+			table
+			{
+				border-collapse:collapse;
+			}
+			table, td, th
+			{
+				border:1px solid black;
+				padding: 13px;
+			}
+			table
+			{
+				width: 100%;
+			}
+			img
+			{
+				width: 400px;
+			}
+		</style>
+	</head>
+	<body>
+		<section id='abstract'>
+			<p>
+				This document is intended to be used as a guideline for the testing
+				activities related to the Compositing and Blending spec [[!compositing-1]]. Its main
+				goal is to provide an overview of the general testing areas and an informative
+				description of possible test cases.
+			</p>
+			<p>
+				This document is not meant to replace the spec in determining the
+				normative and non-normative assertions to be tested, but rather
+				complement it.
+			</p>
+		</section>
+		<section>
+			<h2>Goals</h2>
+			<section>
+				<h3>Providing guidance on testing</h3>
+				<p>
+					In order to increase the quality of the test contributions, this
+					document offers a set of test cases description for conducting testing (see
+					<a href="#test-cases-description" class="sectionRef"></a>).
+				</p>
+			</section>
+			<section>
+				<h3>Creating automation-friendly tests</h3>
+				<p>
+					In terms of actual tests produced for the CSS Compositing and Blending, the main goal
+					is to ensure that most tests are automatable (i.e. they're either
+					reftests or use <code>testharness.js</code>). Even where manual tests
+					are absolutely necessary they should be written so that they can be
+					easily automated &ndash; as there are on-going efforts to make
+					WebDriver [[webdriver]] automated tests a first class citizen in W3C
+					testing. This means that even if a manual test requires user
+					interaction, the validation or PASS/FAIL conditions should still be
+					clear enough as to allow automatic validation if said interaction is
+					later automated.
+				</p>
+			</section>
+		</section>
+		<section>
+			<h2>Approach</h2>
+			<p>
+				Since CSS blending has only three new CSS properties,
+				the approach is to deep dive into every aspect of the spec as much as possible.
+
+				Tests will be created for the testing areas listed in <a href="#testig-areas" class="sectionRef"></a>
+				and having as guidance the test cases description from <a href="#test-cases-description" class="sectionRef"></a>.
+			</p>
+		</section>
+		<section>
+			<h2>Testing areas</h2>
+			<section>
+				<h3>Explicit testing areas</h3>
+					<p>
+					  These testing areas cover things explicitly defined in the normative sections of the Blending and Compositing spec. Please note that while detailed, this list is not necessarily
+					  exhaustive and some normative behaviors may not be contained in it.
+					  When in doubt, consult the Blending and Compositing spec or ask a question on the
+					  <a href="http://lists.w3.org/Archives/Public/www-style/">mailing
+					  list</a>.
+					</p>
+				<p>Below is the list of explicit testing areas:</p>
+				<ol>
+					<li>Proper parsing of the CSS properties and rendering according to the spec
+						<ul><code>mix-blend-mode</code></ul>
+						<ul><code>isolation</code></ul>
+						<ul><code>background-blend-mode</code></ul>
+					</li>
+					<li>SVG blending</li>
+					<li>Canvas 2D blending</li>
+				</ol>
+			</section>
+			<section>
+				<h3>Implicit testing areas</h3>
+				<p>
+				  These are testing areas either normatively defined in other specs
+				  that explicitly refer to the Blending and Compositing spec (e.g. [[!css3-transforms]])
+				  or simply not explicitly defined, but implied by various aspects of
+				  the spec (e.g. processing model, CSS 2.1 compliance, etc.).
+				  Please note that while detailed, this list is not necessarily
+				  exhaustive and some normative behaviors may not be contained in it.
+				  When in doubt, consult the Blending and Compositing spec or ask a question on the
+				  <a href="http://lists.w3.org/Archives/Public/www-style/">mailing
+				  list</a>.
+				</p>
+				<p>Below is the list of implicit testing areas:</p>
+				<ol>
+					<li>Blending different types of elements
+						<ul>
+							<li><code>&lt;video&gt;</code></li>
+							<li><code>&lt;canvas&gt;</code></li>
+							<li><code>&lt;table&gt;</code></li>
+							</ul>
+					</li>
+					<li>Blending elements with specific style rules applied
+						<ul>
+							<li><code>transforms</code></li>
+							<li><code>transitions</code> </li>
+							<li><code>animations</code> </li>
+						</ul>
+					</li>
+				</ol>
+			</section>
+		</section>
+		<section>
+				<h2>Test cases description</h2>
+				<section>
+					<h3>Test cases for <code>mix-blend-mode</code></h3>
+					<p>
+						The following diagram describes a list of notations to be used later on in the document as well as the general document structure the test cases will follow. The test cases should not be limited to this structure. This should be a wireframe and people are encouraged to come up with complex test cases as well.
+					</p>
+					<p>
+						<img id="test_outline" src="test_template.png" alt="Mix-blend-mode sample elements">
+					</p>
+					<p>The intended structure of the document is the following:</p>
+						<pre>
+&lt;body&gt;
+  &lt;div id="[P]"&gt;
+    &lt;div id="[IN-S]"&gt;&lt;/div&gt;
+    &lt;div id="[IN-P]"&gt;
+      &lt;div id="[B]"&gt;
+        &lt;div id="[CB]"&gt;&lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+						</pre>
+					<p> Unless otherwise stated, test cases assume the following properties for the elements: <br>
+						<ul>
+						<li> default value for the <code>background-color</code> of the <code>body</code></li>
+						<li> <code>background-color</code> set to a fully opaque color for all the other elements </li>
+						</ul>
+					</p>
+					<p>The CSS associated to the elements used in the tests shouldn't use properties that creates a stacking context, except the ones specified in the test case descriptions.</p>
+					<p>Every test case has a description of the elements used. The notation from the image is used in the test case description too (e.g. for parent element the notation is [P]). Each test case uses only a subset of the elements while the other elements should just be removed.
+					</p></p>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> other than normal creates a stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode" >spec</a>: <q>Applying a blendmode other than ‘normal’ to the element must establish a new stacking context [CSS21].</q></p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Simple <code>&lt;div&gt;</td>
+								<td>1 element required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								 </td>
+								<td>The element [B] creates a stacking context</td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> blends with the content within the current stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q>An element that has blending applied, must blend with all the underlying content of the stacking context [CSS21] that that element belongs to.</q> </p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Blending simple elements </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B].</td>
+							</tr>
+							<tr>
+								<td>Blending <code>&lt;video&gt;</code></td>
+								<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[B] - <code>&lt;video&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) visually overlaping the <code>&lt;video&gt;</code> element <br>
+									[IN-S] has some text inside
+							</td>
+								<td>The content of the <code>video</code> element [B] mixes with the colors of the sibling element and the text from [IN-S].</td>
+							</tr>
+							<tr>
+								<td>Blending with a sibling</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling of the element [B] <br>
+									The [IN-S] element visually overlaps the [B] element
+								</td>
+								<td>The colors of the parent element [P] and the sibling element [IN-S] mixes with the color of the blended element [B].</td>
+							</tr>
+							<tr>
+								<td>Blending with two levels of ascendants</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-P] - Intermediate child element between the parent [P] and the child [B]
+								</td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B].</td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> doesn't blend with anything outside the current stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q> An element that has blending applied, must blend with all the underlying content of the stacking context [CSS21] that that element belongs to.</q></p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Blending child overflows the parent</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									The blending element [B] has content that lies outside the parent element. <br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default</td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									 The area of the child element outside of the parent element doesn't mix with the color of the <code>body</code></td>
+							</tr>
+							<tr>
+								<td>Parent with transparent pixels</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									The element has some text inside and default value for <code>background-color</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									The <code>background-color</code> of the <code>body</code> has a value other than default</td>
+								<td>The color of the text from the parent element [P] mixes with the color of the child element [B]. <br>
+								No blending between the color of the <code>body</code> and the color of the blending element [B].
+								 </td>
+							</tr>
+							<tr>
+								<td>Parent with <code>border-radius</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[P] has <code>border-radius</code> specified (e.g.50%). <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal <br>
+										[B] has content that lies outside the parent element, over a rounded corner. <br>
+										The <code>background-color</code> of the <code>body</code> has a value other than default. </td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									 The area of the child element which draws over the rounded corner doesn't mix with the color of the <code>body</code></td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> other than normal must cause a group to be isolated</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#isolation" >spec</a>: <q>operations that cause the creation of stacking context [CSS21] must cause a group to be isolated.</q> </p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Child of the blended element has opacity</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[CB] - child of the element [B] with <code>opacity</code> less than one. </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]</td>
+							</tr>
+							<tr>
+								<td>Overflowed child of the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal <br>
+										[CB] - child of the element [B] with content that lies outside the parent element [B].
+								</td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]. There is only one color for the entire element [CB] </td>
+							</tr>
+							<tr>
+								<td>Blended element with transparent pixels</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and transparent <code>background-color</code> <br>
+									[CB] - child of the element [B]
+								</td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]. </td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> must work properly with css transforms</h4>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Parent with 3D transform</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Blended element with 3D transform</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>3D transform</code> <br>
+									[CB] - child of the element [B] </td>
+								<td> The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed </td>
+							</tr>
+							<tr>
+								<td>Both parent and blended element with 3D transform</td>
+								<td> 2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>3D transform</code>
+								</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The elements (and the content) of the elements [P]  and [B] are properly transformed</td>
+							</tr>
+							<tr>
+								<td>Blended element with transform and preserve-3d</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal and transform with <code>transform-style:preserve-3d</code> <br>
+										[CB] - child of the element [B]. It has 3D transform property</td>
+								<td> The child element [CB] will NOT preserve its 3D position. <br>
+								<code>mix-blend-mode</code> override the behavior of <code>transform-style:preserve-3d</code>:
+								creates a flattened representation of the descendant elements <br>
+								The color of the group created by the child elements([B] and [CB]) will blend with the color of the parent element [P] </td>
+							</tr>
+							<tr>
+								<td>Blended element with transform and perspective</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal and transform with <code>perspective</code> set to positive length </td>
+								<td>The colors of the parent and the child are mixed ([P] and [B]) <br>
+									The element (and the content) of the element [B] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Sibling with 3D transform between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - Sibling(of the element [B]) with <code>3D transform</code> between the parent [P] and the child [B]
+									 </td>
+								<td>The colors of the parent element [P] and the transformed sibling element [IN-S] mixes with the color of the blended element [B].<br>
+								The element (and the content) of the element [IN-S] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Parent with 3D transform and transition</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> and transition <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Sibling with 3D transform(and transition) between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) with <code>3D transform</code> and transition between the parent [P] and the child [B]
+									 </td>
+								<td>The colors of the parent element [P] and the transformed sibling element [IN-S] mixes with the color of the blended element [B].<br>
+								The element (and the content) of the element [IN-S] is properly transformed
+								</td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> must work properly with elements with <code>overflow</code> property</h4>
+						<table>
+							<tr>
+								<td>Parent element with <code>overflow:scroll</code> </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:scroll</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal tat overflows the parents [P] dimensions so that it creates scrolling for the parent
+								<td>The color of the parent element [P] mixes with the color of the child element [B]. <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:scroll</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>overflow:scroll</code> and a child element that creates overflow for [B]</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Parent element with <code>overflow:scroll</code> and blended with <code>position:fixed</code> </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:scroll</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>position:fixed</code> and should overflow the parents [P] dimensions so that it creates scrolling for the parent</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The blending happens when scrolling the content of the parent element [P] too. <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Parent with <code>overflow:hidden</code> and <code>border-radius</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal with content that lies outside the parent element, over a rounded corner <br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default.</td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									The area of the child element which draws over the rounded corner is properly cut </td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:hidden</code> and <code>border-radius</code></td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%). <br>
+									[CB] - child of the element [B], with content that lies outside the parent element, over a rounded corner. <br> </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+									No blending between [B] and [CB]. <br>
+									[CB] is properly clipped so no overflow is visible.</td>
+							</tr>
+							<tr>
+								<td>Intermediate child with <code>overflow:hidden</code> and <code>border-radius</code> between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal that overflows the parents [IN-P] dimensions
+									[IN-P] - child(of the element [P]) with <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%)
+									 </td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B]. <br>
+									[B] is is properly clipped so no overflow is visible
+								</td>
+							</tr>
+						</table>
+					</section>
+				<section>
+					<h4>Other test cases</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blended element with <code>border-image</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>border-image</code> specified as a png file
+							</td>
+							<td>The color of the parent element [P] mixes with the color of the child element. <br>
+								The color of the <code>border-image</code> mixes with the color of the parent element [P].
+							</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;canvas&gt;</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+								[B] - <code>&lt;canvas&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+								[IN-S] - Sibling of the <code>&lt;canvas&gt;</code> element with some text <br>
+								The [IN-S] element overlaps the <code>&lt;canvas&gt;</code> element
+							</td>
+							<td>The content of the <code>&lt;canvas&gt;</code> element mixes with the color of the sibling element and the text [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;canvas&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - Child <code>&lt;canvas&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;canvas&gt;</code> element [B] mixes with the color of the parent element [P] .</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;video&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;video&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;video&gt;</code> element mixes with the color of the parent element [P] .</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;iframe&gt;</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[B] - <code>&lt;iframe&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) with some text <br>
+									The [IN-S] element visually overlaps the <code>&lt;iframe&gt;</code> element
+							</td>
+							<td>The color of the <code>&lt;iframe&gt;</code> element mixes with the color of the sibling element and the text [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;iframe&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;iframe&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;iframe&gt;</code> element [B] mixes with the color of the parent element [P]. </td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>mask</code> property</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>mask</code> property specified to an SVG image (e.g. circle)</td>
+							<td>The colors of the parent and the masked child are mixed ([P] and [B])</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>clip-path</code> property </td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>clip-path</code> property specified to a basic shape (e.g. ellipse)</td>
+							<td>The colors of the parent and the clipped child are mixed ([P] and [B])</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>filter</code> property</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>filter</code> property value other than none </td>
+							<td>The filter is applied and the result is mixed with the parent element</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>transition</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>transition-property</code> for <code>opacity</code> </td>
+							<td>The transition is applied and the result is mixed with the parent element</td>
+						</tr>
+							<tr>
+							<td>Blended element with <code>animation</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>animation</code> specified</td>
+							<td>The animation is applied to the child element and the result is mixed with the parent element</td>
+						</tr>
+						<tr>
+							<td>Image element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;img&gt;</code> element (.jpeg or .gif image) with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the <code>&lt;img&gt;</code> is mixed with the color of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>SVG element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - SVG element with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the SVG is mixed with the color of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Paragraph element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - paragraph element with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the text from the paragraph element is mixed with the color of the <code>&lt;div&gt;</code></td>
+						</tr>
+						<tr>
+							<td>Paragraph element and background-image</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								 and  <code>background-image</code> <br>
+								[B] - Child <code>p</code> element with some text and <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the text from the <code>p</code> element is mixed with the background image of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Set blending from JavaScript</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - Child <code>&lt;div&gt;</code> element with no <code>mix-blend-mode</code> specified<br>
+								From JavaScript, set the <code>mix-blend-mode</code> property for the child <code>&lt;div&gt;</code> to a value other than normal</td>
+							<td>The colors of the <code>&lt;div&gt;</code> elements are mixed.</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+			<section>
+				<h3>Test cases for SVG elements with <code>mix-blend-mode</code></h4>
+				<section>
+					<h4><code>mix-blend-mode</code> with simple SVG graphical elements</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode" >spec</a> : <q><code>mix-blend-mode</code> applies to svg, g, use, image, path, rect, circle, ellipse, line, polyline, polygon, text, tspan, and marker.</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Circle with SVG background</td>
+							<td>Set a background color for the SVG.<br>
+								Create 16 <code>circle</code> elements and fill them with a solid color.
+								<br>Apply each <code>mix-blend-mode</code> on them.</td>
+							<td>The color of the <code>circle</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Ellipse with SVG background</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>ellipse</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>ellipse</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Image with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create an <code>image</code> element and apply a <code>mix-blend-mode</code> other than <code>normal</code>.</td>
+							<td>The <code>image</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Line with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>line</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>line</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Path with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>path</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>path</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Polygon with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>polygon</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>polygon</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Polyline with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>polyline</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>polyline</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Rect with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>rect</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Text with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>text</code> element and apply a <code>mix-blend-mode</code> other than <code>normal</code>.</td>
+							<td>The text is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Text having tspan with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>text</code> element and a <code>tspan</code> inside it.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>tspan</code>.</td>
+							<td>The text is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Gradient with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a <code>gradient</code>.
+								<br>Apply a <code>mix-blend-mode</code> on it other than normal.</td>
+							<td>The gradient is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Pattern with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a <code>pattern</code>.
+								<br>Apply a <code>mix-blend-mode</code> on it other than normal.</td>
+							<td>The pattern is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Set blending on an element from JavaScript</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> (other than <code>normal</code>) on it from JavaScript.</td>
+							<td>The color of the <code>rect</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Marker with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>line</code> element containing a marker.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The marker color is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Metadata with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>metadata</code> element containing an embedded pdf.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The metadata content is not mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>ForeignObject with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>foreignObject</code> element containing a simple xhtml file.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The foreignObject content is not mixed with the color of the background.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>mix-blend-mode</code> with SVG groups</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Group of overlapping elements with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the group.</td>
+							<td>The <code>group</code> is mixed as a whole with the color of the background.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>mix-blend-mode</code> with isolated groups</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode" >spec</a>:
+					<br><q>By default, every element must create a non-isolated group.<br>
+						However, certain operations in SVG will create isolated groups.<br>
+						If one of the following features is used, the group must become isolated:
+						<ul>
+						    <li>opacity</li>
+						    <li>filters</li>
+						    <li>3D transforms (2D transforms must NOT cause isolation)</li>
+						    <li>blending</li>
+						    <li>masking</li>
+						</ul>
+					</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending two elements in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the second rect.</td>
+							<td>Only the intersection of the <code>rect</code> elements should mix.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with filter</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>filter</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with 2D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>transform</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with 3D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a 3d transform on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with a mask</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>mask</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with mix-blend-mode</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>Other test cases for SVG</h4>
+					<table>
+						<tr>
+							<td>Blend with element having opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke-opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke</code>, <code>stroke-opacity</code> less than 1 and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke-dasharray</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke-dasharray</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>transform</code> (any combination of <code>translate</code>, <code>rotate</code>, <code>scale</code>, <code>skew</code>) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with SVG having viewbox and preserveAspectRatio set</td>
+							<td>Set a background color for the SVG, as well as <code>viewbox</code> and <code>preserveAspectRatio</code>.<br>
+								Create a <code>rect</code> element filled with a different solid color and apply a <code>mix-blend-mode</code> other than <code>normal</code> on it.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having color-profile set</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>color-profile</code> (<code>sRGB</code>, for example) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having overflow</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> larger than the SVG.<br>
+								Apply <code>overflow</code> (<code>visible</code>, <code>hidden</code>, <code>scroll</code>) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having clip-path</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>clip-path</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having a mask</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element.<br>
+								Apply a <code>mask</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having a filter</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element.<br>
+								Apply a <code>filter</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an animated element</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply an <code>animateTransform</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Set blending from an SVG script element</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element and fill it with a solid color.<br>
+								Apply a <code>mix-blend-mode</code> (other than <code>normal</code>) on it from an svg <code>script</code> element.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+			<section>
+				<h3>Test cases for <code>background-blend-mode</code></h3>
+				<section>
+					<h4>Blending between the background layers and the background color for an element with <code>background-blend-mode</code> </h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>Each background layer must blend with the element's background layer that are below it and the element's background color.</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Images with different formats</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+								Tests should be created for <code>&lt;image&gt;</code> with different formats such as PNG, JPEG or SVG
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Gradient and background color</td>
+							<td>
+								Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;gradient&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Image and gradient</td>
+							<td>
+								Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> on top of a <code>&lt;gradient&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>&lt;image&gt;</code> is mixed with the content of the <code>&lt;gradient&gt;</code>
+							</td>
+						</tr>
+						<tr>
+							<td>Gradient and image</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>&lt;gradient&gt;</code> on top of an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>&lt;image&gt;</code> is mixed with the content of the <code>&lt;gradient&gt;</code></td>
+						</tr>
+						<tr>
+							<td>Two gradients</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>&lt;gradient&gt;</code> on top of another <code>&lt;gradient&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul></td>
+							<td>The content of the two gradients is mixed</td>
+						</tr>
+						<tr>
+							<td>Two images</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> on top of another <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul></td>
+							<td>The content of the two images is mixed</td>
+						</tr>
+						<tr>
+							<td>Image and background color with transparency</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> with transparency(e.g. PNG images)</li>
+									<li><code>background-color</code> set to a transparent color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Cross-fade image and gradient</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <q>cross-fade()</q> image on top of a <code>&lt;gradient&gt;</code> </li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the cross-faded image is mixed with the content of the <code>&lt;gradient&gt;</code></td>
+						</tr>
+						<tr>
+							<td>SVG image and background color</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a data URI for an SVG image </li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td>Animated gif image and background color</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an animated gif image</li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td>Set <code>background-blend-mode</code> from JavaScript</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>gradient</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li>no <code>background-blend-mode</code> explicitly specified</li>
+									From JavaScript, set the <code>background-blend-mode</code> property to a value other than normal.
+								</ul>
+							</td>
+							<td>The content of the gradient is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td><code>background-blend-mode</code> on element with 3D transform</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+									<li><code>transform</code> set to a 3D function like rotateX, rotateY or translateZ</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>Background layers do not blend with content outside the background (or behind the element)</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>Background layer must not blend with the content that is behind the element instead they must act as if they are rendered into an isolated group.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>One background layer</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The <code>background-image</code> is not mixed with anything outside the element</td>
+						</tr>
+						<tr>
+							<td>Two elements</td>
+							<td>2 elements required: a parent element with a child. <br>
+								Each one with the following properties:
+								<ul>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							<td>No blending between the background colors of the two elements</td>
+						</tr>
+						<tr>
+							<td>Parent and child with <code>background-blend-mode</code></td>
+							<td>2 elements required: a parent element with a child <br>
+								Parent properties: <br>
+								<ul>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+								Child properties: <br>
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							<td>The content of the image from the child element does not mixes with the background color from the parent element</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4> <code>background-blend-mode</code> list values apply to the corresponding background layer</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>The ‘background-blend-mode’ list must be applied in the same order as ‘background-image’[CSS3BG]. This means that the first element in the list will apply to the layer that is on top.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Different blend modes applied between layers</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image-list&gt;</code> containing three images: (e.g. I1, I2 and I3 ) </li>
+									<li><code>background-blend-mode</code> set to different <code>blendmode</code> for every image: (e.g. multiply, difference, screen) </li>
+								</ul></td>
+							<td>The content of the three images is correctly mixed <br>
+							(multiply for I1, difference for I2 and screen for I3)
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> list values are repeated if the list is shorter than the background layer list</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>If a property doesn't have enough comma-separated values to match the number of layers, the UA must calculate its used value by repeating the list of values until there are enough.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blend mode list repeat</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image-list&gt;</code> containing three images</li>
+									<li><code>background-blend-mode</code> set to two different <code>blendmode</code> values</li>
+								</ul></td>
+							<td>The unspecified blend modes should be obtained by repeating the blend mode list from the beginning</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>The default <code>background-blend-mode</code> value for the <code>background</code> shorthand is 'normal' </h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>If the ‘background’ [CSS3BG] shorthand is used, the ‘background-blend-mode’ property for that element must be reset to its initial value.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Default blend mode for 'background' shorthand</td>
+							<td>Element with
+								<ul>
+									<li><code>background</code> property set to an image and a color</li>
+									<li>No value explicitly set for <code>background-blend-mode</code> </li>
+								</ul></td>
+							<td> The computed value of <code>background-blend-mode</code> is 'normal'
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-position</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-position</code> percentage</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-position</code> specified in percentage, such as 50% 50%</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> is correctly positioned
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-size</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Background size defined in pixels</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> specified in pixels</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size defined in percentage (second phase)</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> specified in percentage</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size cover</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> set to <code>cover</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size contain</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> set to <code>contain</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-repeat</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to no-repeat</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>no-repeat</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> is not repeated
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to space</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>space</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to round</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>round</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-clip</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-clip</code> set to <code>padding-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-clip</code> set to <code>padding-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							No background is drawn below the border (background extends to the outside edge of the padding)
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-clip</code> set to <code>content-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-clip</code> set to <code>content-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background is painted within (clipped to) the content box
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-origin</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-origin</code> set to <code>border-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-origin</code> set to <code>border-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background extends to the outside edge of the border (but underneath the border in z-ordering)
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-origin</code> set to <code>content-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-origin</code> set to <code>content-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background is painted within (clipped to) the content box
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-attachement</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-attachment</code> set to <code>fixed</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-attachment</code> set to <code>fixed</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background image will not scroll with its containing element, instead remaining stationary within the viewport
+							</td>
+						</tr>
+						<tr>
+							<td>2 background images with <code>background-attachment</code> set to <code>fixed, scroll</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to 2 <code>&lt;image&gt;</code>(s)</li>
+									<li><code>background-attachment</code> set to <code>fixed, scroll</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The background images will be mixed when they overlap while scrolling
+							</td>
+						</tr>
+					</table>
+				</section>
+		</section>
+			<section>
+				<h3>Test cases for <code>isolation</code></h3>
+				<section>
+					<h4>An element with <code>isolation:isolate</code> creates a stacking context</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q>For CSS, setting ‘isolation’ to ‘isolate’ will turn the element into a stacking context [CSS21].</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation isolate</td>
+							<td>Have an element with <code>isolation</code> set to <code>isolate</code></td>
+							<td>The element creates a stacking context.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>An element with <code>isolation:isolate</code> creates an isolated group for blended children</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation of blended child which overflows</td>
+							<td>3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								This element has <code>isolation:isolate</code> set.<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code> <br>
+								The blending element [B] has content that lies outside the parent element. <br>
+							</td>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								The area of the child element outside of the intermediate parent element does not mix with the color of the parent element [P], or of the <code>body</code>.
+							</td>
+						</tr>
+						<tr>
+							<td>Isolation on intermediate element with transparent pixels</td>
+							<td>3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>); the element <code>background-color</code> is other than <code>transparent</code><br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								The intermediate element has text content, default value for <code>background-color</code> and <code>isolation:isolate</code> set<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</d <br>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								There is no blending between the color of the parent element [P] and the color of the blended element [B].
+							</td>
+						</tr>
+						<tr>
+							<td>Isolate inside a stacking context created by a 3d transform</td>
+							<td>
+								3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a <code>3D transform</code> applied<br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								The intermediate element has <code>isolation:isolate</code> set<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code><br>
+							</td>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								There is no blending between the color of the parent element [P] and the color of the blended element [B].
+							 </td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>An element with <code>isolation:auto</code> set does not change the elements existing stacking context behavior</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation auto</td>
+							<td>Have an element with <code>isolation</code> explicitly set to <code>auto</code>, and no other style that would create a stacking context</td>
+							<td>The element does not create a stacking context - the computed value of its <code>z-index</code> is value <code>auto</code></td>
+						</tr>
+						<tr>
+							<td>Stacking context not affected by isolation</td>
+							<td>2 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>); This element has <code>isolation</code> explicitly set to <code>auto</code> <br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code> <br>
+								The blending element [B] has content that lies outside the parent element. <br>
+								Set the <code>background-color</code> of the <code>body</code> to a value other than default
+							</td>
+							<td>The color of the parent element mixes with the color of the child element. <br>
+								The area of the child element outside of the parent element doesn't mix with the color of the <code>body</code>.<br>
+								In other words, setting the <code>isolation</code> to <code>auto</code> does not affect the creation of a stacking context by other properties.
+							</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+			<section>
+				<h4>Test cases for <code>isolation</code> in SVG</h4>
+				<section>
+					<h4>In SVG, an element with <code>isolation:isolate</code> creates an isolated group for blended children</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#isolation">spec</a>: <q>In SVG, this defines whether an element is isolated or not.</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending two elements in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the second rect.</td>
+							<td>Only the intersection of the <code>rect</code> elements should mix.</td>
+						</tr>
+						<tr>
+							<td>Blending in an isolated group with 2D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> and 2D transform on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Set isolation on an element from JavaScript</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color and a <code>mix-blend-mode</code> other than <code>normal</code>.
+								<br>Apply <code>isolation:isolate</code> on it from JavaScript.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>In SVG, an element with <code>isolation:auto</code> set does not change the rendering behaviour</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending a group with <code>isolation:auto</code></td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:auto</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The element will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 and <code>isolation:auto</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test-plan.html b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test-plan.html
new file mode 100644
index 0000000..a378004
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test-plan.html
@@ -0,0 +1,1821 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr" typeof="bibo:Document " about="" property="dcterms:language" content="en" prefix="bibo: http://purl.org/ontology/bibo/ w3p: http://www.w3.org/2001/02pd/rec54#"><head>
+		<title>Compositing and Blending Test Plan</title>
+		<meta charset="utf-8">
+
+
+		<style>
+			table
+			{
+				border-collapse:collapse;
+			}
+			table, td, th
+			{
+				border:1px solid black;
+				padding: 13px;
+			}
+			table
+			{
+				width: 100%;
+			}
+			img
+			{
+				width: 400px;
+			}
+		</style>
+	<style>/*****************************************************************
+ * ReSpec 3 CSS
+ * Robin Berjon - http://berjon.com/
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+    text-transform:     lowercase;
+    font-variant:       small-caps;
+    font-style:         normal;
+    color:              #900;
+}
+
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+    border: none;
+}
+
+dfn {
+    font-weight:    bold;
+}
+
+a.internalDFN {
+    color:  inherit;
+    border-bottom:  1px solid #99c;
+    text-decoration:    none;
+}
+
+a.externalDFN {
+    color:  inherit;
+    border-bottom:  1px dotted #ccc;
+    text-decoration:    none;
+}
+
+a.bibref {
+    text-decoration:    none;
+}
+
+cite .bibref {
+    font-style: normal;
+}
+
+code {
+    color:  #ff4500;
+}
+
+/* --- TOC --- */
+.toc a, .tof a {
+    text-decoration:    none;
+}
+
+a .secno, a .figno {
+    color:  #000;
+}
+
+ul.tof, ol.tof {
+    list-style: none outside none;
+}
+
+.caption {
+    margin-top: 0.5em;
+    font-style:   italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+    border-spacing: 0;
+    border-collapse:    collapse;
+    border-bottom:  3px solid #005a9c;
+}
+
+.simple th {
+    background: #005a9c;
+    color:  #fff;
+    padding:    3px 5px;
+    text-align: left;
+}
+
+.simple th[scope="row"] {
+    background: inherit;
+    color:  inherit;
+    border-top: 1px solid #ddd;
+}
+
+.simple td {
+    padding:    3px 10px;
+    border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+    background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+    margin-top: 0;
+}
+
+.section dd > p:last-child {
+    margin-bottom: 0;
+}
+
+.section dd {
+    margin-bottom:  1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+    margin-bottom:  0;
+}
+</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/w3c-unofficial"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+	<body class="h-entry" style="" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
+  <p>
+
+  </p>
+  <h1 class="title p-name" id="title" property="dcterms:title">Compositing and Blending Test Plan</h1>
+
+  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-12-03T10:52:36.000Z" id="unofficial-draft-03-december-2013">Unofficial Draft <time class="dt-published" datetime="2013-12-03">03 December 2013</time></h2>
+  <dl>
+
+
+
+
+
+
+
+    <dt>Editors:</dt>
+    <dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Mirela Budaes</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.adobe.com/">Adobe Systems, Inc.</a></span>
+</dd>
+<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Horia Olaru</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.adobe.com/">Adobe Systems, Inc.</a></span>
+</dd>
+<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Mihai Tica</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.adobe.com/">Adobe Systems, Inc.</a></span>
+</dd>
+
+
+
+  </dl>
+
+
+
+
+
+
+        <p class="copyright">
+          This document is licensed under a
+          <a class="subfoot" href="http://creativecommons.org/licenses/by/3.0/" rel="license">Creative Commons
+          Attribution 3.0 License</a>.
+        </p>
+
+
+
+  <hr>
+</div>
+		<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2>
+			<p>
+				This document is intended to be used as a guideline for the testing
+				activities related to the Compositing and Blending spec [<cite><a class="bibref" href="#bib-compositing-1">compositing-1</a></cite>]. Its main
+				goal is to provide an overview of the general testing areas and an informative
+				description of possible test cases.
+			</p>
+			<p>
+				This document is not meant to replace the spec in determining the
+				normative and non-normative assertions to be tested, but rather
+				complement it.
+			</p>
+		</section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
+
+    <p>
+      This document is merely a public working draft of a potential specification. It has
+      no official standing of any kind and does not represent the support or consensus of any
+      standards organisation.
+    </p>
+
+
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#goals" class="tocxref"><span class="secno">1. </span>Goals</a><ul class="toc"><li class="tocline"><a href="#providing-guidance-on-testing" class="tocxref"><span class="secno">1.1 </span>Providing guidance on testing</a></li><li class="tocline"><a href="#creating-automation-friendly-tests" class="tocxref"><span class="secno">1.2 </span>Creating automation-friendly tests</a></li></ul></li><li class="tocline"><a href="#approach" class="tocxref"><span class="secno">2. </span>Approach</a></li><li class="tocline"><a href="#testing-areas" class="tocxref"><span class="secno">3. </span>Testing areas</a><ul class="toc"><li class="tocline"><a href="#explicit-testing-areas" class="tocxref"><span class="secno">3.1 </span>Explicit testing areas</a></li><li class="tocline"><a href="#implicit-testing-areas" class="tocxref"><span class="secno">3.2 </span>Implicit testing areas</a></li></ul></li><li class="tocline"><a href="#test-cases-description" class="tocxref"><span class="secno">4. </span>Test cases description</a><ul class="toc"><li class="tocline"><a href="#test-cases-for-mix-blend-mode" class="tocxref"><span class="secno">4.1 </span>Test cases for <code>mix-blend-mode</code></a><ul class="toc"><li class="tocline"><a href="#an-element-with-mix-blend-mode-other-than-normal-creates-a-stacking-context" class="tocxref"><span class="secno">4.1.1 </span>An element with <code>mix-blend-mode</code> other than normal creates a stacking context</a></li><li class="tocline"><a href="#an-element-with-mix-blend-mode-blends-with-the-content-within-the-current-stacking-context" class="tocxref"><span class="secno">4.1.2 </span>An element with <code>mix-blend-mode</code> blends with the content within the current stacking context</a></li><li class="tocline"><a href="#an-element-with-mix-blend-mode-doesn-t-blend-with-anything-outside-the-current-stacking-context" class="tocxref"><span class="secno">4.1.3 </span>An element with <code>mix-blend-mode</code> doesn't blend with anything outside the current stacking context</a></li><li class="tocline"><a href="#an-element-with-mix-blend-mode-other-than-normal-must-cause-a-group-to-be-isolated" class="tocxref"><span class="secno">4.1.4 </span>An element with <code>mix-blend-mode</code> other than normal must cause a group to be isolated</a></li><li class="tocline"><a href="#an-element-with-mix-blend-mode-must-work-properly-with-css-transforms" class="tocxref"><span class="secno">4.1.5 </span>An element with <code>mix-blend-mode</code> must work properly with css transforms</a></li><li class="tocline"><a href="#an-element-with-mix-blend-mode-must-work-properly-with-elements-with-overflow-property" class="tocxref"><span class="secno">4.1.6 </span>An element with <code>mix-blend-mode</code> must work properly with elements with <code>overflow</code> property</a></li><li class="tocline"><a href="#other-test-cases" class="tocxref"><span class="secno">4.1.7 </span>Other test cases</a></li></ul></li><li class="tocline"><a href="#test-cases-for-svg-elements-with-mix-blend-mode" class="tocxref"><span class="secno">4.2 </span>Test cases for SVG elements with <code>mix-blend-mode</code></a><ul class="toc"><li class="tocline"><a href="#mix-blend-mode-with-simple-svg-graphical-elements" class="tocxref"><span class="secno">4.2.1 </span><code>mix-blend-mode</code> with simple SVG graphical elements</a></li><li class="tocline"><a href="#mix-blend-mode-with-svg-groups" class="tocxref"><span class="secno">4.2.2 </span><code>mix-blend-mode</code> with SVG groups</a></li><li class="tocline"><a href="#mix-blend-mode-with-isolated-groups" class="tocxref"><span class="secno">4.2.3 </span><code>mix-blend-mode</code> with isolated groups</a></li><li class="tocline"><a href="#other-test-cases-for-svg" class="tocxref"><span class="secno">4.2.4 </span>Other test cases for SVG</a></li></ul></li><li class="tocline"><a href="#test-cases-for-background-blend-mode" class="tocxref"><span class="secno">4.3 </span>Test cases for <code>background-blend-mode</code></a><ul class="toc"><li class="tocline"><a href="#blending-between-the-background-layers-and-the-background-color-for-an-element-with-background-blend-mode" class="tocxref"><span class="secno">4.3.1 </span>Blending between the background layers and the background color for an element with <code>background-blend-mode</code> </a></li><li class="tocline"><a href="#background-layers-do-not-blend-with-content-outside-the-background-or-behind-the-element" class="tocxref"><span class="secno">4.3.2 </span>Background layers do not blend with content outside the background (or behind the element)</a></li><li class="tocline"><a href="#background-blend-mode-list-values-apply-to-the-corresponding-background-layer" class="tocxref"><span class="secno">4.3.3 </span> <code>background-blend-mode</code> list values apply to the corresponding background layer</a></li><li class="tocline"><a href="#background-blend-mode-list-values-are-repeated-if-the-list-is-shorter-than-the-background-layer-list" class="tocxref"><span class="secno">4.3.4 </span><code>background-blend-mode</code> list values are repeated if the list is shorter than the background layer list</a></li><li class="tocline"><a href="#the-default-background-blend-mode-value-for-the-background-shorthand-is-normal" class="tocxref"><span class="secno">4.3.5 </span>The default <code>background-blend-mode</code> value for the <code>background</code> shorthand is 'normal' </a></li><li class="tocline"><a href="#background-blend-mode-for-an-element-with-background-position" class="tocxref"><span class="secno">4.3.6 </span><code>background-blend-mode</code> for an element with <code>background-position</code></a></li><li class="tocline"><a href="#background-blend-mode-for-an-element-with-background-size" class="tocxref"><span class="secno">4.3.7 </span><code>background-blend-mode</code> for an element with <code>background-size</code></a></li><li class="tocline"><a href="#background-blend-mode-for-an-element-with-background-repeat" class="tocxref"><span class="secno">4.3.8 </span><code>background-blend-mode</code> for an element with <code>background-repeat</code></a></li><li class="tocline"><a href="#background-blend-mode-for-an-element-with-background-clip" class="tocxref"><span class="secno">4.3.9 </span><code>background-blend-mode</code> for an element with <code>background-clip</code></a></li><li class="tocline"><a href="#background-blend-mode-for-an-element-with-background-origin" class="tocxref"><span class="secno">4.3.10 </span><code>background-blend-mode</code> for an element with <code>background-origin</code></a></li><li class="tocline"><a href="#background-blend-mode-for-an-element-with-background-attachement" class="tocxref"><span class="secno">4.3.11 </span><code>background-blend-mode</code> for an element with <code>background-attachement</code></a></li></ul></li><li class="tocline"><a href="#test-cases-for-isolation" class="tocxref"><span class="secno">4.4 </span>Test cases for <code>isolation</code></a><ul class="toc"><li class="tocline"><a href="#an-element-with-isolation-isolate-creates-a-stacking-context" class="tocxref"><span class="secno">4.4.1 </span>An element with <code>isolation:isolate</code> creates a stacking context</a></li><li class="tocline"><a href="#an-element-with-isolation-isolate-creates-an-isolated-group-for-blended-children" class="tocxref"><span class="secno">4.4.2 </span>An element with <code>isolation:isolate</code> creates an isolated group for blended children</a></li><li class="tocline"><a href="#an-element-with-isolation-auto-set-does-not-change-the-elements-existing-stacking-context-behavior" class="tocxref"><span class="secno">4.4.3 </span>An element with <code>isolation:auto</code> set does not change the elements existing stacking context behavior</a></li></ul></li><li class="tocline"><a href="#test-cases-for-isolation-in-svg" class="tocxref"><span class="secno">4.5 </span>Test cases for <code>isolation</code> in SVG</a><ul class="toc"><li class="tocline"><a href="#in-svg-an-element-with-isolation-isolate-creates-an-isolated-group-for-blended-children" class="tocxref"><span class="secno">4.5.1 </span>In SVG, an element with <code>isolation:isolate</code> creates an isolated group for blended children</a></li><li class="tocline"><a href="#in-svg-an-element-with-isolation-auto-set-does-not-change-the-rendering-behaviour" class="tocxref"><span class="secno">4.5.2 </span>In SVG, an element with <code>isolation:auto</code> set does not change the rendering behaviour</a></li></ul></li></ul></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">A. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">A.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">A.2 </span>Informative references</a></li></ul></li></ul></section>
+		<section id="goals">
+			<!--OddPage--><h2 aria-level="1" role="heading" id="h2_goals"><span class="secno">1. </span>Goals</h2>
+			<section id="providing-guidance-on-testing">
+				<h3 aria-level="2" role="heading" id="h3_providing-guidance-on-testing"><span class="secno">1.1 </span>Providing guidance on testing</h3>
+				<p>
+					In order to increase the quality of the test contributions, this
+					document offers a set of test cases description for conducting testing (see
+					<a href="#test-cases-description" class="sectionRef sec-ref">section <span class="secno">4.</span> <span class="sec-title">Test cases description</span></a>).
+				</p>
+			</section>
+			<section id="creating-automation-friendly-tests">
+				<h3 aria-level="2" role="heading" id="h3_creating-automation-friendly-tests"><span class="secno">1.2 </span>Creating automation-friendly tests</h3>
+				<p>
+					In terms of actual tests produced for the CSS Compositing and Blending, the main goal
+					is to ensure that most tests are automatable (i.e. they're either
+					reftests or use <code>testharness.js</code>). Even where manual tests
+					are absolutely necessary they should be written so that they can be
+					easily automated – as there are on-going efforts to make
+					WebDriver [<cite><a class="bibref" href="#bib-webdriver">webdriver</a></cite>] automated tests a first class citizen in W3C
+					testing. This means that even if a manual test requires user
+					interaction, the validation or PASS/FAIL conditions should still be
+					clear enough as to allow automatic validation if said interaction is
+					later automated.
+				</p>
+			</section>
+		</section>
+		<section id="approach">
+			<!--OddPage--><h2 aria-level="1" role="heading" id="h2_approach"><span class="secno">2. </span>Approach</h2>
+			<p>
+				Since CSS blending has only three new CSS properties,
+				the approach is to deep dive into every aspect of the spec as much as possible.
+
+				Tests will be created for the testing areas listed in <a href="#testig-areas" class="sectionRef"></a>
+				and having as guidance the test cases description from <a href="#test-cases-description" class="sectionRef sec-ref">section <span class="secno">4.</span> <span class="sec-title">Test cases description</span></a>.
+			</p>
+		</section>
+		<section id="testing-areas">
+			<!--OddPage--><h2 aria-level="1" role="heading" id="h2_testing-areas"><span class="secno">3. </span>Testing areas</h2>
+			<section id="explicit-testing-areas">
+				<h3 aria-level="2" role="heading" id="h3_explicit-testing-areas"><span class="secno">3.1 </span>Explicit testing areas</h3>
+					<p>
+					  These testing areas cover things explicitly defined in the normative sections of the Blending and Compositing spec. Please note that while detailed, this list is not necessarily
+					  exhaustive and some normative behaviors may not be contained in it.
+					  When in doubt, consult the Blending and Compositing spec or ask a question on the
+					  <a href="http://lists.w3.org/Archives/Public/www-style/">mailing
+					  list</a>.
+					</p>
+				<p>Below is the list of explicit testing areas:</p>
+				<ol>
+					<li>Proper parsing of the CSS properties and rendering according to the spec
+						<ul><code>mix-blend-mode</code></ul>
+						<ul><code>isolation</code></ul>
+						<ul><code>background-blend-mode</code></ul>
+					</li>
+					<li>SVG blending</li>
+					<li>Canvas 2D blending</li>
+				</ol>
+			</section>
+			<section id="implicit-testing-areas">
+				<h3 aria-level="2" role="heading" id="h3_implicit-testing-areas"><span class="secno">3.2 </span>Implicit testing areas</h3>
+				<p>
+				  These are testing areas either normatively defined in other specs
+				  that explicitly refer to the Blending and Compositing spec (e.g. [<cite><a class="bibref" href="#bib-css3-transforms">css3-transforms</a></cite>])
+				  or simply not explicitly defined, but implied by various aspects of
+				  the spec (e.g. processing model, CSS 2.1 compliance, etc.).
+				  Please note that while detailed, this list is not necessarily
+				  exhaustive and some normative behaviors may not be contained in it.
+				  When in doubt, consult the Blending and Compositing spec or ask a question on the
+				  <a href="http://lists.w3.org/Archives/Public/www-style/">mailing
+				  list</a>.
+				</p>
+				<p>Below is the list of implicit testing areas:</p>
+				<ol>
+					<li>Blending different types of elements
+						<ul>
+							<li><code>&lt;video&gt;</code></li>
+							<li><code>&lt;canvas&gt;</code></li>
+							<li><code>&lt;table&gt;</code></li>
+							</ul>
+					</li>
+					<li>Blending elements with specific style rules applied
+						<ul>
+							<li><code>transforms</code></li>
+							<li><code>transitions</code> </li>
+							<li><code>animations</code> </li>
+						</ul>
+					</li>
+				</ol>
+			</section>
+		</section>
+		<section id="test-cases-description">
+				<!--OddPage--><h2 aria-level="1" role="heading" id="h2_test-cases-description"><span class="secno">4. </span>Test cases description</h2>
+				<section id="test-cases-for-mix-blend-mode">
+					<h3 aria-level="2" role="heading" id="h3_test-cases-for-mix-blend-mode"><span class="secno">4.1 </span>Test cases for <code>mix-blend-mode</code></h3>
+					<p>
+						The following diagram describes a list of notations to be used later on in the document as well as the general document structure the test cases will follow. The test cases should not be limited to this structure. This should be a wireframe and people are encouraged to come up with complex test cases as well.
+					</p>
+					<p>
+						<img id="test_outline" src="test_template.png" alt="Mix-blend-mode sample elements">
+					</p>
+					<p>The intended structure of the document is the following:</p>
+						<pre>&lt;body&gt;
+  &lt;div id="[P]"&gt;
+    &lt;div id="[IN-S]"&gt;&lt;/div&gt;
+    &lt;div id="[IN-P]"&gt;
+      &lt;div id="[B]"&gt;
+        &lt;div id="[CB]"&gt;&lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+						</pre>
+					<p> Unless otherwise stated, test cases assume the following properties for the elements: <br>
+						</p><ul>
+						<li> default value for the <code>background-color</code> of the <code>body</code></li>
+						<li> <code>background-color</code> set to a fully opaque color for all the other elements </li>
+						</ul>
+					<p></p>
+					<p>The CSS associated to the elements used in the tests shouldn't use properties that creates a stacking context, except the ones specified in the test case descriptions.</p>
+					<p><a href="http://www.w3.org/TR/CSS2/visuren.html#propdef-z-index">Here you can find a description of stacking contexts.</a> Note that z-index applied to positioned elements creates a stacking context. This means that for [P], we must set the z-index and position (absolute, for example) properties to make sure it creates the stacking context.</p>
+					<p>Every test case has a description of the elements used. The notation from the image is used in the test case description too (e.g. for parent element the notation is [P]). Each test case uses only a subset of the elements while the other elements should just be removed.
+					</p><p></p>
+					<section id="an-element-with-mix-blend-mode-other-than-normal-creates-a-stacking-context">
+						<h4 aria-level="3" role="heading" id="h4_an-element-with-mix-blend-mode-other-than-normal-creates-a-stacking-context"><span class="secno">4.1.1 </span>An element with <code>mix-blend-mode</code> other than normal creates a stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">spec</a>: <q>Applying a blendmode other than ‘normal’ to the element must establish a new stacking context [CSS21].</q></p>
+						<table>
+							<tbody><tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Simple <code>&lt;div&gt;</code></td>
+								<td>1 element required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								 </td>
+								<td>The element [B] creates a stacking context</td>
+							</tr>
+						</tbody></table>
+					</section>
+					<section id="an-element-with-mix-blend-mode-blends-with-the-content-within-the-current-stacking-context">
+						<h4 aria-level="3" role="heading" id="h4_an-element-with-mix-blend-mode-blends-with-the-content-within-the-current-stacking-context"><span class="secno">4.1.2 </span>An element with <code>mix-blend-mode</code> blends with the content within the current stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q>An element that has blending applied, must blend with all the underlying content of the stacking context [CSS21] that that element belongs to.</q><br>
+						This section tests if the blending operation is performed. </p>
+						<table>
+							<tbody><tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Blending simple elements </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B].</td>
+							</tr>
+							<tr>
+								<td>Blending with a sibling</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling of the element [B] <br>
+									The [IN-S] element visually overlaps the [B] element
+								</td>
+								<td>The colors of the parent element [P] and the sibling element [IN-S] mixes with the color of the blended element [B].</td>
+							</tr>
+							<tr>
+								<td>Blending with two levels of ascendants</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-P] - Intermediate child element between the parent [P] and the child [B]
+								</td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B].</td>
+							</tr>
+						</tbody></table>
+					</section>
+					<section id="an-element-with-mix-blend-mode-doesn-t-blend-with-anything-outside-the-current-stacking-context">
+						<h4 aria-level="3" role="heading" id="h4_an-element-with-mix-blend-mode-doesn-t-blend-with-anything-outside-the-current-stacking-context"><span class="secno">4.1.3 </span>An element with <code>mix-blend-mode</code> doesn't blend with anything outside the current stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q> An element that has blending applied, must blend with all the underlying content of the stacking context [CSS21] that that element belongs to.</q> <br>
+						This section tests if the isolation is performed. </p>
+						<table>
+							<tbody><tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Blending child overflows the parent</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									The blending element [B] has content that lies outside the parent element. <br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default</td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									 The area of the child element outside of the parent element doesn't mix with the color of the <code>body</code></td>
+							</tr>
+							<tr>
+								<td>Parent with transparent pixels</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									The element has some text inside and default value for <code>background-color</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									The <code>background-color</code> of the <code>body</code> has a value other than default</td>
+								<td>The color of the text from the parent element [P] mixes with the color of the child element [B]. <br>
+								No blending between the color of the <code>body</code> and the color of the blending element [B].
+								 </td>
+							</tr>
+							<tr>
+								<td>Parent with <code>border-radius</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[P] has <code>border-radius</code> specified (e.g.50%). <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal <br>
+										[B] has content that lies outside the parent element, over a rounded corner. <br>
+										The <code>background-color</code> of the <code>body</code> has a value other than default. </td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									 The area of the child element which draws over the rounded corner doesn't mix with the color of the <code>body</code></td>
+							</tr>
+						</tbody></table>
+					</section>
+					<section id="an-element-with-mix-blend-mode-other-than-normal-must-cause-a-group-to-be-isolated">
+						<h4 aria-level="3" role="heading" id="h4_an-element-with-mix-blend-mode-other-than-normal-must-cause-a-group-to-be-isolated"><span class="secno">4.1.4 </span>An element with <code>mix-blend-mode</code> other than normal must cause a group to be isolated</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#isolation">spec</a>: <q>operations that cause the creation of stacking context [CSS21] must cause a group to be isolated.</q> <br>
+						The following section also tests that mix-blend-mode is not inheritable. If you set mix-blend-mode on a parent, the child should not blend with the parent. Instead, the whole group should blend as a whole, using the parent's blending operator.</p>
+						<table>
+							<tbody><tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Child of the blended element has opacity</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[CB] - child of the element [B] with <code>opacity</code> less than one. </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]</td>
+							</tr>
+							<tr>
+								<td>Overflowed child of the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal <br>
+										[CB] - child of the element [B] with content that lies outside the parent element [B].
+								</td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]. There is only one color for the entire element [CB] </td>
+							</tr>
+							<tr>
+								<td>Blended element with transparent pixels</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and transparent <code>background-color</code> <br>
+									[CB] - child of the element [B]
+								</td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]. </td>
+							</tr>
+						</tbody></table>
+					</section>
+					<section id="an-element-with-mix-blend-mode-must-work-properly-with-css-transforms">
+						<h4 aria-level="3" role="heading" id="h4_an-element-with-mix-blend-mode-must-work-properly-with-css-transforms"><span class="secno">4.1.5 </span>An element with <code>mix-blend-mode</code> must work properly with css transforms</h4>
+						<table>
+							<tbody><tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Parent with 3D transform</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								</td><td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Blended element with 3D transform</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>3D transform</code> <br>
+									[CB] - child of the element [B] </td>
+								<td> The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed </td>
+							</tr>
+							<tr>
+								<td>Both parent and blended element with 3D transform</td>
+								<td> 2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>3D transform</code>
+								</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The elements (and the content) of the elements [P]  and [B] are properly transformed</td>
+							</tr>
+							<tr>
+								<td>Blended element should force transform-style to flat</td>
+								<td>1 element required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>transform-style</code>.
+								 </td>
+								<td>For each value of the <code>transform-style</code> (<code>preserve-3d</code> or <code>flat</code>), [B]'s computed value of <code>transform-style</code> is equal to <code>flat</code></td>
+							</tr>
+							<tr>
+								<td>Blended element with transform and preserve-3d</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal and transform with <code>transform-style:preserve-3d</code> <br>
+										[CB] - child of the element [B]. It has 3D transform property</td>
+								<td> The child element [CB] will NOT preserve its 3D position. <br>
+								<code>mix-blend-mode</code> override the behavior of <code>transform-style:preserve-3d</code>:
+								creates a flattened representation of the descendant elements <br>
+								The color of the group created by the child elements([B] and [CB]) will blend with the color of the parent element [P] </td>
+							</tr>
+							<tr>
+								<td>Blended element with transform and perspective</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal and transform with <code>perspective</code> set to positive length </td>
+								<td>The colors of the parent and the child are mixed ([P] and [B]) <br>
+									The element (and the content) of the element [B] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Sibling with 3D transform between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - Sibling(of the element [B]) with <code>3D transform</code> between the parent [P] and the child [B]
+									 </td>
+								<td>The colors of the parent element [P] and the transformed sibling element [IN-S] mixes with the color of the blended element [B].<br>
+								The element (and the content) of the element [IN-S] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Parent with 3D transform and transition</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> and transition <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								</td><td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Sibling with 3D transform(and transition) between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) with <code>3D transform</code> and transition between the parent [P] and the child [B]
+									 </td>
+								<td>The colors of the parent element [P] and the transformed sibling element [IN-S] mixes with the color of the blended element [B].<br>
+								The element (and the content) of the element [IN-S] is properly transformed
+								</td>
+							</tr>
+						</tbody></table>
+					</section>
+					<section id="an-element-with-mix-blend-mode-must-work-properly-with-elements-with-overflow-property">
+						<h4 aria-level="3" role="heading" id="h4_an-element-with-mix-blend-mode-must-work-properly-with-elements-with-overflow-property"><span class="secno">4.1.6 </span>An element with <code>mix-blend-mode</code> must work properly with elements with <code>overflow</code> property</h4>
+						<table>
+							<tbody><tr>
+								<td>Parent element with <code>overflow:scroll</code> </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:scroll</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal tat overflows the parents [P] dimensions so that it creates scrolling for the parent
+								</td><td>The color of the parent element [P] mixes with the color of the child element [B]. <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:scroll</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>overflow:scroll</code> and a child element that creates overflow for [B]</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Parent element with <code>overflow:scroll</code> and blended with <code>position:fixed</code> </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:scroll</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>position:fixed</code> and should overflow the parents [P] dimensions so that it creates scrolling for the parent</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The blending happens when scrolling the content of the parent element [P] too. <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+
+							<tr>
+								<td>Parent with <code>overflow:hidden</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:hidden</code><br>
+									[B] - element with <code>mix-blend-mode</code> other than normal with content that lies outside the parent element<br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default.</td>
+								<td>The color of the parent element mixes with the color of the child element.</td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:hidden</code></td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the element [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>overflow:hidden</code>. <br>
+									[CB] - child of the element [B], with content that lies outside the parent element. <br> </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+									No blending between [B] and [CB]. <br>
+									[CB] is properly clipped so no overflow is visible.</td>
+							</tr>
+							<tr>
+								<td>Intermediate child with <code>overflow:hidden</code>between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal that overflows the parents [IN-P] dimensions
+									[IN-P] - child(of the element [P]) with <code>overflow:hidden</code>
+								</td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B]. <br>
+									[B] is is properly clipped so no overflow is visible
+								</td>
+							</tr>
+
+							<tr>
+								<td>Parent with <code>overflow:hidden</code> and <code>border-radius</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal with content that lies outside the parent element, over a rounded corner <br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default.</td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									The area of the child element which draws over the rounded corner is properly cut </td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:hidden</code> and <code>border-radius</code></td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the element [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%). <br>
+									[CB] - child of the element [B], with content that lies outside the parent element, over a rounded corner. <br> </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+									No blending between [B] and [CB]. <br>
+									[CB] is properly clipped so no overflow is visible.</td>
+							</tr>
+							<tr>
+								<td>Intermediate child with <code>overflow:hidden</code> and <code>border-radius</code> between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal that overflows the parents [IN-P] dimensions
+									[IN-P] - child(of the element [P]) with <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%)
+									 </td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B]. <br>
+									[B] is is properly clipped so no overflow is visible
+								</td>
+							</tr>
+						</tbody></table>
+					</section>
+				<section id="other-test-cases">
+					<h4 aria-level="3" role="heading" id="h4_other-test-cases"><span class="secno">4.1.7 </span>Other test cases</h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blended element with <code>border-image</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>border-image</code> specified as a png file
+							</td>
+							<td>The color of the parent element [P] mixes with the color of the child element. <br>
+								The color of the <code>border-image</code> mixes with the color of the parent element [P].
+							</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;canvas&gt;</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+								[B] - <code>&lt;canvas&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+								[IN-S] - Sibling of the <code>&lt;canvas&gt;</code> element with some text <br>
+								The [IN-S] element overlaps the <code>&lt;canvas&gt;</code> element
+							</td>
+							<td>The content of the <code>&lt;canvas&gt;</code> element mixes with the color of the sibling element and the text [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;canvas&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - Child <code>&lt;canvas&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;canvas&gt;</code> element [B] mixes with the color of the parent element [P] .</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;video&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+								[B] - <code>&lt;video&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+								[IN-S] - sibling(of the element [B]) visually overlaping the <code>&lt;video&gt;</code> element <br>
+								[IN-S] has some text inside
+						</td>
+							<td>The content of the <code>video</code> element [B] mixes with the colors of the sibling element and the text from [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;video&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;video&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;video&gt;</code> element mixes with the color of the parent element [P] .</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;iframe&gt;</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[B] - <code>&lt;iframe&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) with some text <br>
+									The [IN-S] element visually overlaps the <code>&lt;iframe&gt;</code> element
+							</td>
+							<td>The color of the <code>&lt;iframe&gt;</code> element mixes with the color of the sibling element and the text [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;iframe&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;iframe&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;iframe&gt;</code> element [B] mixes with the color of the parent element [P]. </td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>mask</code> property</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>mask</code> property specified to an SVG image (e.g. circle)</td>
+							<td>The colors of the parent and the masked child are mixed ([P] and [B])</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>clip-path</code> property </td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>clip-path</code> property specified to a basic shape (e.g. ellipse)</td>
+							<td>The colors of the parent and the clipped child are mixed ([P] and [B])</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>filter</code> property</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>filter</code> property value other than none </td>
+							<td>The filter is applied and the result is mixed with the parent element</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>transition</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>transition-property</code> for <code>opacity</code> </td>
+							<td>The transition is applied and the result is mixed with the parent element</td>
+						</tr>
+							<tr>
+							<td>Blended element with <code>animation</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>animation</code> specified</td>
+							<td>The animation is applied to the child element and the result is mixed with the parent element</td>
+						</tr>
+						<tr>
+							<td>Blending with Image</td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+								[B] - <code>&lt;img&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+								[IN-S] - Sibling of the <code>&lt;img&gt;</code> element<br>
+								The [IN-S] element overlaps the <code>&lt;img&gt;</code> element
+							</td>
+							<td>The content of the <code>&lt;img&gt;</code> element mixes with the color of the sibling element [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended Image</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;img&gt;</code> element (.jpeg or .gif image) with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the <code>&lt;img&gt;</code> is mixed with the color of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Blending with SVG</td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+								[B] - <code>&lt;svg&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+								[IN-S] - Sibling of the <code>&lt;svg&gt;</code> element<br>
+								The [IN-S] element overlaps the <code>&lt;svg&gt;</code> element
+							</td>
+							<td>The content of the <code>&lt;svg&gt;</code> element mixes with the color of the sibling element [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended SVG</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - SVG element with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the SVG is mixed with the color of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Linking SVG in an image</td>
+							<td>1 element required: <a href="#test_outline" <a href="#test_outline" title="img element">[B]</a> <br>
+								[B] - <code>img</code> linking an <code>svg</code> element that has content with <code>mix-blend-mode</code>. <br>
+								Set the <code>background-color</code> of the <code>body</code> to a value other than default.
+							</td>
+							<td>The contents of the SVG is not mixed with the color of the <code>&lt;body&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Paragraph element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - paragraph element with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the text from the paragraph element is mixed with the color of the <code>&lt;div&gt;</code></td>
+						</tr>
+						<tr>
+							<td>Paragraph element and background-image</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								 and  <code>background-image</code> <br>
+								[B] - Child <code>p</code> element with some text and <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the text from the <code>p</code> element is mixed with the background image of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Set blending from JavaScript</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - Child <code>&lt;div&gt;</code> element with no <code>mix-blend-mode</code> specified<br>
+								From JavaScript, set the <code>mix-blend-mode</code> property for the child <code>&lt;div&gt;</code> to a value other than normal</td>
+							<td>The colors of the <code>&lt;div&gt;</code> elements are mixed.</td>
+						</tr>
+					</tbody></table>
+				</section>
+			</section>
+			<section id="test-cases-for-svg-elements-with-mix-blend-mode">
+				<h3 aria-level="2" role="heading" id="h3_test-cases-for-svg-elements-with-mix-blend-mode"><span class="secno">4.2 </span>Test cases for SVG elements with <code>mix-blend-mode</code></h3>
+				<section id="mix-blend-mode-with-simple-svg-graphical-elements">
+					<h4 aria-level="3" role="heading" id="h4_mix-blend-mode-with-simple-svg-graphical-elements"><span class="secno">4.2.1 </span><code>mix-blend-mode</code> with simple SVG graphical elements</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">spec</a> : <q><code>mix-blend-mode</code> applies to svg, g, use, image, path, rect, circle, ellipse, line, polyline, polygon, text, tspan, and marker.</q></p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Circle with SVG background</td>
+							<td>Set a background color for the SVG.<br>
+								Create 16 <code>circle</code> elements and fill them with a solid color.
+								<br>Apply each <code>mix-blend-mode</code> on them.</td>
+							<td>The color of the <code>circle</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Ellipse with SVG background</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>ellipse</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>ellipse</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Image with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create an <code>image</code> element and apply a <code>mix-blend-mode</code> other than <code>normal</code>.</td>
+							<td>The <code>image</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Line with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>line</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>line</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Path with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>path</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>path</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Polygon with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>polygon</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>polygon</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Polyline with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>polyline</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>polyline</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Rect with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>rect</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Text with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>text</code> element and apply a <code>mix-blend-mode</code> other than <code>normal</code>.</td>
+							<td>The text is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Text having tspan with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>text</code> element and a <code>tspan</code> inside it.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>tspan</code>.</td>
+							<td>The text is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Gradient with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a <code>gradient</code>.
+								<br>Apply a <code>mix-blend-mode</code> on it other than normal.</td>
+							<td>The gradient is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Pattern with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a <code>pattern</code>.
+								<br>Apply a <code>mix-blend-mode</code> on it other than normal.</td>
+							<td>The pattern is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Set blending on an element from JavaScript</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> (other than <code>normal</code>) on it from JavaScript.</td>
+							<td>The color of the <code>rect</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Marker with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>line</code> element containing a marker.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The marker color is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Metadata with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>metadata</code> element containing an embedded pdf.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The metadata content is not mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>ForeignObject with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>foreignObject</code> element containing a simple xhtml file.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The foreignObject content is not mixed with the color of the background.</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="mix-blend-mode-with-svg-groups">
+					<h4 aria-level="3" role="heading" id="h4_mix-blend-mode-with-svg-groups"><span class="secno">4.2.2 </span><code>mix-blend-mode</code> with SVG groups</h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Group of overlapping elements with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the group.</td>
+							<td>The <code>group</code> is mixed as a whole with the color of the background.</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="mix-blend-mode-with-isolated-groups">
+					<h4 aria-level="3" role="heading" id="h4_mix-blend-mode-with-isolated-groups"><span class="secno">4.2.3 </span><code>mix-blend-mode</code> with isolated groups</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">spec</a>:
+					<br><q>By default, every element must create a non-isolated group.<br>
+						However, certain operations in SVG will create isolated groups.<br>
+						If one of the following features is used, the group must become isolated:
+						</q></p><ul>
+						    <li>opacity</li>
+						    <li>filters</li>
+						    <li>3D transforms (2D transforms must NOT cause isolation)</li>
+						    <li>blending</li>
+						    <li>masking</li>
+						</ul>
+
+					<p></p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending two elements in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the second rect.</td>
+							<td>Only the intersection of the <code>rect</code> elements should mix.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with filter</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>filter</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with 2D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>transform</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with 3D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a 3d transform on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with a mask</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>mask</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with mix-blend-mode</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="other-test-cases-for-svg">
+					<h4 aria-level="3" role="heading" id="h4_other-test-cases-for-svg"><span class="secno">4.2.4 </span>Other test cases for SVG</h4>
+					<table>
+						<tbody><tr>
+							<td>Blend with element having opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke-opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke</code>, <code>stroke-opacity</code> less than 1 and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke-dasharray</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke-dasharray</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>transform</code> (any combination of <code>translate</code>, <code>rotate</code>, <code>scale</code>, <code>skew</code>) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with SVG having viewbox and preserveAspectRatio set</td>
+							<td>Set a background color for the SVG, as well as <code>viewbox</code> and <code>preserveAspectRatio</code>.<br>
+								Create a <code>rect</code> element filled with a different solid color and apply a <code>mix-blend-mode</code> other than <code>normal</code> on it.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having color-profile set</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>color-profile</code> (<code>sRGB</code>, for example) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having overflow</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> larger than the SVG.<br>
+								Apply <code>overflow</code> (<code>visible</code>, <code>hidden</code>, <code>scroll</code>) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having clip-path</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>clip-path</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having a mask</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element.<br>
+								Apply a <code>mask</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having a filter</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element.<br>
+								Apply a <code>filter</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an animated element</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply an <code>animateTransform</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Set blending from an SVG script element</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element and fill it with a solid color.<br>
+								Apply a <code>mix-blend-mode</code> (other than <code>normal</code>) on it from an svg <code>script</code> element.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+					</tbody></table>
+				</section>
+			</section>
+			<section id="test-cases-for-background-blend-mode">
+				<h3 aria-level="2" role="heading" id="h3_test-cases-for-background-blend-mode"><span class="secno">4.3 </span>Test cases for <code>background-blend-mode</code></h3>
+				<section id="blending-between-the-background-layers-and-the-background-color-for-an-element-with-background-blend-mode">
+					<h4 aria-level="3" role="heading" id="h4_blending-between-the-background-layers-and-the-background-color-for-an-element-with-background-blend-mode"><span class="secno">4.3.1 </span>Blending between the background layers and the background color for an element with <code>background-blend-mode</code> </h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>Each background layer must blend with the element's background layer that are below it and the element's background color.</q></p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Images with different formats</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+								Tests should be created for <code>&lt;image&gt;</code> with different formats such as PNG, JPEG or SVG
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Gradient and background color</td>
+							<td>
+								Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;gradient&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Image and gradient</td>
+							<td>
+								Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> on top of a <code>&lt;gradient&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>&lt;image&gt;</code> is mixed with the content of the <code>&lt;gradient&gt;</code>
+							</td>
+						</tr>
+						<tr>
+							<td>Gradient and image</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>&lt;gradient&gt;</code> on top of an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>&lt;image&gt;</code> is mixed with the content of the <code>&lt;gradient&gt;</code></td>
+						</tr>
+						<tr>
+							<td>Two gradients</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>&lt;gradient&gt;</code> on top of another <code>&lt;gradient&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul></td>
+							<td>The content of the two gradients is mixed</td>
+						</tr>
+						<tr>
+							<td>Two images</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> on top of another <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul></td>
+							<td>The content of the two images is mixed</td>
+						</tr>
+						<tr>
+							<td>Image and background color with transparency</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> with transparency(e.g. PNG images)</li>
+									<li><code>background-color</code> set to a transparent color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Cross-fade image and gradient</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <q>cross-fade()</q> image on top of a <code>&lt;gradient&gt;</code> </li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the cross-faded image is mixed with the content of the <code>&lt;gradient&gt;</code></td>
+						</tr>
+						<tr>
+							<td>SVG image and background color</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a data URI for an SVG image </li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td>Animated gif image and background color</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an animated gif image</li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td>Set <code>background-blend-mode</code> from JavaScript</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>gradient</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li>no <code>background-blend-mode</code> explicitly specified</li>
+									From JavaScript, set the <code>background-blend-mode</code> property to a value other than normal.
+								</ul>
+							</td>
+							<td>The content of the gradient is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td><code>background-blend-mode</code> on element with 3D transform</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+									<li><code>transform</code> set to a 3D function like rotateX, rotateY or translateZ</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-layers-do-not-blend-with-content-outside-the-background-or-behind-the-element">
+					<h4 aria-level="3" role="heading" id="h4_background-layers-do-not-blend-with-content-outside-the-background-or-behind-the-element"><span class="secno">4.3.2 </span>Background layers do not blend with content outside the background (or behind the element)</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>Background layer must not blend with the content that is behind the element instead they must act as if they are rendered into an isolated group.</q>
+					</p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>One background layer</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The <code>background-image</code> is not mixed with anything outside the element</td>
+						</tr>
+						<tr>
+							<td>Two elements</td>
+							<td>2 elements required: a parent element with a child. <br>
+								Each one with the following properties:
+								<ul>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td><td>No blending between the background colors of the two elements</td>
+						</tr>
+						<tr>
+							<td>Parent and child with <code>background-blend-mode</code></td>
+							<td>2 elements required: a parent element with a child <br>
+								Parent properties: <br>
+								<ul>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+								Child properties: <br>
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td><td>The content of the image from the child element does not mixes with the background color from the parent element</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-list-values-apply-to-the-corresponding-background-layer">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-list-values-apply-to-the-corresponding-background-layer"><span class="secno">4.3.3 </span> <code>background-blend-mode</code> list values apply to the corresponding background layer</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>The ‘background-blend-mode’ list must be applied in the same order as ‘background-image’[CSS3BG]. This means that the first element in the list will apply to the layer that is on top.</q>
+					</p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Different blend modes applied between layers</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image-list&gt;</code> containing three images: (e.g. I1, I2 and I3 ) </li>
+									<li><code>background-blend-mode</code> set to different <code>blendmode</code> for every image: (e.g. multiply, difference, screen) </li>
+								</ul></td>
+							<td>The content of the three images is correctly mixed <br>
+							(multiply for I1, difference for I2 and screen for I3)
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-list-values-are-repeated-if-the-list-is-shorter-than-the-background-layer-list">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-list-values-are-repeated-if-the-list-is-shorter-than-the-background-layer-list"><span class="secno">4.3.4 </span><code>background-blend-mode</code> list values are repeated if the list is shorter than the background layer list</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>If a property doesn't have enough comma-separated values to match the number of layers, the UA must calculate its used value by repeating the list of values until there are enough.</q>
+					</p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blend mode list repeat</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image-list&gt;</code> containing three images</li>
+									<li><code>background-blend-mode</code> set to two different <code>blendmode</code> values</li>
+								</ul></td>
+							<td>The unspecified blend modes should be obtained by repeating the blend mode list from the beginning</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="the-default-background-blend-mode-value-for-the-background-shorthand-is-normal">
+					<h4 aria-level="3" role="heading" id="h4_the-default-background-blend-mode-value-for-the-background-shorthand-is-normal"><span class="secno">4.3.5 </span>The default <code>background-blend-mode</code> value for the <code>background</code> shorthand is 'normal' </h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>If the ‘background’ [CSS3BG] shorthand is used, the ‘background-blend-mode’ property for that element must be reset to its initial value.</q>
+					</p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Default blend mode for 'background' shorthand</td>
+							<td>Element with
+								<ul>
+									<li><code>background</code> property set to an image and a color</li>
+									<li>No value explicitly set for <code>background-blend-mode</code> </li>
+								</ul></td>
+							<td> The computed value of <code>background-blend-mode</code> is 'normal'
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-for-an-element-with-background-position">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-for-an-element-with-background-position"><span class="secno">4.3.6 </span><code>background-blend-mode</code> for an element with <code>background-position</code></h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-position</code> percentage</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-position</code> specified in percentage, such as 50% 50%</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> is correctly positioned
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-for-an-element-with-background-size">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-for-an-element-with-background-size"><span class="secno">4.3.7 </span><code>background-blend-mode</code> for an element with <code>background-size</code></h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Background size defined in pixels</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> specified in pixels</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size defined in percentage (second phase)</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> specified in percentage</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size cover</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> set to <code>cover</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size contain</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> set to <code>contain</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-for-an-element-with-background-repeat">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-for-an-element-with-background-repeat"><span class="secno">4.3.8 </span><code>background-blend-mode</code> for an element with <code>background-repeat</code></h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to no-repeat</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>no-repeat</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> is not repeated
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to space</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>space</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to round</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>round</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-for-an-element-with-background-clip">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-for-an-element-with-background-clip"><span class="secno">4.3.9 </span><code>background-blend-mode</code> for an element with <code>background-clip</code></h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-clip</code> set to <code>padding-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-clip</code> set to <code>padding-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							No background is drawn below the border (background extends to the outside edge of the padding)
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-clip</code> set to <code>content-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-clip</code> set to <code>content-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background is painted within (clipped to) the content box
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-for-an-element-with-background-origin">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-for-an-element-with-background-origin"><span class="secno">4.3.10 </span><code>background-blend-mode</code> for an element with <code>background-origin</code></h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-origin</code> set to <code>border-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-origin</code> set to <code>border-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background extends to the outside edge of the border (but underneath the border in z-ordering)
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-origin</code> set to <code>content-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-origin</code> set to <code>content-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background is painted within (clipped to) the content box
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="background-blend-mode-for-an-element-with-background-attachement">
+					<h4 aria-level="3" role="heading" id="h4_background-blend-mode-for-an-element-with-background-attachement"><span class="secno">4.3.11 </span><code>background-blend-mode</code> for an element with <code>background-attachement</code></h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-attachment</code> set to <code>fixed</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-attachment</code> set to <code>fixed</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background image will not scroll with its containing element, instead remaining stationary within the viewport
+							</td>
+						</tr>
+						<tr>
+							<td>2 background images with <code>background-attachment</code> set to <code>fixed, scroll</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to 2 <code>&lt;image&gt;</code>(s)</li>
+									<li><code>background-attachment</code> set to <code>fixed, scroll</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The background images will be mixed when they overlap while scrolling
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+		</section>
+			<section id="test-cases-for-isolation">
+				<h3 aria-level="2" role="heading" id="h3_test-cases-for-isolation"><span class="secno">4.4 </span>Test cases for <code>isolation</code></h3>
+				<section id="an-element-with-isolation-isolate-creates-a-stacking-context">
+					<h4 aria-level="3" role="heading" id="h4_an-element-with-isolation-isolate-creates-a-stacking-context"><span class="secno">4.4.1 </span>An element with <code>isolation:isolate</code> creates a stacking context</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q>For CSS, setting ‘isolation’ to ‘isolate’ will turn the element into a stacking context [CSS21].</q></p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation isolate</td>
+							<td>Have an element with <code>isolation</code> set to <code>isolate</code></td>
+							<td>The element creates a stacking context.</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="an-element-with-isolation-isolate-creates-an-isolated-group-for-blended-children">
+					<h4 aria-level="3" role="heading" id="h4_an-element-with-isolation-isolate-creates-an-isolated-group-for-blended-children"><span class="secno">4.4.2 </span>An element with <code>isolation:isolate</code> creates an isolated group for blended children</h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation of blended child which overflows</td>
+							<td>3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								This element has <code>isolation:isolate</code> set.<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code> <br>
+								The blending element [B] has content that lies outside the parent element. <br>
+							</td>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								The area of the child element outside of the intermediate parent element does not mix with the color of the parent element [P], or of the <code>body</code>.
+							</td>
+						</tr>
+						<tr>
+							<td>Isolation on intermediate element with transparent pixels</td>
+							<td>3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>); the element <code>background-color</code> is other than <code>transparent</code><br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								The intermediate element has text content, default value for <code>background-color</code> and <code>isolation:isolate</code> set<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal
+							</code></td><td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								There is no blending between the color of the parent element [P] and the color of the blended element [B].
+							</td>
+						</tr>
+						<tr>
+							<td>Isolate inside a stacking context created by a 3d transform</td>
+							<td>
+								3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a <code>3D transform</code> applied<br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								The intermediate element has <code>isolation:isolate</code> set<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code><br>
+							</td>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								There is no blending between the color of the parent element [P] and the color of the blended element [B].
+							 </td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="an-element-with-isolation-auto-set-does-not-change-the-elements-existing-stacking-context-behavior">
+					<h4 aria-level="3" role="heading" id="h4_an-element-with-isolation-auto-set-does-not-change-the-elements-existing-stacking-context-behavior"><span class="secno">4.4.3 </span>An element with <code>isolation:auto</code> set does not change the elements existing stacking context behavior</h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation auto</td>
+							<td>Have an element with <code>isolation</code> explicitly set to <code>auto</code>, and no other style that would create a stacking context</td>
+							<td>The element does not create a stacking context - the computed value of its <code>z-index</code> is value <code>auto</code></td>
+						</tr>
+						<tr>
+							<td>Stacking context not affected by isolation</td>
+							<td>2 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>); This element has <code>isolation</code> explicitly set to <code>auto</code> <br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code> <br>
+								The blending element [B] has content that lies outside the parent element. <br>
+								Set the <code>background-color</code> of the <code>body</code> to a value other than default
+							</td>
+							<td>The color of the parent element mixes with the color of the child element. <br>
+								The area of the child element outside of the parent element doesn't mix with the color of the <code>body</code>.<br>
+								In other words, setting the <code>isolation</code> to <code>auto</code> does not affect the creation of a stacking context by other properties.
+							</td>
+						</tr>
+					</tbody></table>
+				</section>
+			</section>
+			<section id="test-cases-for-isolation-in-svg">
+				<h3 aria-level="2" role="heading" id="h3_test-cases-for-isolation-in-svg"><span class="secno">4.5 </span>Test cases for <code>isolation</code> in SVG</h3>
+				<section id="in-svg-an-element-with-isolation-isolate-creates-an-isolated-group-for-blended-children">
+					<h4 aria-level="3" role="heading" id="h4_in-svg-an-element-with-isolation-isolate-creates-an-isolated-group-for-blended-children"><span class="secno">4.5.1 </span>In SVG, an element with <code>isolation:isolate</code> creates an isolated group for blended children</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#isolation">spec</a>: <q>In SVG, this defines whether an element is isolated or not.</q></p>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending two elements in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the second rect.</td>
+							<td>Only the intersection of the <code>rect</code> elements should mix.</td>
+						</tr>
+						<tr>
+							<td>Blending in an isolated group with 2D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> and 2D transform on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Set isolation on an element from JavaScript</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color and a <code>mix-blend-mode</code> other than <code>normal</code>.
+								<br>Apply <code>isolation:isolate</code> on it from JavaScript.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</tbody></table>
+				</section>
+				<section id="in-svg-an-element-with-isolation-auto-set-does-not-change-the-rendering-behaviour">
+					<h4 aria-level="3" role="heading" id="h4_in-svg-an-element-with-isolation-auto-set-does-not-change-the-rendering-behaviour"><span class="secno">4.5.2 </span>In SVG, an element with <code>isolation:auto</code> set does not change the rendering behaviour</h4>
+					<table>
+						<tbody><tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending a group with <code>isolation:auto</code></td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:auto</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The element will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 and <code>isolation:auto</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</tbody></table>
+				</section>
+			</section>
+
+
+</section><div id="respec-ui" class="removeOnSave" style="position: fixed; top: 20px; right: 20px; width: 202px; text-align: right;"><button style="background-color: rgb(255, 255, 255); font-weight: bold; border: 1px solid rgb(204, 204, 204); border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; background-position: initial initial; background-repeat: initial initial;">ReSpec</button><div style="background-color: rgb(255, 255, 255); border: 1px solid rgb(0, 0, 0); width: 200px; display: none; text-align: left; margin-top: 5px; margin-right: 5px; background-position: initial initial; background-repeat: initial initial;"><button style="background-color: rgb(255, 255, 255); border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background-position: initial initial; background-repeat: initial initial;">Save Snapshot</button><button style="background-color: rgb(255, 255, 255); border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background-position: initial initial; background-repeat: initial initial;">About ReSpec</button></div></div><section id="references" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">A. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">A.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-compositing-1">[compositing-1]</dt><dd rel="dcterms:requires">Nikos Andronikos; Rik Cabanier. <a href="http://www.w3.org/TR/compositing-1/"><cite>Compositing and Blending Level 1</cite></a>. 10 October 2013. W3C Last Call Working Draft. URL: <a href="http://www.w3.org/TR/compositing-1/">http://www.w3.org/TR/compositing-1/</a>
+</dd><dt id="bib-css3-transforms">[css3-transforms]</dt><dd rel="dcterms:requires">Simon Fraser; Dean Jackson; Edward O'Connor; Dirk Schulze; Aryeh Gregor. <a href="http://www.w3.org/TR/css3-transforms/"><cite>CSS Transforms</cite></a>. 11 September 2012. W3C Working Draft. URL: <a href="http://www.w3.org/TR/css3-transforms/">http://www.w3.org/TR/css3-transforms/</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">A.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-webdriver">[webdriver]</dt><dd rel="dcterms:references">Simon Stewart; David Burns. <a href="http://www.w3.org/TR/webdriver/"><cite>WebDriver</cite></a>. 12 March 2013. W3C Working Draft. URL: <a href="http://www.w3.org/TR/webdriver/">http://www.w3.org/TR/webdriver/</a>
+</dd></dl></section></section></body></html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test-plan.src.html b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test-plan.src.html
new file mode 100644
index 0000000..c29f268
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test-plan.src.html
@@ -0,0 +1,1616 @@
+
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>Compositing and Blending Test Plan</title>
+		<meta charset='utf-8'>
+		<script src='http://www.w3.org/Tools/respec/respec-w3c-common'
+						async class='remove'></script>
+		<script class='remove'>
+			var respecConfig = {
+					specStatus: "unofficial",
+					shortName:  "compositing-1-test-plan",
+					editors: [
+								{
+									name: "Mirela Budaes",
+									company: "Adobe Systems, Inc.",
+									companyURL: "http://www.adobe.com/"
+								},
+								{
+									name: "Horia Olaru",
+									company: "Adobe Systems, Inc.",
+									companyURL: "http://www.adobe.com/"
+								},
+								{
+									name: "Mihai Tica",
+									company: "Adobe Systems, Inc.",
+									companyURL: "http://www.adobe.com/"
+								},
+
+					]
+			};
+		</script>
+		<style>
+			table
+			{
+				border-collapse:collapse;
+			}
+			table, td, th
+			{
+				border:1px solid black;
+				padding: 13px;
+			}
+			table
+			{
+				width: 100%;
+			}
+			img
+			{
+				width: 400px;
+			}
+		</style>
+	</head>
+	<body>
+		<section id='abstract'>
+			<p>
+				This document is intended to be used as a guideline for the testing
+				activities related to the Compositing and Blending spec [[!compositing-1]]. Its main
+				goal is to provide an overview of the general testing areas and an informative
+				description of possible test cases.
+			</p>
+			<p>
+				This document is not meant to replace the spec in determining the
+				normative and non-normative assertions to be tested, but rather
+				complement it.
+			</p>
+		</section>
+		<section>
+			<h2>Goals</h2>
+			<section>
+				<h3>Providing guidance on testing</h3>
+				<p>
+					In order to increase the quality of the test contributions, this
+					document offers a set of test cases description for conducting testing (see
+					<a href="#test-cases-description" class="sectionRef"></a>).
+				</p>
+			</section>
+			<section>
+				<h3>Creating automation-friendly tests</h3>
+				<p>
+					In terms of actual tests produced for the CSS Compositing and Blending, the main goal
+					is to ensure that most tests are automatable (i.e. they're either
+					reftests or use <code>testharness.js</code>). Even where manual tests
+					are absolutely necessary they should be written so that they can be
+					easily automated &ndash; as there are on-going efforts to make
+					WebDriver [[webdriver]] automated tests a first class citizen in W3C
+					testing. This means that even if a manual test requires user
+					interaction, the validation or PASS/FAIL conditions should still be
+					clear enough as to allow automatic validation if said interaction is
+					later automated.
+				</p>
+			</section>
+		</section>
+		<section>
+			<h2>Approach</h2>
+			<p>
+				Since CSS blending has only three new CSS properties,
+				the approach is to deep dive into every aspect of the spec as much as possible.
+
+				Tests will be created for the testing areas listed in <a href="#testig-areas" class="sectionRef"></a>
+				and having as guidance the test cases description from <a href="#test-cases-description" class="sectionRef"></a>.
+			</p>
+		</section>
+		<section>
+			<h2>Testing areas</h2>
+			<section>
+				<h3>Explicit testing areas</h3>
+					<p>
+					  These testing areas cover things explicitly defined in the normative sections of the Blending and Compositing spec. Please note that while detailed, this list is not necessarily
+					  exhaustive and some normative behaviors may not be contained in it.
+					  When in doubt, consult the Blending and Compositing spec or ask a question on the
+					  <a href="http://lists.w3.org/Archives/Public/www-style/">mailing
+					  list</a>.
+					</p>
+				<p>Below is the list of explicit testing areas:</p>
+				<ol>
+					<li>Proper parsing of the CSS properties and rendering according to the spec
+						<ul><code>mix-blend-mode</code></ul>
+						<ul><code>isolation</code></ul>
+						<ul><code>background-blend-mode</code></ul>
+					</li>
+					<li>SVG blending</li>
+					<li>Canvas 2D blending</li>
+				</ol>
+			</section>
+			<section>
+				<h3>Implicit testing areas</h3>
+				<p>
+				  These are testing areas either normatively defined in other specs
+				  that explicitly refer to the Blending and Compositing spec (e.g. [[!css3-transforms]])
+				  or simply not explicitly defined, but implied by various aspects of
+				  the spec (e.g. processing model, CSS 2.1 compliance, etc.).
+				  Please note that while detailed, this list is not necessarily
+				  exhaustive and some normative behaviors may not be contained in it.
+				  When in doubt, consult the Blending and Compositing spec or ask a question on the
+				  <a href="http://lists.w3.org/Archives/Public/www-style/">mailing
+				  list</a>.
+				</p>
+				<p>Below is the list of implicit testing areas:</p>
+				<ol>
+					<li>Blending different types of elements
+						<ul>
+							<li><code>&lt;video&gt;</code></li>
+							<li><code>&lt;canvas&gt;</code></li>
+							<li><code>&lt;table&gt;</code></li>
+							</ul>
+					</li>
+					<li>Blending elements with specific style rules applied
+						<ul>
+							<li><code>transforms</code></li>
+							<li><code>transitions</code> </li>
+							<li><code>animations</code> </li>
+						</ul>
+					</li>
+				</ol>
+			</section>
+		</section>
+		<section>
+				<h2>Test cases description</h2>
+				<section>
+					<h3>Test cases for <code>mix-blend-mode</code></h3>
+					<p>
+						The following diagram describes a list of notations to be used later on in the document as well as the general document structure the test cases will follow. The test cases should not be limited to this structure. This should be a wireframe and people are encouraged to come up with complex test cases as well.
+					</p>
+					<p>
+						<img id="test_outline" src="test_template.png" alt="Mix-blend-mode sample elements">
+					</p>
+					<p>The intended structure of the document is the following:</p>
+						<pre>
+&lt;body&gt;
+  &lt;div id="[P]"&gt;
+    &lt;div id="[IN-S]"&gt;&lt;/div&gt;
+    &lt;div id="[IN-P]"&gt;
+      &lt;div id="[B]"&gt;
+        &lt;div id="[CB]"&gt;&lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+						</pre>
+					<p> Unless otherwise stated, test cases assume the following properties for the elements: <br>
+						<ul>
+						<li> default value for the <code>background-color</code> of the <code>body</code></li>
+						<li> <code>background-color</code> set to a fully opaque color for all the other elements </li>
+						</ul>
+					</p>
+					<p>The CSS associated to the elements used in the tests shouldn't use properties that creates a stacking context, except the ones specified in the test case descriptions.</p>
+					<p>Every test case has a description of the elements used. The notation from the image is used in the test case description too (e.g. for parent element the notation is [P]). Each test case uses only a subset of the elements while the other elements should just be removed.
+					</p></p>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> other than normal creates a stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode" >spec</a>: <q>Applying a blendmode other than ‘normal’ to the element must establish a new stacking context [CSS21].</q></p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Simple <code>&lt;div&gt;</td>
+								<td>1 element required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								 </td>
+								<td>The element [B] creates a stacking context</td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> blends with the content within the current stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q>An element that has blending applied, must blend with all the underlying content of the stacking context [CSS21] that that element belongs to.</q> </p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Blending simple elements </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B].</td>
+							</tr>
+							<tr>
+								<td>Blending <code>&lt;video&gt;</code></td>
+								<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[B] - <code>&lt;video&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) visually overlaping the <code>&lt;video&gt;</code> element <br>
+									[IN-S] has some text inside
+							</td>
+								<td>The content of the <code>video</code> element [B] mixes with the colors of the sibling element and the text from [IN-S].</td>
+							</tr>
+							<tr>
+								<td>Blending with a sibling</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling of the element [B] <br>
+									The [IN-S] element visually overlaps the [B] element
+								</td>
+								<td>The colors of the parent element [P] and the sibling element [IN-S] mixes with the color of the blended element [B].</td>
+							</tr>
+							<tr>
+								<td>Blending with two levels of ascendants</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-P] - Intermediate child element between the parent [P] and the child [B]
+								</td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B].</td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> doesn't blend with anything outside the current stacking context</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q> An element that has blending applied, must blend with all the underlying content of the stacking context [CSS21] that that element belongs to.</q></p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Blending child overflows the parent</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									The blending element [B] has content that lies outside the parent element. <br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default</td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									 The area of the child element outside of the parent element doesn't mix with the color of the <code>body</code></td>
+							</tr>
+							<tr>
+								<td>Parent with transparent pixels</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									The element has some text inside and default value for <code>background-color</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									The <code>background-color</code> of the <code>body</code> has a value other than default</td>
+								<td>The color of the text from the parent element [P] mixes with the color of the child element [B]. <br>
+								No blending between the color of the <code>body</code> and the color of the blending element [B].
+								 </td>
+							</tr>
+							<tr>
+								<td>Parent with <code>border-radius</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[P] has <code>border-radius</code> specified (e.g.50%). <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal <br>
+										[B] has content that lies outside the parent element, over a rounded corner. <br>
+										The <code>background-color</code> of the <code>body</code> has a value other than default. </td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									 The area of the child element which draws over the rounded corner doesn't mix with the color of the <code>body</code></td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> other than normal must cause a group to be isolated</h4>
+						<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#isolation" >spec</a>: <q>operations that cause the creation of stacking context [CSS21] must cause a group to be isolated.</q> </p>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Child of the blended element has opacity</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[CB] - child of the element [B] with <code>opacity</code> less than one. </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]</td>
+							</tr>
+							<tr>
+								<td>Overflowed child of the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal <br>
+										[CB] - child of the element [B] with content that lies outside the parent element [B].
+								</td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]. There is only one color for the entire element [CB] </td>
+							</tr>
+							<tr>
+								<td>Blended element with transparent pixels</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and transparent <code>background-color</code> <br>
+									[CB] - child of the element [B]
+								</td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+								No blending between [B] and [CB]. </td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> must work properly with css transforms</h4>
+						<table>
+							<tr>
+								<th>Test name</th>
+								<th>Elements and styles</th>
+								<th>Expected result</th>
+							</tr>
+							<tr>
+								<td>Parent with 3D transform</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Blended element with 3D transform</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>3D transform</code> <br>
+									[CB] - child of the element [B] </td>
+								<td> The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed </td>
+							</tr>
+							<tr>
+								<td>Both parent and blended element with 3D transform</td>
+								<td> 2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>3D transform</code>
+								</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The elements (and the content) of the elements [P]  and [B] are properly transformed</td>
+							</tr>
+							<tr>
+								<td>Blended element with transform and preserve-3d</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal and transform with <code>transform-style:preserve-3d</code> <br>
+										[CB] - child of the element [B]. It has 3D transform property</td>
+								<td> The child element [CB] will NOT preserve its 3D position. <br>
+								<code>mix-blend-mode</code> override the behavior of <code>transform-style:preserve-3d</code>:
+								creates a flattened representation of the descendant elements <br>
+								The color of the group created by the child elements([B] and [CB]) will blend with the color of the parent element [P] </td>
+							</tr>
+							<tr>
+								<td>Blended element with transform and perspective</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+										[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+										[B] - element with <code>mix-blend-mode</code> other than normal and transform with <code>perspective</code> set to positive length </td>
+								<td>The colors of the parent and the child are mixed ([P] and [B]) <br>
+									The element (and the content) of the element [B] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Sibling with 3D transform between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - Sibling(of the element [B]) with <code>3D transform</code> between the parent [P] and the child [B]
+									 </td>
+								<td>The colors of the parent element [P] and the transformed sibling element [IN-S] mixes with the color of the blended element [B].<br>
+								The element (and the content) of the element [IN-S] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Parent with 3D transform and transition</td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and  <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with <code>3D transform</code> and transition <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The element (and the content) of the element [P] is properly transformed
+								</td>
+							</tr>
+							<tr>
+								<td>Sibling with 3D transform(and transition) between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) with <code>3D transform</code> and transition between the parent [P] and the child [B]
+									 </td>
+								<td>The colors of the parent element [P] and the transformed sibling element [IN-S] mixes with the color of the blended element [B].<br>
+								The element (and the content) of the element [IN-S] is properly transformed
+								</td>
+							</tr>
+						</table>
+					</section>
+					<section>
+						<h4>An element with <code>mix-blend-mode</code> must work properly with elements with <code>overflow</code> property</h4>
+						<table>
+							<tr>
+								<td>Parent element with <code>overflow:scroll</code> </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:scroll</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal tat overflows the parents [P] dimensions so that it creates scrolling for the parent
+								<td>The color of the parent element [P] mixes with the color of the child element [B]. <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:scroll</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>overflow:scroll</code> and a child element that creates overflow for [B]</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Parent element with <code>overflow:scroll</code> and blended with <code>position:fixed</code> </td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:scroll</code> <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>position:fixed</code> and should overflow the parents [P] dimensions so that it creates scrolling for the parent</td>
+								<td>The color of the parent element [P] mixes with the color of the child element [B] <br>
+									The blending happens when scrolling the content of the parent element [P] too. <br>
+									The scrolling mechanism is not affected.
+								</td>
+							</tr>
+							<tr>
+								<td>Parent with <code>overflow:hidden</code> and <code>border-radius</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[P] has <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal with content that lies outside the parent element, over a rounded corner <br>
+									Set the <code>background-color</code> of the <code>body</code> to a value other than default.</td>
+								<td>The color of the parent element mixes with the color of the child element. <br>
+									The area of the child element which draws over the rounded corner is properly cut </td>
+							</tr>
+							<tr>
+								<td>Blended element with <code>overflow:hidden</code> and <code>border-radius</code></td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Child of the lement [B]">[CB]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal, <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%). <br>
+									[CB] - child of the element [B], with content that lies outside the parent element, over a rounded corner. <br> </td>
+								<td>The group created by the two child elements([B] and [CB]) is blended with the parent element [P]. <br>
+									No blending between [B] and [CB]. <br>
+									[CB] is properly clipped so no overflow is visible.</td>
+							</tr>
+							<tr>
+								<td>Intermediate child with <code>overflow:hidden</code> and <code>border-radius</code> between the parent and the blended element</td>
+								<td>3 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>, <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="child of the element [P]">[IN-P]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal that overflows the parents [IN-P] dimensions
+									[IN-P] - child(of the element [P]) with <code>overflow:hidden</code> and <code>border-radius</code> specified (e.g.50%)
+									 </td>
+								<td>The colors of the parent element [P] and the child element [IN-P] mixes with the color of the blended element [B]. <br>
+									[B] is is properly clipped so no overflow is visible
+								</td>
+							</tr>
+						</table>
+					</section>
+				<section>
+					<h4>Other test cases</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blended element with <code>border-image</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>border-image</code> specified as a png file
+							</td>
+							<td>The color of the parent element [P] mixes with the color of the child element. <br>
+								The color of the <code>border-image</code> mixes with the color of the parent element [P].
+							</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;canvas&gt;</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+								[B] - <code>&lt;canvas&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+								[IN-S] - Sibling of the <code>&lt;canvas&gt;</code> element with some text <br>
+								The [IN-S] element overlaps the <code>&lt;canvas&gt;</code> element
+							</td>
+							<td>The content of the <code>&lt;canvas&gt;</code> element mixes with the color of the sibling element and the text [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;canvas&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - Child <code>&lt;canvas&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;canvas&gt;</code> element [B] mixes with the color of the parent element [P] .</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;video&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;video&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;video&gt;</code> element mixes with the color of the parent element [P] .</td>
+						</tr>
+						<tr>
+							<td>Blending with <code>&lt;iframe&gt;</code> </td>
+							<td>2 elements required: <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> and <a href="#test_outline" title="Sibling of the element [B]">[IN-S]</a> <br>
+									[B] - <code>&lt;iframe&gt;</code> element with <code>mix-blend-mode</code> other than normal <br>
+									[IN-S] - sibling(of the element [B]) with some text <br>
+									The [IN-S] element visually overlaps the <code>&lt;iframe&gt;</code> element
+							</td>
+							<td>The color of the <code>&lt;iframe&gt;</code> element mixes with the color of the sibling element and the text [IN-S].</td>
+						</tr>
+						<tr>
+							<td>Blended <code>&lt;iframe&gt;</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;iframe&gt;</code> element with <code>mix-blend-mode</code> other than normal
+							</td>
+							<td>The color of the <code>&lt;iframe&gt;</code> element [B] mixes with the color of the parent element [P]. </td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>mask</code> property</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>mask</code> property specified to an SVG image (e.g. circle)</td>
+							<td>The colors of the parent and the masked child are mixed ([P] and [B])</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>clip-path</code> property </td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>clip-path</code> property specified to a basic shape (e.g. ellipse)</td>
+							<td>The colors of the parent and the clipped child are mixed ([P] and [B])</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>filter</code> property</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>filter</code> property value other than none </td>
+							<td>The filter is applied and the result is mixed with the parent element</td>
+						</tr>
+						<tr>
+							<td>Blended element with <code>transition</code></td>
+								<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+									[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+									[B] - element with <code>mix-blend-mode</code> other than normal and <code>transition-property</code> for <code>opacity</code> </td>
+							<td>The transition is applied and the result is mixed with the parent element</td>
+						</tr>
+							<tr>
+							<td>Blended element with <code>animation</code></td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - element with <code>mix-blend-mode</code> other than normal and <code>animation</code> specified</td>
+							<td>The animation is applied to the child element and the result is mixed with the parent element</td>
+						</tr>
+						<tr>
+							<td>Image element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - <code>&lt;img&gt;</code> element (.jpeg or .gif image) with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the <code>&lt;img&gt;</code> is mixed with the color of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>SVG element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - SVG element with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the SVG is mixed with the color of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Paragraph element</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - paragraph element with <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the text from the paragraph element is mixed with the color of the <code>&lt;div&gt;</code></td>
+						</tr>
+						<tr>
+							<td>Paragraph element and background-image</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								 and  <code>background-image</code> <br>
+								[B] - Child <code>p</code> element with some text and <code>mix-blend-mode</code> other than normal</td>
+							<td>The color of the text from the <code>p</code> element is mixed with the background image of the <code>&lt;div&gt;</code>.</td>
+						</tr>
+						<tr>
+							<td>Set blending from JavaScript</td>
+							<td>2 elements required: <a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and <a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[B] - Child <code>&lt;div&gt;</code> element with no <code>mix-blend-mode</code> specified<br>
+								From JavaScript, set the <code>mix-blend-mode</code> property for the child <code>&lt;div&gt;</code> to a value other than normal</td>
+							<td>The colors of the <code>&lt;div&gt;</code> elements are mixed.</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+			<section>
+				<h3>Test cases for SVG elements with <code>mix-blend-mode</code></h4>
+				<section>
+					<h4><code>mix-blend-mode</code> with simple SVG graphical elements</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode" >spec</a> : <q><code>mix-blend-mode</code> applies to svg, g, use, image, path, rect, circle, ellipse, line, polyline, polygon, text, tspan, and marker.</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Circle with SVG background</td>
+							<td>Set a background color for the SVG.<br>
+								Create 16 <code>circle</code> elements and fill them with a solid color.
+								<br>Apply each <code>mix-blend-mode</code> on them.</td>
+							<td>The color of the <code>circle</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Ellipse with SVG background</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>ellipse</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>ellipse</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Image with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create an <code>image</code> element and apply a <code>mix-blend-mode</code> other than <code>normal</code>.</td>
+							<td>The <code>image</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Line with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>line</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>line</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Path with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>path</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>path</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Polygon with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>polygon</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>polygon</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Polyline with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>polyline</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>polyline</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Rect with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> on it other than <code>normal</code>.</td>
+							<td>The color of the <code>rect</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Text with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>text</code> element and apply a <code>mix-blend-mode</code> other than <code>normal</code>.</td>
+							<td>The text is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Text having tspan with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>text</code> element and a <code>tspan</code> inside it.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>tspan</code>.</td>
+							<td>The text is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Gradient with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a <code>gradient</code>.
+								<br>Apply a <code>mix-blend-mode</code> on it other than normal.</td>
+							<td>The gradient is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Pattern with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a <code>pattern</code>.
+								<br>Apply a <code>mix-blend-mode</code> on it other than normal.</td>
+							<td>The pattern is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Set blending on an element from JavaScript</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color.
+								<br>Apply a <code>mix-blend-mode</code> (other than <code>normal</code>) on it from JavaScript.</td>
+							<td>The color of the <code>rect</code> is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Marker with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>line</code> element containing a marker.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The marker color is mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>Metadata with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>metadata</code> element containing an embedded pdf.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The metadata content is not mixed with the color of the background.</td>
+						</tr>
+						<tr>
+							<td>ForeignObject with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>foreignObject</code> element containing a simple xhtml file.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the marker.</td>
+							<td>The foreignObject content is not mixed with the color of the background.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>mix-blend-mode</code> with SVG groups</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Group of overlapping elements with SVG background</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.
+								<br>Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the group.</td>
+							<td>The <code>group</code> is mixed as a whole with the color of the background.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>mix-blend-mode</code> with isolated groups</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode" >spec</a>:
+					<br><q>By default, every element must create a non-isolated group.<br>
+						However, certain operations in SVG will create isolated groups.<br>
+						If one of the following features is used, the group must become isolated:
+						<ul>
+						    <li>opacity</li>
+						    <li>filters</li>
+						    <li>3D transforms (2D transforms must NOT cause isolation)</li>
+						    <li>blending</li>
+						    <li>masking</li>
+						</ul>
+					</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending two elements in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the second rect.</td>
+							<td>Only the intersection of the <code>rect</code> elements should mix.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with filter</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>filter</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with 2D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>transform</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with 3D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a 3d transform on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with a mask</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>mask</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with mix-blend-mode</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>mix-blend-mode</code> other than <code>normal</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>Other test cases for SVG</h4>
+					<table>
+						<tr>
+							<td>Blend with element having opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke-opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke</code>, <code>stroke-opacity</code> less than 1 and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having stroke-dasharray</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply a <code>stroke-dasharray</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with element having transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>transform</code> (any combination of <code>translate</code>, <code>rotate</code>, <code>scale</code>, <code>skew</code>) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with SVG having viewbox and preserveAspectRatio set</td>
+							<td>Set a background color for the SVG, as well as <code>viewbox</code> and <code>preserveAspectRatio</code>.<br>
+								Create a <code>rect</code> element filled with a different solid color and apply a <code>mix-blend-mode</code> other than <code>normal</code> on it.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having color-profile set</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>color-profile</code> (<code>sRGB</code>, for example) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having overflow</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> larger than the SVG.<br>
+								Apply <code>overflow</code> (<code>visible</code>, <code>hidden</code>, <code>scroll</code>) and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having clip-path</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element. Apply a <code>clip-path</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having a mask</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element.<br>
+								Apply a <code>mask</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an element having a filter</td>
+							<td>Set a background color for the SVG.<br>
+								Create an <code>image</code> element.<br>
+								Apply a <code>filter</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>image</code>.</td>
+							<td>The <code>image</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blend with an animated element</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element filled with a different solid color.<br>
+								Apply an <code>animateTransform</code> and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Set blending from an SVG script element</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>rect</code> element and fill it with a solid color.<br>
+								Apply a <code>mix-blend-mode</code> (other than <code>normal</code>) on it from an svg <code>script</code> element.</td>
+							<td>The <code>rect</code> will mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+			<section>
+				<h3>Test cases for <code>background-blend-mode</code></h3>
+				<section>
+					<h4>Blending between the background layers and the background color for an element with <code>background-blend-mode</code> </h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>Each background layer must blend with the element's background layer that are below it and the element's background color.</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Images with different formats</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+								Tests should be created for <code>&lt;image&gt;</code> with different formats such as PNG, JPEG or SVG
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Gradient and background color</td>
+							<td>
+								Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;gradient&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Image and gradient</td>
+							<td>
+								Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> on top of a <code>&lt;gradient&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>&lt;image&gt;</code> is mixed with the content of the <code>&lt;gradient&gt;</code>
+							</td>
+						</tr>
+						<tr>
+							<td>Gradient and image</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>&lt;gradient&gt;</code> on top of an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>&lt;image&gt;</code> is mixed with the content of the <code>&lt;gradient&gt;</code></td>
+						</tr>
+						<tr>
+							<td>Two gradients</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>&lt;gradient&gt;</code> on top of another <code>&lt;gradient&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul></td>
+							<td>The content of the two gradients is mixed</td>
+						</tr>
+						<tr>
+							<td>Two images</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> on top of another <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul></td>
+							<td>The content of the two images is mixed</td>
+						</tr>
+						<tr>
+							<td>Image and background color with transparency</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code> with transparency(e.g. PNG images)</li>
+									<li><code>background-color</code> set to a transparent color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code></td>
+						</tr>
+						<tr>
+							<td>Cross-fade image and gradient</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <q>cross-fade()</q> image on top of a <code>&lt;gradient&gt;</code> </li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the cross-faded image is mixed with the content of the <code>&lt;gradient&gt;</code></td>
+						</tr>
+						<tr>
+							<td>SVG image and background color</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a data URI for an SVG image </li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td>Animated gif image and background color</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an animated gif image</li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td>Set <code>background-blend-mode</code> from JavaScript</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to a <code>gradient</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li>no <code>background-blend-mode</code> explicitly specified</li>
+									From JavaScript, set the <code>background-blend-mode</code> property to a value other than normal.
+								</ul>
+							</td>
+							<td>The content of the gradient is mixed with the color of the background</td>
+						</tr>
+						<tr>
+							<td><code>background-blend-mode</code> on element with 3D transform</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+									<li><code>transform</code> set to a 3D function like rotateX, rotateY or translateZ</li>
+								</ul>
+							</td>
+							<td>The content of the image is mixed with the color of the background</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>Background layers do not blend with content outside the background (or behind the element)</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>Background layer must not blend with the content that is behind the element instead they must act as if they are rendered into an isolated group.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>One background layer</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The <code>background-image</code> is not mixed with anything outside the element</td>
+						</tr>
+						<tr>
+							<td>Two elements</td>
+							<td>2 elements required: a parent element with a child. <br>
+								Each one with the following properties:
+								<ul>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							<td>No blending between the background colors of the two elements</td>
+						</tr>
+						<tr>
+							<td>Parent and child with <code>background-blend-mode</code></td>
+							<td>2 elements required: a parent element with a child <br>
+								Parent properties: <br>
+								<ul>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+								Child properties: <br>
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							<td>The content of the image from the child element does not mixes with the background color from the parent element</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4> <code>background-blend-mode</code> list values apply to the corresponding background layer</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>The ‘background-blend-mode’ list must be applied in the same order as ‘background-image’[CSS3BG]. This means that the first element in the list will apply to the layer that is on top.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Different blend modes applied between layers</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image-list&gt;</code> containing three images: (e.g. I1, I2 and I3 ) </li>
+									<li><code>background-blend-mode</code> set to different <code>blendmode</code> for every image: (e.g. multiply, difference, screen) </li>
+								</ul></td>
+							<td>The content of the three images is correctly mixed <br>
+							(multiply for I1, difference for I2 and screen for I3)
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> list values are repeated if the list is shorter than the background layer list</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>If a property doesn't have enough comma-separated values to match the number of layers, the UA must calculate its used value by repeating the list of values until there are enough.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blend mode list repeat</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image-list&gt;</code> containing three images</li>
+									<li><code>background-blend-mode</code> set to two different <code>blendmode</code> values</li>
+								</ul></td>
+							<td>The unspecified blend modes should be obtained by repeating the blend mode list from the beginning</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>The default <code>background-blend-mode</code> value for the <code>background</code> shorthand is 'normal' </h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#background-blend-mode">spec</a>: <q>If the ‘background’ [CSS3BG] shorthand is used, the ‘background-blend-mode’ property for that element must be reset to its initial value.</q>
+					</p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Default blend mode for 'background' shorthand</td>
+							<td>Element with
+								<ul>
+									<li><code>background</code> property set to an image and a color</li>
+									<li>No value explicitly set for <code>background-blend-mode</code> </li>
+								</ul></td>
+							<td> The computed value of <code>background-blend-mode</code> is 'normal'
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-position</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-position</code> percentage</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-position</code> specified in percentage, such as 50% 50%</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> is correctly positioned
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-size</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Background size defined in pixels</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> specified in pixels</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size defined in percentage (second phase)</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> specified in percentage</li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size cover</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> set to <code>cover</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+						<tr>
+							<td>Background size contain</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-size</code> set to <code>contain</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> has the correct size
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-repeat</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to no-repeat</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>no-repeat</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The <code>background-image</code> is not repeated
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to space</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>space</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-repeat</code> set to round</td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-repeat</code> set to <code>round</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-clip</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-clip</code> set to <code>padding-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-clip</code> set to <code>padding-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							No background is drawn below the border (background extends to the outside edge of the padding)
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-clip</code> set to <code>content-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-clip</code> set to <code>content-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background is painted within (clipped to) the content box
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-origin</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-origin</code> set to <code>border-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-origin</code> set to <code>border-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background extends to the outside edge of the border (but underneath the border in z-ordering)
+							</td>
+						</tr>
+						<tr>
+							<td><code>background-origin</code> set to <code>content-box</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-origin</code> set to <code>content-box</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background is painted within (clipped to) the content box
+							</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4><code>background-blend-mode</code> for an element with <code>background-attachement</code></h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td><code>background-attachment</code> set to <code>fixed</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to an <code>&lt;image&gt;</code></li>
+									<li><code>background-color</code> set to a fully opaque color</li>
+									<li><code>background-attachment</code> set to <code>fixed</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The content of the <code>background-image</code> is mixed with the color of the <code>background-color</code> <br>
+							The background image will not scroll with its containing element, instead remaining stationary within the viewport
+							</td>
+						</tr>
+						<tr>
+							<td>2 background images with <code>background-attachment</code> set to <code>fixed, scroll</code></td>
+							<td>Element with
+								<ul>
+									<li><code>background-image</code> set to 2 <code>&lt;image&gt;</code>(s)</li>
+									<li><code>background-attachment</code> set to <code>fixed, scroll</code></li>
+									<li><code>background-blend-mode</code> other than normal</li>
+								</ul>
+							</td>
+							<td>The background images will be mixed when they overlap while scrolling
+							</td>
+						</tr>
+					</table>
+				</section>
+		</section>
+			<section>
+				<h3>Test cases for <code>isolation</code></h3>
+				<section>
+					<h4>An element with <code>isolation:isolate</code> creates a stacking context</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#csscompositingrules_CSS">spec</a>: <q>For CSS, setting ‘isolation’ to ‘isolate’ will turn the element into a stacking context [CSS21].</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation isolate</td>
+							<td>Have an element with <code>isolation</code> set to <code>isolate</code></td>
+							<td>The element creates a stacking context.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>An element with <code>isolation:isolate</code> creates an isolated group for blended children</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation of blended child which overflows</td>
+							<td>3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>) <br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								This element has <code>isolation:isolate</code> set.<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code> <br>
+								The blending element [B] has content that lies outside the parent element. <br>
+							</td>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								The area of the child element outside of the intermediate parent element does not mix with the color of the parent element [P], or of the <code>body</code>.
+							</td>
+						</tr>
+						<tr>
+							<td>Isolation on intermediate element with transparent pixels</td>
+							<td>3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>); the element <code>background-color</code> is other than <code>transparent</code><br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								The intermediate element has text content, default value for <code>background-color</code> and <code>isolation:isolate</code> set<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</d <br>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								There is no blending between the color of the parent element [P] and the color of the blended element [B].
+							</td>
+						</tr>
+						<tr>
+							<td>Isolate inside a stacking context created by a 3d transform</td>
+							<td>
+								3 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a>,
+								<a href="#test_outline" title="child of the element [P]">[IN-P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a <code>3D transform</code> applied<br>
+								[IN-P] - Intermediate child element between the parent [P] and the child [B]<br>
+								The intermediate element has <code>isolation:isolate</code> set<br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code><br>
+							</td>
+							<td>
+								The color of the child element [B] mixes with the color of the intermediate element [IN-P], where they overlap.<br>
+								There is no blending between the color of the parent element [P] and the color of the blended element [B].
+							 </td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>An element with <code>isolation:auto</code> set does not change the elements existing stacking context behavior</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Isolation auto</td>
+							<td>Have an element with <code>isolation</code> explicitly set to <code>auto</code>, and no other style that would create a stacking context</td>
+							<td>The element does not create a stacking context - the computed value of its <code>z-index</code> is value <code>auto</code></td>
+						</tr>
+						<tr>
+							<td>Stacking context not affected by isolation</td>
+							<td>2 elements required:
+								<a href="#test_outline" title="parent element with a property that creates stacking context">[P]</a> and
+								<a href="#test_outline" title="Element with mix-blend-mode property other than normal">[B]</a> <br>
+								[P] - parent element with a property that creates a stacking context (e.g. <code>position:fixed</code>); This element has <code>isolation</code> explicitly set to <code>auto</code> <br>
+								[B] - element with <code>mix-blend-mode</code> other than <code>normal</code> <br>
+								The blending element [B] has content that lies outside the parent element. <br>
+								Set the <code>background-color</code> of the <code>body</code> to a value other than default
+							</td>
+							<td>The color of the parent element mixes with the color of the child element. <br>
+								The area of the child element outside of the parent element doesn't mix with the color of the <code>body</code>.<br>
+								In other words, setting the <code>isolation</code> to <code>auto</code> does not affect the creation of a stacking context by other properties.
+							</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+			<section>
+				<h4>Test cases for <code>isolation</code> in SVG</h4>
+				<section>
+					<h4>In SVG, an element with <code>isolation:isolate</code> creates an isolated group for blended children</h4>
+					<p>Refers to the following assertion in the <a href="https://drafts.fxtf.org/compositing-1/#isolation">spec</a>: <q>In SVG, this defines whether an element is isolated or not.</q></p>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending two elements in an isolated group</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing two overlapping <code>rect</code> elements, each filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the second rect.</td>
+							<td>Only the intersection of the <code>rect</code> elements should mix.</td>
+						</tr>
+						<tr>
+							<td>Blending in an isolated group with 2D transform</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:isolate</code> and 2D transform on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Set isolation on an element from JavaScript</td>
+							<td>Set a background color for the SVG.
+								<br>Create a <code>rect</code> element and fill it with a solid color and a <code>mix-blend-mode</code> other than <code>normal</code>.
+								<br>Apply <code>isolation:isolate</code> on it from JavaScript.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+				<section>
+					<h4>In SVG, an element with <code>isolation:auto</code> set does not change the rendering behaviour</h4>
+					<table>
+						<tr>
+							<th>Test name</th>
+							<th>Elements and styles</th>
+							<th>Expected result</th>
+						</tr>
+						<tr>
+							<td>Blending a group with <code>isolation:auto</code></td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>isolation:auto</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The element will mix with the content behind it.</td>
+						</tr>
+						<tr>
+							<td>Blending in a group with opacity</td>
+							<td>Set a background color for the SVG.<br>
+								Create a <code>group</code> element containing a <code>rect</code> element filled with a different solid color.<br>
+								Apply <code>opacity</code> less than 1 and <code>isolation:auto</code> on the group and a <code>mix-blend-mode</code> other than <code>normal</code> on the <code>rect</code>.</td>
+							<td>The <code>rect</code> will not mix with the content behind it.</td>
+						</tr>
+					</table>
+				</section>
+			</section>
+	</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test_template.png b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test_template.png
new file mode 100644
index 0000000..dbd7752
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/test-plan/test_template.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/text-with-svg-background-ref.html b/third_party/blink/web_tests/external/wpt/css/compositing/text-with-svg-background-ref.html
new file mode 100644
index 0000000..dfbde22f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/text-with-svg-background-ref.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>CSS mix-blend-mode API Test</title>
+    <link rel="author" title="dmyang" href="mailto:yangdemo@gmail.com">
+    <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com"><!-- 11-09-2013 @TestTWF Shenzhen -->
+    <meta name="flags" content="svg">
+    <style type="text/css">
+      .svg {
+        background-color: #888;
+        width: 500px;
+        display: block;
+        height: 60px;
+        margin: 10px auto;
+      }
+      .svg text {
+        font-size: 25px;
+        line-height: 50px;
+        mix-blend-mode: normal;
+      }
+    </style>
+    <style id="insert"></style>
+</head>
+<body>
+    <svg class="svg">
+        <text class="multiply" x="10" y="20">mix-blend-mode: multiply;</text>
+    </svg>
+    <svg class="svg">
+        <text class="screen" x="10" y="20">mix-blend-mode: screen;</text>
+    </svg>
+    <svg class="svg">
+        <text class="overlay" x="10" y="20">mix-blend-mode: overlay;</text>
+    </svg>
+    <svg class="svg">
+        <text class="darken" x="10" y="20">mix-blend-mode: darken;</text>
+    </svg>
+    <svg class="svg">
+        <text class="lighten" x="10" y="20">mix-blend-mode: lighten;</text>
+    </svg>
+    <svg class="svg">
+        <text class="color-dodge" x="10" y="20">mix-blend-mode: color-dodge;</text>
+    </svg>
+    <svg class="svg">
+        <text class="color-burn" x="10" y="20">mix-blend-mode: color-burn;</text>
+    </svg>
+    <svg class="svg">
+        <text class="hard-light" x="10" y="20">mix-blend-mode: hard-light;</text>
+    </svg>
+    <svg class="svg">
+        <text class="soft-light" x="10" y="20">mix-blend-mode: soft-light;</text>
+    </svg>
+    <svg class="svg">
+        <text class="difference" x="10" y="20">mix-blend-mode: difference;</text>
+    </svg>
+    <svg class="svg">
+        <text class="exclusion" x="10" y="20">mix-blend-mode: exclusion;</text>
+    </svg>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/text-with-svg-background.html b/third_party/blink/web_tests/external/wpt/css/compositing/text-with-svg-background.html
new file mode 100644
index 0000000..2297cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/compositing/text-with-svg-background.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>CSS mix-blend-mode API Test</title>
+    <link rel="author" title="dmyang" href="mailto:yangdemo@gmail.com">
+    <link rel="reviewer" title="Rik Cabanier" href="mailto:cabanier@adobe.com"><!-- 11-09-2013 @TestTWF Shenzhen -->
+    <link rel="help" href="http://www.w3.org/TR/compositing-1/#mix-blend-mode">
+    <meta name="flags" content="svg">
+    <style type="text/css">
+      .svg {
+        background-color: #888;
+        width: 500px;
+        display: block;
+        height: 60px;
+        margin: 10px auto;
+      }
+      .svg text {
+        font-size: 25px;
+        line-height: 20px;
+      }
+    </style>
+    <style id="insert" type="text/css"></style>
+</head>
+<body>
+<script>
+var SVG_NS = 'http://www.w3.org/2000/svg';
+var modes = [
+        'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge',
+        'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion'
+    ];
+var mode;
+var i = 0;
+var flagment = document.createDocumentFragment();
+var style = '';
+
+while(mode = modes[i++]) {
+    var svg = document.createElementNS(SVG_NS, 'svg');
+    var text = document.createElementNS(SVG_NS, 'text');
+
+    svg.setAttribute('class', 'svg');
+    text.setAttribute('x', 10);
+    text.setAttribute('y', 20);
+    text.setAttribute('class', mode);
+    text.textContent = 'mix-blend-mode: ' + mode + ';';
+
+    svg.appendChild(text);
+    flagment.appendChild(svg);
+
+    style += '.' + mode + ' {mix-blend-mode: ' + mode + ';}';
+}
+
+document.getElementById('insert').innerHTML = style;
+document.body.appendChild(flagment);
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-heights-010.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-heights-010.html
new file mode 100644
index 0000000..003cc24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-heights-010.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<title>A height: 100% descendant should trigger a relayout when stretching.</title>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#definite-sizes" />
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1043071" />
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="display: flex; width: 100px;">
+  <div style="display: flex; flex-direction: column; flex: 1; min-height: 100px;">
+    <div style="flex: 1; background: red;">
+      <div style="height: 100%; background-color: green;"></div>
+    </div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/document-metadata/the-style-element/style_load_event.html b/third_party/blink/web_tests/external/wpt/html/semantics/document-metadata/the-style-element/style_load_event.html
new file mode 100644
index 0000000..911a088
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/document-metadata/the-style-element/style_load_event.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<title>HTML Test: The style load event should fire when textContent is changed</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#update-a-style-block">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style id=target onload="load()">
+  .box { color:red; }
+</style>
+<div class='box'></div>
+<div id="log"></div>
+
+<script>
+  var loadCount = 0;
+  function load() { loadCount++; }
+
+  function styleLoad() {
+    return new Promise((resolve) => {
+      document.getElementById('target').addEventListener('load', () => {
+        resolve();
+      });
+    });
+  }
+
+  promise_test(async t => {
+    await styleLoad();
+    assert_equals(loadCount,1,"Style element should have loaded once by now");
+    target.textContent = `.box { color: green; }`;
+    await styleLoad();
+    assert_equals(loadCount,2,"Style element should fire the load event when textContent changes");
+  },"style load event should fire when textContent changed");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration-boundaryconditions.html b/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration-boundaryconditions.html
index b95e495..e5be9f18 100644
--- a/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration-boundaryconditions.html
+++ b/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration-boundaryconditions.html
@@ -21,7 +21,7 @@
                   test.waitForExpectedEvents(function()
                   {
                       if (expectedError) {
-                          assert_throws(expectedError,
+                          assert_throws_js(expectedError,
                               function() { mediaSource.duration = testDurationValue; },
                               "mediaSource.duration assignment throws an exception for " + testDurationValue);
                           test.done();
@@ -50,14 +50,14 @@
           DurationBoundaryConditionTest(Number.MAX_VALUE, null, "Set duration to Number.MAX_VALUE");
           DurationBoundaryConditionTest(Number.MIN_VALUE, null, "Set duration to Number.MIN_VALUE");
           DurationBoundaryConditionTest(Number.MAX_VALUE - 1, null, "Set duration to Number.MAX_VALUE - 1");
-          DurationBoundaryConditionTest(Number.MIN_VALUE - 1, new TypeError(), "Set duration to Number.MIN_VALUE - 1");
+          DurationBoundaryConditionTest(Number.MIN_VALUE - 1, TypeError, "Set duration to Number.MIN_VALUE - 1");
           DurationBoundaryConditionTest(Number.POSITIVE_INFINITY, null, "Set duration to Number.POSITIVE_INFINITY");
-          DurationBoundaryConditionTest(Number.NEGATIVE_INFINITY, new TypeError(), "Set duration to Number.NEGATIVE_INFINITY");
-          DurationBoundaryConditionTest(-1 * Number.MAX_VALUE, new TypeError(), "Set duration to lowest value.");
-          DurationBoundaryConditionTest(-101.9, new TypeError(), "Set duration to a negative double.");
+          DurationBoundaryConditionTest(Number.NEGATIVE_INFINITY, TypeError, "Set duration to Number.NEGATIVE_INFINITY");
+          DurationBoundaryConditionTest(-1 * Number.MAX_VALUE, TypeError, "Set duration to lowest value.");
+          DurationBoundaryConditionTest(-101.9, TypeError, "Set duration to a negative double.");
           DurationBoundaryConditionTest(101.9, null, "Set duration to a positive double.");
           DurationBoundaryConditionTest(0, null, "Set duration to zero");
-          DurationBoundaryConditionTest(NaN, new TypeError(), "Set duration to NaN");
+          DurationBoundaryConditionTest(NaN, TypeError, "Set duration to NaN");
         </script>
     </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/payment-request/onpaymentmenthodchange-attribute.https.html b/third_party/blink/web_tests/external/wpt/payment-request/onpaymentmethodchange-attribute.https.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/payment-request/onpaymentmenthodchange-attribute.https.html
rename to third_party/blink/web_tests/external/wpt/payment-request/onpaymentmethodchange-attribute.https.html
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..4c3802d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..d394bd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..85ca63d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..a0522344
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..080260e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..142fe0c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..68b6b47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..9599126
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..143b92c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..caccf27
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ff2b557
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..36175246
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b313e1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..2bfdf1f9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..15949d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..05b2a3d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..c3b6f6c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..e83bf31
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..35a96050d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..3d04cad1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..3057719
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..cf51c1e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d817ec4d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..72df667
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..43761121
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..edf6ad1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..0a3c40a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..9d4b569
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..42d3078
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..c172ab3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..2111886
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..774fc69e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a8590f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..acb73e75
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..460e246
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2dbf501e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..1eb9355
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..f28f6a8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d052d045
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..a213056
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..9dd49623
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..58fb3efe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..a351c33
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..0741ca04
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..841e317
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..69fdbcb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..e47f4ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1222252
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..4ecc3367b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..4f6a357
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..395db4218
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..ec9da8a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..79e0086
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2637d13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3e5b298
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c71ca11
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..af90b55
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9cf74fd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..3f88228
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..de626c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..6088023
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..481f3a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..4914ed1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..5248a24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4371218
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..68a6e85
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b0ef51f4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..5bdb3f4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..64f40b9ac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..49b21a9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0e68ad2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d45ec51
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..efa73828
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1e17c7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..44f55bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..11d28f2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8eb728b6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..fb4e67d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a2f1b182
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d0ebc66
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a6a7f916
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..97172fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fb5e75f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..fcc3079
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d24f65c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b20fac5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..00624e1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..89c7864
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..e23fa37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4325995
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..218bc1a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..f5b8b46
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..10227f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..70b830df
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..cc96f81
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c96b1a3b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..32fa5eb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8a3a657
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..96195c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ea6022d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..af7c40f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..781a8d4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f0dc7c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..683b8b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..edffa0f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5083fe3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..064e09b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d31d03a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8f1c471
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2d8fe730
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0693a8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..311bd13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2249c1a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f0544a56
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..eb5ed99
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2dc52498
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d8f11e5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..77e969c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7ce3088
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d6702e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ea3e7b68
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..3d23c29
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..92dc5c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..dcab0bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..064250e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..a804d60
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..99e306b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..db0e25e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..03f565a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..726c8d7f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..a88cb36
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..43c875b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a5aacc5b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..e8e550e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..a975e0a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7b4b354
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..019586e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..83a5347
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..83175ed9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ad0d2ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..9682e79
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..4e6c295
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..e21471be
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..31a5606
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7d8bcd93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..62bdb36
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..33058b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..60ade0b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c3c99c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..b94df6f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..8986821
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..464b20c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..64d312c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a7a0d8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..e34b0f4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..e79090f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6a44f60b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..f5650ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..f73d530e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..0bb37b4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..e075d359
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..6135003
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..8f596f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..658891c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..a237419
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..bf2c352
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..2d0b849
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..30177b58
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..dacd57f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..5f8812e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..73dbd33
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..8ec97700
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..047485e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..64f1003
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a23d7d2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..cef8fdb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a3aa1db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..941850e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..120efba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..d460510f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..50cf537
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..956d32a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..036392a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b33893e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..bdd7631
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b4ef6227
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b2c8a07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..8dd5eb8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..96705247
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..08b3847
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..e9f0d49
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..f88769f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a747db8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6fbdb686
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..a7e3dc5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..2a50287
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..acb2d52
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..8c16c05f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..496d12d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..1b0378a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..00bea0d3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ac2686b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0c72b8e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..d6c068b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..444b3ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..4e33ed95
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..d458756
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..26b3bfd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..a0ccb1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..c644544
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..d1f5a4d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..6311654
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..c38aec9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8dbe608
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..793297d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..e46888e7d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..62ce6a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..6afa660
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c32fe9b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..e7cbc17b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..7446d6c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..1f14c13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f27f5a9e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..3fc281e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..1343e93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..aa5a4dda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..16d6b37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..d9c2129
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..f383932
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7f0a790
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..afef1ce0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..e0fbeda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..f737d136
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9d94546
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f73a67d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..e532955
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..424154f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1e0fe60c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b1c1b2c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c6d6679e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..0ec1d0588
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..1b5110c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..43e2070
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c82ebd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..79c204fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d7f31ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..52287790
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5dc0587
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..34fa9f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0de1d990
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..ed256fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..1a93d1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..25f1970
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..54c3a07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..346d4c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..15e1b94c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4f7ed37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..7fa22ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c16b91a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..66b00c80
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..536a9459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..7ef3918
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..5b1bf55
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7c8843be
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..caa7bc3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..6e61348
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..71c7443
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..b50c96be
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..986de21
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..c6fe553
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..4cbd430
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4bbc030
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d3c1792
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..a91366ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..00f9d4ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..44c7e6e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..ff30b9ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..775025d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..6eb042c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..5fe6c8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..0002001
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..47540313
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..56552a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..59fd3b6e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0ed6e09
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..6d9de99
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..b0e2201
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..c782e4c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..fdd5ecf8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..73566bf3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..1417dc92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..76ba3f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..7b9302e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..2de8c8c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..5ab7aac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..94899b0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2ca30553
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..79b0e70
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..ad3eb19f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..4e8730f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..647a772
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..12625ee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..b8c9c4a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..99e234cb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..1de1d44
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..19da7b57a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..d8ff85a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1ee7b80
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3022b647
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b9cf476c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..36c43b3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..a6bb6f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..e914532
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c512676
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..793c4a90b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5e7abe8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5eea8de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6bd1a59
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..dee29c95
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..b4129f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..af904ee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9d2464d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..52c65b0d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..8f326c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..eeacfc7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..629f0b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0f195ad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..3aef44d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..02b9018c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..de558ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..5b86e03
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a04ef6ca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..837cc3d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b39a5057
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ee7241a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..77028a53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8ae4498
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7f2c372
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d430552
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..20b7dd5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..475a0bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..17ab76a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b8d754a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fd82790
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f51a49e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..903caf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..408d57c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fcc2d6a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..437779c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..08b5b06
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ccf4002
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c687779
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3bee5c4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..380a4a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..e0f8eff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1b7606dc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fc229db6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..515f07ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..efa5245
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..03a0fcb6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9e19c53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..24ce0290
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..66ac713
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3f68452
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1ac53f3c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9dfdd01
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..e86f455
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..74fe3da8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..814ee1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..86288171
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0b3c0515
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..06034141
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ff5c12b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c3e0c85
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..475118b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8ffdffb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..e62460c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0f602308
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..28d8587
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c865d14f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3e5a447
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..cd3fa41e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..e5151b0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..26e1ad1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3beb9397
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..704a84c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..5ed3aee5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..1101eb0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..6a5fb25d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..e7c2e37a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..09f9619
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..57b2a1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..620a3ee0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ef8f517
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b56e676
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..112dc5a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..1ec5d42
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..57fa649a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..734d225
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..9082bf4c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9b76a68
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..75a991a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..c25c3de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..701f2d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d290db53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3a71203
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..3e85f68
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..34484fd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..f59b0b4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..01eec1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..c221f6f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..a9aa1d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..581e7ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..4d56130
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b45eb6e9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..eee2437
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f29bb36
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c8969f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..5d9bc69
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..dc3a34c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7406e3f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..d8256f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..be2c3ca9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..0bc9282
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..490821d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..bddaefc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b4d36fa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..b4f501fb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..cb62336
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c382dad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..597dd7e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c879e82
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..56225db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c1fb0ad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a18c4e63
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..207b7fd9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d3e4aee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b018ba12
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1b8bd35
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8d6a0159b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..93799cad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..4eeff10
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..833ccfe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..85d74f6f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..84662c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..783a4281
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..bcb3912
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..915430e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..06e2040
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..4c44898
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..470a1fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c69cc65
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..f88769f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a747db8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6fbdb686
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..a7e3dc5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..2a50287
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..acb2d52
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..8c16c05f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..496d12d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..1b0378a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..00bea0d3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ac2686b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0c72b8e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..d6c068b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..444b3ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..4e33ed95
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..d458756
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..26b3bfd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..a0ccb1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..c644544
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..d1f5a4d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..6311654
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..c38aec9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8dbe608
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..793297d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..e46888e7d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..62ce6a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..6afa660
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c32fe9b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..e7cbc17b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..7446d6c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..1f14c13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f27f5a9e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..3fc281e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..1343e93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..aa5a4dda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..16d6b37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..d9c2129
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..f383932
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7f0a790
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..afef1ce0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..e0fbeda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..f737d136
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9d94546
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f73a67d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..e532955
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..424154f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1e0fe60c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b1c1b2c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c6d6679e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..0ec1d0588
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..1b5110c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..43e2070
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c82ebd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..79c204fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d7f31ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..52287790
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5dc0587
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..34fa9f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0de1d990
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..ed256fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..1a93d1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..25f1970
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..54c3a07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..346d4c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..15e1b94c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4f7ed37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..7fa22ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c16b91a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..66b00c80
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..536a9459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K+1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..54160250
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a14fab1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..853e3ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..f296d012
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..2d3b451e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..30a0ee65
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..8576b77
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..7e4f30fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..dcce9ea64
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..a2b4131
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..74ed4c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8f19bf4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c6591c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..b3ae035
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..ca967c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..7a62054
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..806fab6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..f71d39ca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..978ac1d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..c9db3acd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..3decd3a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..9277073b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..912e6135
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9e09c25
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b2c3699
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..36c37a40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..b994dde
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..5da33c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..efa5d31
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..3787093e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..d6c6c6b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..5226e58
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..e7420da
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..95816eb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8fa1801d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..f268a6e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..f5d1eed
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..a9df49d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..87c7b14b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..21c9f25
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..1009f35
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..bdebaee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..598bf0aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f2e819c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b8ddb48
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..4c6aa0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8c499d35
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..36692fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..e8578c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..5d489db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..9ede931d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..9ca994d5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..37d2238
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3f69bbd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..43bfecf1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..67900f9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..dc43bf41
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..32bedff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..1fe69c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..90503c86
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..dd9e20f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..92fd4160
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..f5d55eb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..9ca3d89
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8797d24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a2163286
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..f47d931
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..1cc027e3f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..9577ddd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..fc5b92f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9a2b056c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6f3bb726
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..731c6fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1b17f0f9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..f3d121e8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5971b59f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..055ec8c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..aad5ff4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ce0835d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6360674
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9c3604a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b8933df
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b341ff2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d0172ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2dfd23da
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5f01dd0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a20fbdef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..19f7628
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..45b3f76
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..25794b0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4808c92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0fccf00
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..122f097
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ce7aa504
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4ffafe2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..decf2c4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2b17369
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c4d44c7d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..110edf5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..39adae2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ba6dbd5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c3680a1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4073a91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..963e613a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c4bcd48
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..202fa0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..520f0941
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..00a20bd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ca4dcf7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b189fa632
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2a8bb23
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..600ce02
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..824fb33
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4c83fde
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0f3d787
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c33c745d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..76eb7bd9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..36088e0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..117a77b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0cdb3f1c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ef2c352
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..fef103a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b30e65ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c85a4b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..99db386
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..4211b11a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..15a90bd7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..5dc1482e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f209625f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..0ba5f0d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..603523a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..aa2f229
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8456a5f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..5c598da
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..2027d54
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..764fbf1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..410ae2bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0efdd54
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..cfb09c1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..3b182ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..ebe29f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..2659b7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..5093dfc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..9d220ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c80120d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..949beb9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..1562269
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..9a84155
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..7d4eba4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..e822bc3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..89a3569
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..09043d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..4771692
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..f0334b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..5312351
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c3c6b24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a0d4eadc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..587548d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..38d7bf856
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..62b6e24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..47834e9d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..2afe993
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..11040bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..c33eb02
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..9bb1e5b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..eae638c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..527328f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6b706c4d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c96c701e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..eb57c2c11
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..d5aefdb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..47775c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..39ae72f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d2f928e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2dfdeb45
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..efa5185
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7bbea81
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ed68f19
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ab6d388f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..40bc6f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..75ea4bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ddc655c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..d140b8bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..5f9dafe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..a2be99f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..030d5f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..18500c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..bdbad5ca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..b079438f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..b21409a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..f52736e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..5643bee8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..929f9a93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..221ad2be
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..db0b3e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..44639bdd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..fd93d32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..89bc43c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..4ec3d90
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..420d76e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..8d243e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1dc719ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2136d9f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..0689e03
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..4aeaf47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..5ee203b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..8c1c8e6b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0feeb305
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..51fb18e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..364a03ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..dcf6bfbf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..61fe4dee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..6c70039b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a54f711b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..25e9320d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..1985522
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c01c5e9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..e8839b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c3e3a520
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..b8c03e92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..7cffff9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..581789c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..a7fa4e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..9822fe8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..6b46593
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..46e82825
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0756276
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..9f814fa8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..129e3c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..af8a97d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..40fa088
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..9dfd868
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..64df30a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..34be694
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..a08f1b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..6b57a55
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..f900690
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..7fa850e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..68f01c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..dc95dc9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..1cc91cb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d6809de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..b78fc71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c8a46e5d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..82789e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8c84a95
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9754573
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a6865e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7ff5670a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..2eb09383
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..3462597
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9250376
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..1ae3ec32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..d763c5f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..3e4776ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..984888d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1012f88
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..293f3b8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..564e62a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7a83e94
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..446cf982
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..6635dfc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..e83ae4c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..15d4e795
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7658b82
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..6248d05
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..48d5d351
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..b46c6e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..12cae73
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..ded040b8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..587d33bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d9f2b319
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6deeb10
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..d398f8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..ea6088e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..dfcf3cf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..ab49057
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..364b47c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..abeafee9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..06cd341
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..b652739
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..29da61ad2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..b5883fc31d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8bf24a8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5bfca7b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..5e976f19
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..238d6a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..42ec3e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..d5ad6f60
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..a8cb418f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..edc3c13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..2f7f2e4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..d538224
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..46285308
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..10ce4ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..eda4234
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a960370
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..07795d23
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..85e10c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..b212c97
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..ed9b0181
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0fca364
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..dcde2682
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..65e4b53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..4ccd1f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..5ea4164
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..2d750ef7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f32e140
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4245f1c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..a8b1d91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..68024657
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..b91241e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..b3b48ac7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b962171e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..88c548a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..9a29ad47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4f7253c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b3dee8c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..75a14d71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..7c63fcb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..c05a4c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..086d590
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..972017b0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..5ef3f2fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..b64c282
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1f2512fa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7244d148
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..2e692b8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..747e4a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..3d83d230
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..2afe68e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a6f537f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..86b2620
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1b6f976
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..74320c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..27c78b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..9e475ea1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ea75a29
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..331c30ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..65920c7a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a4f4559
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..50861fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..95a0c8c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1adcb10
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ad9673e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d49bf50
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..269ac8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5f550fd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..973e6a05
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0724059
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..98dd2b22
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..034c0d49
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8506cff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b2d0ccb2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..f79fb60
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b2c65b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5db950e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..cb0c92e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7b4500d2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ad8ce8ad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..09e0462
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..97aa7c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..18e2cac2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c1b0154
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..caa7e1d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a3fd164b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d3b334d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..e1d95b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..49a78b0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ebb61bf7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d394398
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..bb2467f6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..02b88da
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..95424dd4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..01005e24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..76dda5d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5a794cf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0d8ed7dd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..93bcc8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..27a35a9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..169b6020
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6fe020cc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..5e25fbc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..db57ebb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..426f6d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..746c5e0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..22c37bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..1caf3ee2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..789b1db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..68f05c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b16af6a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..1df1732
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5e8f032
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a2a5ee2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..a36ce68
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..50cef3f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..6401377
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..0a7522a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..f4ecf9e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..d27594f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..f78e7b8a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..7566c57
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..7041e4cd613
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..67daf36
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ee0a21c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..98e6801
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..e254449c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..1d98050d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..cc68d00
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..93ef3c68
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..44a151f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..7000b2c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..a2eead77
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..3a89194
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..283bd24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..1f03d22
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3ea9eb90
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c22b6f66
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..87c5895
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..d557c463
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..2d52965
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..f75e8e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..5105b35
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..1e5417d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..82e7771
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..f158ca6a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..ffcca16
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..4ef7da52
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c90600d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2229564
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..d631404
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..9b9c193
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..c318498
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..22858a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..02d815b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..59d0107
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..7611f0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..62360e29
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1f5f648
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4f3add3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..4dc0e6d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..4dda844
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..8eac0309
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..fd6a3df
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..09c1dfc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..5d479a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..bfd916d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b86ee7e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..6ce7c97
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..569ba81
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d6c2712a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..e6415f4b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..5643bee8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..929f9a93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..221ad2be
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..db0b3e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..44639bdd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..fd93d32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..89bc43c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..4ec3d90
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..420d76e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..8d243e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1dc719ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2136d9f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..0689e03
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..4aeaf47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..5ee203b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..8c1c8e6b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0feeb305
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..51fb18e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..364a03ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..dcf6bfbf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..61fe4dee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..6c70039b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a54f711b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..25e9320d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..1985522
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c01c5e9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..e8839b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..c3e3a520
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..b8c03e92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..7cffff9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..581789c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..a7fa4e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..9822fe8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..6b46593
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..46e82825
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0756276
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..9f814fa8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..129e3c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..af8a97d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..40fa088
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..9dfd868
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..64df30a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..34be694
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..a08f1b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..6b57a55
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..f900690
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..7fa850e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..68f01c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..dc95dc9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..1cc91cb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d6809de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..b78fc71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c8a46e5d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..82789e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8c84a95
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9754573
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a6865e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7ff5670a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..2eb09383
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..3462597
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9250376
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..1ae3ec32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..d763c5f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..3e4776ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..984888d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1012f88
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..293f3b8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..564e62a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7a83e94
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..446cf982
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K-1/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..a9fefc53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..fe269b59
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..bdab90c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..2166f0dd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..f2729cb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..a73e9d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..50ece9c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..c955a1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..f71c3b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..882d657
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..d4f39f9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a7b0e7f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..32c26894
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..8ea4786
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..7354891
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..823c727
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..79b9f206
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..28b0287
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..1d0b258
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..8eccc56
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..dc5b1c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..98ff9597
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..de37be5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4d034ab4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..a65b5649
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..2503c58
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d8c793f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..7ee8f92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..e59b8f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..e8c78a21
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9324cf72
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..99ce0e9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..8b130684
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..18bb216
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..e3c20928
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a78f1b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..7f9a2bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..0027a51ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..dfdf17c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..d84ed7e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..b2f7070
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..b8c847ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ca13a3b6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..b48d120
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..132ab103
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..dfa840a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3fe9772e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a260b4b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..e8c45de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..1992b36e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..a0f7746
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..2deb7c6b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2ff9d5f36
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4c6a951
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2a0fc0f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5e88f73
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..7d8a4af
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c7f6090
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..fdfb7293
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..4766610
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..4f08a62
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..436de59
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a8f54c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..6757257
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2faa3f2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..69d15044
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..12959fb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..b5183cb3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..ad4a1bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..1bab6fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..180358e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: no-referrer-when-downgrade
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7f35dbb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..98941a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ad62a67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..866d3b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..bf9f28e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..773e5c81
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..15fe7d0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..9f24d9b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..bffff9b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b92a16d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..cb11dfb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..49182a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1e1559eb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..05963c2d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0e7d536a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ab8585fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c951187
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..a15ea7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4d10d3e4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c396d388
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7f902f70
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..34582b4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9fce73c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..43b06e91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..0b4d5a1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..9a30544
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..da220eb5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3cef1b4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..305c63c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..cfafc716
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2eb77827
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..88d31a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8e987ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6b99399a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..e5de56b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..be66cf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3635ee6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0645477
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..4fdb3e0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..35749e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a5e4575a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..179e958
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..f53ad35
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4ad7dcf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a5571e07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..22eacd0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a29ba3db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4ab18ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a5e08751
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a8babc7e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..346654a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..7df84deb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d649025
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..4cff1d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: strict-origin-when-cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..b49b87c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..29a1698f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..16252eb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..75e4b8d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..9922c8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..3e77a7bd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..9789b3a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..7d00a13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..e5182860
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..2fda3a8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8de62ae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..bbd7003
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..6b49c22f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..8467efc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..b86b55c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..09fc8694
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..6d2446f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..fa7c97b57
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..864ed4d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..31857f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..807c2ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..fbd5a0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b55aa72
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7fb7b273
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..7ef73d70
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..a3282d2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d2fd9f38
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..05d5e33
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..54aec14
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..734b5e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..e66736a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..03351c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..a870fa6a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..3d615435
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6498c9b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9812694
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..04b442f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..04bb78f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..05e88291
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..6cb89d4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..09ba06f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..5ddbbbd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..daa75cd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..d0159817
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..92fc05e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..cd607f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..5080660
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fa1d48e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b0aef7f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..fb5aab7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..5975e74
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..45506e97d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..066f65c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5fbdf42
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8dbf224a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..eabdcb1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ea0ff96
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5a99955
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..6b13660
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..a802ecb5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..fb18a55
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..44b1ad4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..fb68b24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..3f20854
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..067b74f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..63e27261
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..9f2b1430
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..b92e149
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..16eee27f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..9e18ad80
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers
new file mode 100644
index 0000000..c1d3fd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+Referrer-Policy: unsafe-url
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..e1b9c07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..9df9f18
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b211107
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..c7aa9dc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..929c4c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..b2fea46
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..e08868bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..827a454
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..ced41a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..ab873760
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4715330
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..76d4705
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c026b45f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..6870f2cfd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..1a3acf28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..87981d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..186d94ba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..bfe3c14
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..265b108
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..51fb8801
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..078b803
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..078aef4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..65b6e91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7ab79f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..951b9a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c2e72a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..da910c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..be9b5c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..69bae396
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..2c800d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ff6aee7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..ce1ddee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..63b43d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..ed497a1c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f8d97a0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..611164c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c680915
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..915a88c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..28122a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..2755310
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..136ddb9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..d011a88
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..d87d5850
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..2c6bf466
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..bf058956
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..3f616dec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0b79605
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..e903577
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c812e2a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..88b68ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..47a8bb1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..a5e98f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3b6c78dc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ca6f248
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..520bea1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..298248e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3b6630c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d6f2ec4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..d78ce1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..314e15d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..b098e917
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..43f924c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..10dc03f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..541415c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f9d4101
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fa92ffe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b1d2d924
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..5fb91ef9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..135bf134
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..db85864
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..22c4900
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..65a3ddc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d1b3ebc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..38abcd5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..858abba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..e138dba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..7f0a639
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..9f271c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..1be7385e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..442632c4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..6ef2055
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..3bed586
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..4a1f429
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c55848b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..d9d9b5e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..8e814e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..22ece65c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..40e3608
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ecfcf41
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..ecab754
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..c76f5c3b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..9041c1e8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..db6c8a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7a242da4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c57730703
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..39a65cf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..03588d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..2253f93b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..d5ff6947
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..6e0e170d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..08be9fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..49205634
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..d0cdf5e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..6b1f987
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..49d5b41
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..64ea545
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..f193ced
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..31ad993e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..fed4049
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..053cd8d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..35ed15e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..014693c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..886ea8c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..23685b8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..822d196
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..5cda327f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3c63a8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5836897
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..975110b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..4641de8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..a2b9102
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..114a40c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..9723096
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ec8ed05
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..aa336f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ff4f0b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0b2b0ad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..af09ae1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..99d4f8be
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..788cf67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ac3aadb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..8329e74
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..e964777
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..b95f2fc8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..95b0ca6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..bf1f4f4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..cbfa298
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..3be3c7c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..e5ae1b3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..f3bb4286
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="no-referrer-when-downgrade">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a007806
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..604a1e52
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..37b4b4c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..76c03a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..f804ae1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..218e7974
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..509b5c212
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..06518b3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6d3bbad2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f3d89afa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..8a0f895
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..8ef99fd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..c809622
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b8d88a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5cd3774b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..ef1c290
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..426d5bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a5678f0d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..7fbef77
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a04e160
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1a5830e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b7cbd0f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..1a077590
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..2a6023d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..db4f2c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7667e64
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0a0b8dd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ad1ea96
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f9959d9c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..a459c72
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..20483ab
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b291030
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c99c5c65
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ce4ad27
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'same-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="same-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b18f0df
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..84a9a80
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..04971fe5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..81e99b3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..be9fdbff5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..fe67437
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..5a1ec96
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b311389
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d3fb9bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4631af5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..dd6362c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..c823c6e7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..6801b70f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..a55b41a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..35727cd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0e33386
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d08978606
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="strict-origin-when-cross-origin">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..672bf6d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..2c5d115
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..77679ab
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..2ed5304
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..f1724215
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..b86e831
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..2849ca8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..572e04d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..b589362f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..695e0d3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..41ba30a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..1f4442d0f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..53e502f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..786e43ee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..cf30ceb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..ba7e39d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..b25f36c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..49352a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..1c84b97
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..1fd86c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..625b3cb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..2ab41c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..b463dfd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..00a10e1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c1a52fe0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c4ff380
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..863369c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..9240998
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0f464065
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..934d17c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..270e81a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..abddc97
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..38bde67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..0c4a9a38
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3c6efb4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..77a4e88b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..1194451
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..18ce22b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..95ad996
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..1d558cf5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..0f269d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..1966a47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..caa83b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..2811197
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..86785b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..402f6808
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..db7a1530
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..70fc272e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b6f2c8a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..925cb67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..5ac8f25
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..2063221
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f1f4f3bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..030de32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..2914c71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..586b673
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..54bbe38
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..9f71e045
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..356475b6a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..01ef4b08
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..e879560
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..ba21627
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..59c4d52
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..d067cc8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..889acac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..25d1857e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..51b71a9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..f0a18a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..c11a9c40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..9cc85b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is set to 'unsafe-url'</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that all sub-resources get the stripped referrer URL.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <meta name="referrer" content="unsafe-url">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..e1b9c07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..9df9f18
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..b211107
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..c7aa9dc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for a-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "a-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..929c4c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..b2fea46
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..e08868bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..827a454
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..ced41a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..ab873760
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.keep-origin.http.html
new file mode 100644
index 0000000..4715330
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.no-redirect.http.html
new file mode 100644
index 0000000..76d4705
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c026b45f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.keep-origin.http.html
new file mode 100644
index 0000000..6870f2cfd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.no-redirect.http.html
new file mode 100644
index 0000000..1a3acf28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.swap-origin.http.html
new file mode 100644
index 0000000..87981d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for fetch to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..186d94ba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..bfe3c14
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..265b108
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..51fb8801
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..078b803
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..078aef4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..65b6e91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..7ab79f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..951b9a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..c2e72a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..da910c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..be9b5c3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for iframe-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "iframe-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..69bae396
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..2c800d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..ff6aee7c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..ce1ddee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..63b43d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..ed497a1c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f8d97a0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..611164c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c680915
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..915a88c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..28122a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..2755310
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for img-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..136ddb9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..d011a88
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..d87d5850
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..2c6bf466
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..bf058956
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..3f616dec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html
new file mode 100644
index 0000000..0b79605
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html
new file mode 100644
index 0000000..e903577
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html
new file mode 100644
index 0000000..c812e2a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html
new file mode 100644
index 0000000..88b68ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html
new file mode 100644
index 0000000..47a8bb1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html
new file mode 100644
index 0000000..a5e98f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for script-tag to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3b6c78dc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..ca6f248
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for sharedworker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "sharedworker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html
new file mode 100644
index 0000000..520bea1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html
new file mode 100644
index 0000000..298248e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-classic to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html
new file mode 100644
index 0000000..3b6630c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html
new file mode 100644
index 0000000..d6f2ec4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for worker-module to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html
new file mode 100644
index 0000000..d78ce1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html
new file mode 100644
index 0000000..314e15d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html
new file mode 100644
index 0000000..b098e917
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html
new file mode 100644
index 0000000..43f924c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html
new file mode 100644
index 0000000..10dc03f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html
new file mode 100644
index 0000000..541415c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to cross-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "cross-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.keep-origin.http.html
new file mode 100644
index 0000000..f9d4101
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.no-redirect.http.html
new file mode 100644
index 0000000..fa92ffe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.swap-origin.http.html
new file mode 100644
index 0000000..b1d2d924
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-http.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-http origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-http",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.keep-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.keep-origin.http.html
new file mode 100644
index 0000000..5fb91ef9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.keep-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and keep-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "keep-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.no-redirect.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.no-redirect.http.html
new file mode 100644
index 0000000..135bf134
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.no-redirect.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and no-redirect redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.swap-origin.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.swap-origin.http.html
new file mode 100644
index 0000000..db85864
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr/same-https.swap-origin.http.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec referrer-policy/4K/` -->
+<html>
+  <head>
+    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
+    <meta name="assert" content="Referrer Policy: Expects stripped-referrer for xhr to same-https origin and swap-origin redirection from http context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.sub.js"></script>
+    <script src="../../../../../generic/test-case.sub.js"></script>
+    <script src="../../../../generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "stripped-referrer",
+          "origin": "same-https",
+          "redirection": "swap-origin",
+          "source_context_list": [],
+          "source_scheme": "http",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt b/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt
index 328b43a0..ccf55d2 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt
@@ -4,6 +4,6 @@
 mozdebug==0.1.1
 # Pillow 7 requires Python 3
 pillow==6.2.1  # pyup: <7.0
-urllib3[secure]==1.25.7
+urllib3[secure]==1.25.8
 requests==2.22.0
 six==1.14.0
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/executors/base.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/executors/base.py
index 3d8af4d..603c606e 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/executors/base.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/executors/base.py
@@ -1,6 +1,5 @@
 import base64
 import hashlib
-from six.moves.http_client import HTTPConnection
 import io
 import json
 import os
@@ -8,8 +7,10 @@
 import traceback
 import socket
 import sys
-from six.moves.urllib.parse import urljoin, urlsplit, urlunsplit
 from abc import ABCMeta, abstractmethod
+from six import text_type
+from six.moves.http_client import HTTPConnection
+from six.moves.urllib.parse import urljoin, urlsplit, urlunsplit
 
 from ..testrunner import Stop
 from .protocol import Protocol, BaseProtocolPart
@@ -293,7 +294,7 @@
             status = e.status
         else:
             status = "INTERNAL-ERROR"
-        message = unicode(getattr(e, "message", ""))
+        message = text_type(getattr(e, "message", ""))
         if message:
             message += "\n"
         message += traceback.format_exc(e)
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/handlers.py b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/handlers.py
index efc1a16a..c18fa2d 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/handlers.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/handlers.py
@@ -95,15 +95,29 @@
             link = urljoin(base_path, "..")
             yield ("""<li class="dir"><a href="%(link)s">%(name)s</a></li>""" %
                    {"link": link, "name": ".."})
+        items = []
+        prev_item = None
         for item in sorted(os.listdir(path)):
+            if prev_item and prev_item + ".headers" == item:
+                items[-1][1] = item
+                prev_item = None
+                continue
+            items.append([item, None])
+            prev_item = item
+        for item, dot_headers in items:
             link = html.escape(quote(item))
+            dot_headers_markup = ""
+            if dot_headers is not None:
+                dot_headers_markup = (""" (<a href="%(link)s">.headers</a>)""" %
+                                      {"link": html.escape(quote(dot_headers))})
             if os.path.isdir(os.path.join(path, item)):
                 link += "/"
                 class_ = "dir"
             else:
                 class_ = "file"
-            yield ("""<li class="%(class)s"><a href="%(link)s">%(name)s</a></li>""" %
-                   {"link": link, "name": html.escape(item), "class": class_})
+            yield ("""<li class="%(class)s"><a href="%(link)s">%(name)s</a>%(headers)s</li>""" %
+                   {"link": link, "name": html.escape(item), "class": class_,
+                    "headers": dot_headers_markup})
 
 
 def wrap_pipeline(path, request, response):
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/pipes.py b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/pipes.py
index e5d6e1c..3500948 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/pipes.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/pipes.py
@@ -396,8 +396,8 @@
     def uuid(request):
         return str(uuid.uuid4())
 
-    # Maintain a whitelist of supported algorithms, restricted to those that
-    # are available on all platforms [1]. This ensures that test authors do not
+    # Maintain a list of supported algorithms, restricted to those that are
+    # available on all platforms [1]. This ensures that test authors do not
     # unknowingly introduce platform-specific tests.
     #
     # [1] https://docs.python.org/2/library/hashlib.html
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html
index 0b57c3a..8ae1625 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html
@@ -6,22 +6,22 @@
 <meta http-equiv="Content-Security-Policy" content="trusted-types SomeName JustOneMoreName">
 <body>
 <script>
-  // Whitelisted name test
+  // Allowed name test
   test(t => {
     let policy = window.trustedTypes.createPolicy('SomeName', { createHTML: s => s } );
     assert_equals(policy.name, 'SomeName');
-  }, "Whitelisted policy creation works.");
+  }, "Allowed-name policy creation works.");
 
-  // Another whitelisted name test
+  // Another allowed name test
   test(t => {
     let policy = window.trustedTypes.createPolicy('JustOneMoreName', { createHTML: s => s } );
     assert_equals(policy.name, 'JustOneMoreName');
-  }, "Another whitelisted policy creation works.");
+  }, "Another allowed-name policy creation works.");
 
-  // Non-whitelisted names test
+  // Non-allowed names test
   test(t => {
     assert_throws(new TypeError(), _ => {
      window.trustedTypes.createPolicy('SomeOtherName', { createURL: s => s } );
     });
-  }, "Non-whitelisted policy creation throws.");
+  }, "Non-allowed name policy creation throws.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
index 0b57c3a..8ae1625 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
@@ -6,22 +6,22 @@
 <meta http-equiv="Content-Security-Policy" content="trusted-types SomeName JustOneMoreName">
 <body>
 <script>
-  // Whitelisted name test
+  // Allowed name test
   test(t => {
     let policy = window.trustedTypes.createPolicy('SomeName', { createHTML: s => s } );
     assert_equals(policy.name, 'SomeName');
-  }, "Whitelisted policy creation works.");
+  }, "Allowed-name policy creation works.");
 
-  // Another whitelisted name test
+  // Another allowed name test
   test(t => {
     let policy = window.trustedTypes.createPolicy('JustOneMoreName', { createHTML: s => s } );
     assert_equals(policy.name, 'JustOneMoreName');
-  }, "Another whitelisted policy creation works.");
+  }, "Another allowed-name policy creation works.");
 
-  // Non-whitelisted names test
+  // Non-allowed names test
   test(t => {
     assert_throws(new TypeError(), _ => {
      window.trustedTypes.createPolicy('SomeOtherName', { createURL: s => s } );
     });
-  }, "Non-whitelisted policy creation throws.");
+  }, "Non-allowed name policy creation throws.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any-expected.txt b/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any-expected.txt
new file mode 100644
index 0000000..8d14673
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+FAIL Grow with exported-function argument WebAssembly.Module(): Compiling function #0:"fn" failed: trailing code after function end @+32
+FAIL Grow with non-function argument assert_throws: function "() => table.grow(2, {})" did not throw
+FAIL Grow with JS-function argument assert_throws: function "() => table.grow(2, () => true)" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.js b/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.js
new file mode 100644
index 0000000..807aea9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.js
@@ -0,0 +1,42 @@
+// META: global=jsshell
+// META: script=assertions.js
+// META: script=/wasm/jsapi/wasm-constants.js
+// META: script=/wasm/jsapi/wasm-module-builder.js
+
+// Test cases for changes to the WebAssembly.Table.prototype.grow() API that
+// come in with the reftypes proposal: the API takes a default argument, which
+// for tables of anyfunc must be either an exported wasm function or null.
+//
+// See:
+//   https://github.com/WebAssembly/reference-types
+//   https://bugzilla.mozilla.org/show_bug.cgi?id=1507491
+//   https://github.com/WebAssembly/reference-types/issues/22
+
+test(() => {
+  const builder = new WasmModuleBuilder();
+  builder
+    .addFunction("fn", kSig_v_v)
+    .addBody([kExprEnd])
+    .exportFunc();
+  const bin = builder.toBuffer()
+  const argument = { "element": "anyfunc", "initial": 1 };
+  const table = new WebAssembly.Table(argument);
+  const fn = new WebAssembly.Instance(new WebAssembly.Module(bin)).exports.fn;
+  const result = table.grow(2, fn);
+  assert_equals(result, 1);
+  assert_equals(table.get(0), null);
+  assert_equals(table.get(1), fn);
+  assert_equals(table.get(2), fn);
+}, "Grow with exported-function argument");
+
+test(() => {
+  const argument = { "element": "anyfunc", "initial": 1 };
+  const table = new WebAssembly.Table(argument);
+  assert_throws(new TypeError(), () => table.grow(2, {}));
+}, "Grow with non-function argument");
+
+test(() => {
+  const argument = { "element": "anyfunc", "initial": 1 };
+  const table = new WebAssembly.Table(argument);
+  assert_throws(new TypeError(), () => table.grow(2, () => true));
+}, "Grow with JS-function argument");
diff --git a/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.worker-expected.txt
new file mode 100644
index 0000000..4354c6fb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.worker-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = Uncaught 
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt
index 13176da5..ff3d593e 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt
@@ -1,9 +1,8 @@
 This is a testharness.js-based test.
-Found 50 tests; 43 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS createDataChannel with no argument should throw TypeError
 PASS createDataChannel with closed connection should throw InvalidStateError
-FAIL createDataChannel attribute default values assert_equals: expected (string) "low" but got (undefined) undefined
-FAIL createDataChannel with provided parameters should initialize attributes to provided values assert_equals: expected (string) "high" but got (undefined) undefined
+FAIL createDataChannel attribute default values assert_equals: expected "blob" but got "arraybuffer"
+FAIL createDataChannel with provided parameters should initialize attributes to provided values assert_equals: expected "blob" but got "arraybuffer"
 PASS createDataChannel with label "foo" should succeed
 PASS createDataChannel with label null should succeed
 PASS createDataChannel with label undefined should succeed
@@ -30,8 +29,6 @@
 PASS createDataChannel with id -1 should throw TypeError
 PASS createDataChannel with id 65535 should throw TypeError
 PASS createDataChannel with id 65536 should throw TypeError
-FAIL createDataChannel with priority "high" should succeed assert_equals: expected (string) "high" but got (undefined) undefined
-FAIL createDataChannel with invalid priority should throw TypeError assert_throws: function "() => pc.createDataChannel('', { priority: 'invalid' })" did not throw
 PASS createDataChannel with too long label should throw TypeError
 PASS createDataChannel with too long label (2 byte unicode) should throw TypeError
 PASS createDataChannel with same label used twice should not throw
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html
index 943e572..350f7156 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html
@@ -34,7 +34,6 @@
         readonly attribute USVString           protocol;
         readonly attribute boolean             negotiated;
         readonly attribute unsigned short?     id;
-        readonly attribute RTCPriorityType     priority;
         readonly attribute RTCDataChannelState readyState;
         readonly attribute unsigned long       bufferedAmount;
                  attribute unsigned long       bufferedAmountLowThreshold;
@@ -51,16 +50,6 @@
         boolean         negotiated = false;
         [EnforceRange]
         unsigned short  id;
-        RTCPriorityType priority = "low";
-    };
-
-  4.9.1.  RTCPriorityType Enum
-
-    enum RTCPriorityType {
-      "very-low",
-      "low",
-      "medium",
-      "high"
     };
  */
 
@@ -102,8 +91,6 @@
         member.
     15. Let channel have an [[DataChannelId]] internal slot initialized to option's id
         member, if it is present and [[Negotiated]] is true, otherwise null.
-    17. Let channel have an [[DataChannelPriority]] internal slot initialized to option's
-        priority member.
     21. If the [[DataChannelId]] slot is null (due to no ID being passed into
         createDataChannel, or [[Negotiated]] being false), and the DTLS role of the SCTP
         transport has already been negotiated, then initialize [[DataChannelId]] to a value
@@ -148,7 +135,6 @@
   // Since no offer/answer exchange has occurred yet, the DTLS role is unknown
   // and so the ID should be null.
   assert_equals(dc.id, null);
-  assert_equals(dc.priority, 'low');
   assert_equals(dc.readyState, 'connecting');
   assert_equals(dc.bufferedAmount, 0);
   assert_equals(dc.bufferedAmountLowThreshold, 0);
@@ -165,8 +151,7 @@
     // Note: maxPacketLifeTime is not set in this test.
     protocol: 'custom',
     negotiated: true,
-    id: 3,
-    priority: 'high'
+    id: 3
   });
 
   assert_true(dc instanceof RTCDataChannel, 'is RTCDataChannel');
@@ -177,7 +162,6 @@
   assert_equals(dc.protocol, 'custom');
   assert_equals(dc.negotiated, true);
   assert_equals(dc.id, 3);
-  assert_equals(dc.priority, 'high');
   assert_equals(dc.readyState, 'connecting');
   assert_equals(dc.bufferedAmount, 0);
   assert_equals(dc.bufferedAmountLowThreshold, 0);
@@ -189,7 +173,7 @@
   });
   assert_equals(dc2.label, 'test2');
   assert_equals(dc2.maxPacketLifeTime, 42);
-  assert_equals(dc.maxRetransmits, null);
+  assert_equals(dc2.maxRetransmits, null);
 }, 'createDataChannel with provided parameters should initialize attributes to provided values');
 
 /*
@@ -368,28 +352,6 @@
 }
 
 /*
-  6.2.  RTCDataChannel
-    createDataChannel
-      17. Let channel have an [[DataChannelPriority]] internal slot initialized to option's
-          priority member.
- */
-test(t => {
-  const pc = new RTCPeerConnection();
-  t.add_cleanup(() => pc.close());
-
-  const dc = pc.createDataChannel('', { priority: 'high' });
-  assert_equals(dc.priority, 'high');
-}, 'createDataChannel with priority "high" should succeed');
-
-test(t => {
-  const pc = new RTCPeerConnection();
-  t.add_cleanup(() => pc.close());
-
-  assert_throws(new TypeError(),
-    () => pc.createDataChannel('', { priority: 'invalid' }));
-}, 'createDataChannel with invalid priority should throw TypeError');
-
-/*
   6.2.  createDataChannel
     5.  If [[DataChannelLabel]] is longer than 65535 bytes, throw a TypeError.
  */
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/animations/rotate-transform-equivalent-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/animations/rotate-transform-equivalent-expected.png
index a4ab62b..65f2096c 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/animations/rotate-transform-equivalent-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/animations/rotate-transform-equivalent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/3d-cube-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/3d-cube-expected.png
index b6878b0..505747a 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/3d-cube-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/3d-cube-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/contents-opaque/control-layer-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/contents-opaque/control-layer-expected.txt
new file mode 100644
index 0000000..24d39fa
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/contents-opaque/control-layer-expected.txt
@@ -0,0 +1,28 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutButton INPUT id='control' class='composited'",
+      "bounds": [127, 22],
+      "backgroundColor": "#EFEFEF",
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [8, 8, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/flat-with-transformed-child-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/flat-with-transformed-child-expected.png
index 2b04e99..daa6e23 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/flat-with-transformed-child-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/flat-with-transformed-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png
index dba55d6..590af7ff 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/foreground-layer-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/foreground-layer-expected.txt
new file mode 100644
index 0000000..148cca02
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/foreground-layer-expected.txt
@@ -0,0 +1,46 @@
+ 
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV class='main box'",
+      "position": [-30, -30],
+      "bounds": [340, 340],
+      "backgroundColor": "#FF0000",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV class='main box'",
+      "position": [-30, -30],
+      "bounds": [340, 340],
+      "backgroundColor": "#FF0000",
+      "transform": 2
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [38, 108, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [382, 38, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/transformed-abs-position-inside-composited-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/transformed-abs-position-inside-composited-expected.png
index a126cb3..a3a253fc 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/transformed-abs-position-inside-composited-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/geometry/transformed-abs-position-inside-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/lots-of-img-layers-with-opacity-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/lots-of-img-layers-with-opacity-expected.png
index b67e6db..40e25b4 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/lots-of-img-layers-with-opacity-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/lots-of-img-layers-with-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/opacity-with-mask-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/opacity-with-mask-expected.png
index 09d99f3..b37d26a9 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/opacity-with-mask-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/opacity-with-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/border-radius-composited-subframe-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/border-radius-composited-subframe-expected.png
index 6b63616..ca07de2 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/border-radius-composited-subframe-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/border-radius-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/clip-content-under-overflow-controls-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/clip-content-under-overflow-controls-expected.png
new file mode 100644
index 0000000..797fa6c
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/clip-content-under-overflow-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/mask-with-filter-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/mask-with-filter-expected.png
index d2e7bbd..cf5dba1 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/mask-with-filter-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/mask-with-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-border-radius-clipping-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-border-radius-clipping-expected.png
index c756e6e..98faced 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-border-radius-clipping-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-border-radius-clipping-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-expected.png
deleted file mode 100644
index fc8a4af7..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-with-rotation-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-with-rotation-expected.png
index 0f17677f..a76cbbc 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-with-rotation-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/nested-render-surfaces-with-rotation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/overlap-testing-ancestor-scroller-high-dpi-expected.html b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/overlap-testing-ancestor-scroller-high-dpi-expected.html
new file mode 100644
index 0000000..99857ac
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/overlap-testing-ancestor-scroller-high-dpi-expected.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<style>
+  html, body {
+    height: 100%;
+  }
+
+  #target {
+    visibility: hidden;
+    height: 100%;
+    overflow-y: scroll;
+  }
+
+  .item {
+    visibility: visible;
+    height: 800px;
+    background: lightgray;
+    width: 100%;
+  }
+</style>
+<body>
+  <div id="target">
+    <div class="item">Item 2</div>
+  </div>
+</body>
+
+</html>
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/relpos-under-abspos-border-radius-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/relpos-under-abspos-border-radius-expected.png
index 246277b..274775f1 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/relpos-under-abspos-border-radius-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/relpos-under-abspos-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-clip-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-clip-expected.png
index b739575..a66542e 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-clip-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-then-clip-effect-interleave-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-then-clip-effect-interleave-expected.png
index 6576faa..9abfd3a 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-then-clip-effect-interleave-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/overflow/rotate-then-clip-effect-interleave-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/scrollbar-painting-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/scrollbar-painting-expected.png
new file mode 100644
index 0000000..797fa6c
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/scrollbar-painting-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squash-above-fixed-1-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squash-above-fixed-1-expected.txt
new file mode 100644
index 0000000..87bd0256
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squash-above-fixed-1-expected.txt
@@ -0,0 +1,233 @@
+The gray div is a composited fixed-position element, and the cyan/lime elements should be squashed together on top. When scrolling, paragraphs may pop in-and-out of the squashing layer when they change overlapping status with respect to the composited layer underneath.
+
+This scenario tests (1) that content repaints correctly as layers pop in and out of squashing, and (2) that the positioning of the squashing layer remains correct (i.e. scrolls properly) when the squashing layer is on top of a fixed-position composited layer.
+
+CASE 1, original layer tree:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 1400],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited background'",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
+      "position": [0, 100],
+      "bounds": [200, 1300],
+      "contentsOpaque": true,
+      "backgroundColor": "#00FF00"
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 2, scrolling y to 80, new layers will be squashed, so things repaint:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 1400],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
+          "rect": [0, 100, 200, 100],
+          "reason": "chunk appeared"
+        }
+      ],
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited background'",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 2
+    },
+    {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
+      "position": [0, 200],
+      "bounds": [200, 1200],
+      "contentsOpaque": true,
+      "backgroundColor": "#00FFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
+          "rect": [0, 0, 200, 1200],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -80, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 3, scrolling y to 120, no repaints expected:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 1400],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited background'",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 2
+    },
+    {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
+      "position": [0, 200],
+      "bounds": [200, 1200],
+      "contentsOpaque": true,
+      "backgroundColor": "#00FFFF",
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -120, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 4, scrolling y to 170 new layers will be squashed, so things repaint:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 1400],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
+          "rect": [0, 200, 200, 100],
+          "reason": "chunk appeared"
+        }
+      ],
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited background'",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 2
+    },
+    {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
+      "position": [0, 300],
+      "bounds": [200, 1100],
+      "contentsOpaque": true,
+      "backgroundColor": "#00FF00",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
+          "rect": [0, 0, 200, 1100],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -170, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squash-above-fixed-3-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squash-above-fixed-3-expected.txt
new file mode 100644
index 0000000..8e2ee99f
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squash-above-fixed-3-expected.txt
@@ -0,0 +1,191 @@
+This scenario verifies that the green "container" element and lime "innerScrolling" element scroll properly even though there is a blue fixed-position element layered in between them.
+
+The catch is that the squashing requirements should be computed in correct paint order, so that the green container does not accidentally position itself with respect to the wrong layer and not scroll.
+
+CASE 1, original layer tree:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 4100],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='backgroundFixed'",
+      "bounds": [400, 400],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "position": [100, 100],
+      "bounds": [100, 4000],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='innerFixed'",
+      "bounds": [200, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='innerScrolling'",
+      "position": [200, 100],
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#00FF00"
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 2, scrolling y by 10 pixels, both the "container" and "inner" should scroll properly.
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 4100],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='backgroundFixed'",
+      "bounds": [400, 400],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "position": [100, 100],
+      "bounds": [100, 4000],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='innerFixed'",
+      "bounds": [200, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "transform": 2
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='innerScrolling'",
+      "position": [200, 100],
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#00FF00",
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -10, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 3, scrolling y further so that "inner" no longer overlaps the fixed-pos layer, then the stacking context of "container" includes the "innerScrolling" layer, and doubles in width:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 4100],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='backgroundFixed'",
+      "bounds": [400, 400],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "position": [100, 100],
+      "bounds": [200, 4000],
+      "backgroundColor": "#008000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='innerScrolling'",
+          "rect": [100, 0, 100, 100],
+          "reason": "chunk appeared"
+        }
+      ],
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='innerFixed'",
+      "bounds": [200, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "transform": 2
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -110, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [100, 150, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squashed-layer-loses-graphicslayer-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squashed-layer-loses-graphicslayer-expected.txt
new file mode 100644
index 0000000..34cf5233
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squashed-layer-loses-graphicslayer-expected.txt
@@ -0,0 +1,72 @@
+A squashing Layer that becomes non-composited should correctly send a repaint invalidation to the new container GraphicsLayer that it paints into. When run interactively, hovering over the force-composited gray div should not cause other layers to disappear.
+
+CASE 1, original layer tree:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='forceComposited' class='composited underneath'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+      "position": [140, 140],
+      "bounds": [260, 260],
+      "backgroundColor": "#0000FF"
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [60, 60, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 2, The original composited layer is no longer composited, which then also removes all squashing layers. The important point is that there should be an appropriate repaint to the root GraphicsLayer:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='C' class='overlap3'",
+          "rect": [300, 300, 100, 100],
+          "reason": "chunk appeared"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='B' class='overlap2'",
+          "rect": [220, 220, 100, 100],
+          "reason": "chunk appeared"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+          "rect": [140, 140, 100, 100],
+          "reason": "chunk appeared"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='forceComposited' class='underneath'",
+          "rect": [60, 60, 100, 100],
+          "reason": "chunk appeared"
+        }
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squashed-repaints-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squashed-repaints-expected.txt
new file mode 100644
index 0000000..c4e120a
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/compositing/squashing/squashed-repaints-expected.txt
@@ -0,0 +1,225 @@
+Basic repaint test for squashed layers. The entire squashing layer should not need repainting when only a portion of it is invalidated. Test interactively by using --show-paint-rects and hovering over elements to change their color.
+
+CASE 1, original layer tree:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+      "position": [140, 140],
+      "bounds": [260, 260],
+      "backgroundColor": "#0000FF"
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [60, 60, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 2, overlap1 changes color:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+      "position": [140, 140],
+      "bounds": [260, 260],
+      "backgroundColor": "#008000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+          "rect": [0, 0, 100, 100],
+          "reason": "background"
+        }
+      ]
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [60, 60, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 3, overlap1 and overlap2 change color:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+      "position": [140, 140],
+      "bounds": [260, 260],
+      "backgroundColor": "#0000FF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='B' class='overlap2'",
+          "rect": [80, 80, 100, 100],
+          "reason": "background"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+          "rect": [0, 0, 100, 100],
+          "reason": "background"
+        }
+      ]
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [60, 60, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 4, overlap2 and overlap3 change color:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+      "position": [140, 140],
+      "bounds": [260, 260],
+      "backgroundColor": "#0000FF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='C' class='overlap3'",
+          "rect": [160, 160, 100, 100],
+          "reason": "background"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='B' class='overlap2'",
+          "rect": [80, 80, 100, 100],
+          "reason": "background"
+        }
+      ]
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [60, 60, 0, 1]
+      ]
+    }
+  ]
+}
+
+CASE 5, overlap3 and overlap1 change color:
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='composited'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+      "position": [140, 140],
+      "bounds": [260, 260],
+      "backgroundColor": "#008000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='C' class='overlap3'",
+          "rect": [160, 160, 100, 100],
+          "reason": "background"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='A' class='overlap1'",
+          "rect": [0, 0, 100, 100],
+          "reason": "background"
+        }
+      ]
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [60, 60, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png
index f9183aff..9cdc736 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/border-radius-with-composited-child-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/border-radius-with-composited-child-expected.png
index fa6cafe..f87088af 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/border-radius-with-composited-child-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/border-radius-with-composited-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-added-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-added-expected.txt
new file mode 100644
index 0000000..5cfa579
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-added-expected.txt
@@ -0,0 +1,35 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "bounds": [125, 125],
+      "backgroundColor": "#0000FF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='container'",
+          "rect": [0, 0, 125, 125],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [200, 100, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-added-individual-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-added-individual-expected.txt
new file mode 100644
index 0000000..5cfa579
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-added-individual-expected.txt
@@ -0,0 +1,35 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "bounds": [125, 125],
+      "backgroundColor": "#0000FF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='container'",
+          "rect": [0, 0, 125, 125],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [200, 100, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-removed-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-removed-expected.txt
new file mode 100644
index 0000000..2548c50
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-removed-expected.txt
@@ -0,0 +1,50 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='container'",
+          "rect": [0, 0, 100, 100],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='fixed'",
+      "position": [50, 50],
+      "bounds": [75, 75],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV class='fixed'",
+          "rect": [0, 0, 75, 75],
+          "reason": "full layer"
+        }
+      ]
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [200, 100, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-removed-individual-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
new file mode 100644
index 0000000..8802f684
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
@@ -0,0 +1,51 @@
+CONSOLE MESSAGE: line 30: debug
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
+      "bounds": [100, 100],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='container'",
+          "rect": [0, 0, 100, 100],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='fixed'",
+      "position": [50, 50],
+      "bounds": [75, 75],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV class='fixed'",
+          "rect": [0, 0, 75, 75],
+          "reason": "full layer"
+        }
+      ]
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [200, 100, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
index a7336efd..c216643 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
@@ -7,8 +7,8 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow INPUT",
-          "rect": [11, 9, 17, 17],
+          "object": "LayoutNGBlockFlow INPUT",
+          "rect": [9, 7, 21, 21],
           "reason": "subtree"
         }
       ]
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
new file mode 100644
index 0000000..0e71dd8
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
@@ -0,0 +1,104 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutMultiColumnFlowThread (anonymous)",
+      "position": [8, -172],
+      "bounds": [625, 520],
+      "backfaceVisibility": "hidden",
+      "paintInvalidations": [
+        {
+          "object": "InlineTextBox 'Lorem ipsum'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'adipiscing'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'consectetur'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'dolor sit amet,'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'elit. Fusce'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'eu fringilla'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'pulvinar, ipsum'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'sapien'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'varius, metus'",
+          "rect": [0, 0, 625, 360],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'eget, dapibus'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'libero,'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'non condimentum'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'purus. Ut nisl'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'quam est eu'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'suscipit ut leo'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'ultrices dolor.'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        },
+        {
+          "object": "InlineTextBox 'ultricies arcu,'",
+          "rect": [0, 180, 625, 340],
+          "reason": "style change"
+        }
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
new file mode 100644
index 0000000..5bdf5830
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
@@ -0,0 +1,55 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 2016],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV class='absolute green reflected'",
+      "bounds": [100, 100],
+      "backgroundColor": "#008000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV class='absolute green reflected'",
+          "rect": [0, 0, 100, 100],
+          "reason": "paint property change"
+        },
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV class='absolute red'",
+          "rect": [0, 0, 100, 100],
+          "reason": "paint property change"
+        }
+      ],
+      "transform": 2
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -180, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [250, 100, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
new file mode 100644
index 0000000..2d447655
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
@@ -0,0 +1,50 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [785, 2016],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
+      "name": "VerticalScrollbar",
+      "position": [785, 0],
+      "bounds": [15, 600]
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='hideMe' class='absolute red'",
+      "bounds": [100, 100],
+      "backgroundColor": "#FF0000",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='hideMe' class='absolute red'",
+          "rect": [0, 0, 100, 100],
+          "reason": "full layer"
+        }
+      ],
+      "transform": 2
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -180, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [250, 100, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
index 72b1b4e..d29aeea 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
@@ -4,19 +4,19 @@
       "name": "Scrolling background of LayoutView #document",
       "bounds": [800, 600],
       "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "bounds": [300, 300],
+      "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
+          "object": "LayoutNGBlockFlow (positioned) DIV id='outer'",
+          "rect": [8, 8, 285, 285],
+          "reason": "paint property change"
+        },
+        {
           "object": "HorizontalScrollbar",
-          "rect": [0, 285, 285, 15],
+          "rect": [8, 293, 285, 15],
           "reason": "scroll control"
         }
-      ],
-      "transform": 1
+      ]
     },
     {
       "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
index 308bda8..fa09bdd 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
@@ -4,7 +4,14 @@
       "name": "Scrolling background of LayoutView #document",
       "bounds": [1008, 1016],
       "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow DIV id='target'",
+          "rect": [8, 8, 1000, 1000],
+          "reason": "background"
+        }
+      ]
     },
     {
       "name": "HorizontalScrollbar",
@@ -17,26 +24,14 @@
       "bounds": [15, 235]
     },
     {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
+      "name": "Scroll corner of LayoutView #document",
+      "position": [585, 235],
+      "bounds": [15, 15],
       "paintInvalidations": [
         {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutNGBlockFlow HTML",
-      "position": [8, 8],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutNGBlockFlow DIV id='target'",
-          "rect": [0, 0, 1000, 1000],
-          "reason": "background"
+          "object": "Scroll corner of LayoutView #document",
+          "rect": [0, 0, 15, 15],
+          "reason": "paint property change"
         }
       ]
     }
@@ -48,7 +43,14 @@
       "name": "Scrolling background of LayoutView #document",
       "bounds": [1008, 1016],
       "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow DIV id='target'",
+          "rect": [8, 8, 1000, 1000],
+          "reason": "background"
+        }
+      ]
     },
     {
       "name": "HorizontalScrollbar",
@@ -61,26 +63,14 @@
       "bounds": [15, 235]
     },
     {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
+      "name": "Scroll corner of LayoutView #document",
+      "position": [385, 235],
+      "bounds": [15, 15],
       "paintInvalidations": [
         {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 250],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutNGBlockFlow HTML",
-      "position": [8, 8],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutNGBlockFlow DIV id='target'",
-          "rect": [0, 0, 1000, 1000],
-          "reason": "background"
+          "object": "Scroll corner of LayoutView #document",
+          "rect": [0, 0, 15, 15],
+          "reason": "paint property change"
         }
       ]
     }
@@ -92,7 +82,14 @@
       "name": "Scrolling background of LayoutView #document",
       "bounds": [1008, 1016],
       "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow DIV id='target'",
+          "rect": [8, 8, 1000, 1000],
+          "reason": "background"
+        }
+      ]
     },
     {
       "name": "HorizontalScrollbar",
@@ -105,26 +102,14 @@
       "bounds": [15, 585]
     },
     {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
+      "name": "Scroll corner of LayoutView #document",
+      "position": [385, 585],
+      "bounds": [15, 15],
       "paintInvalidations": [
         {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 600],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutNGBlockFlow HTML",
-      "position": [8, 8],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutNGBlockFlow DIV id='target'",
-          "rect": [0, 0, 1000, 1000],
-          "reason": "background"
+          "object": "Scroll corner of LayoutView #document",
+          "rect": [0, 0, 15, 15],
+          "reason": "paint property change"
         }
       ]
     }
@@ -136,7 +121,14 @@
       "name": "Scrolling background of LayoutView #document",
       "bounds": [1008, 1016],
       "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
+      "backgroundColor": "#FFFFFF",
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow DIV id='target'",
+          "rect": [8, 8, 1000, 1000],
+          "reason": "background"
+        }
+      ]
     },
     {
       "name": "HorizontalScrollbar",
@@ -149,26 +141,14 @@
       "bounds": [15, 585]
     },
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
+      "name": "Scroll corner of LayoutView #document",
+      "position": [785, 585],
+      "bounds": [15, 15],
       "paintInvalidations": [
         {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutNGBlockFlow HTML",
-      "position": [8, 8],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutNGBlockFlow DIV id='target'",
-          "rect": [0, 0, 1000, 1000],
-          "reason": "background"
+          "object": "Scroll corner of LayoutView #document",
+          "rect": [0, 0, 15, 15],
+          "reason": "paint property change"
         }
       ]
     }
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/threaded-no-composited-antialiasing/animations/rotate-transform-equivalent-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/threaded-no-composited-antialiasing/animations/rotate-transform-equivalent-expected.png
index 95695bb..4753229b 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/threaded-no-composited-antialiasing/animations/rotate-transform-equivalent-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/threaded-no-composited-antialiasing/animations/rotate-transform-equivalent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/cache/resources/etag-200-different.php b/third_party/blink/web_tests/http/tests/cache/resources/etag-200-different.php
index 9d7a868..a48219d 100644
--- a/third_party/blink/web_tests/http/tests/cache/resources/etag-200-different.php
+++ b/third_party/blink/web_tests/http/tests/cache/resources/etag-200-different.php
@@ -4,6 +4,10 @@
 header('ETag: foo');
 header('Cache-control: max-age=0');
 
+if ($_GET['type'] == 'css') {
+    header('Content-Type: text/css');
+}
+
 if ($_SERVER['HTTP_IF_NONE_MATCH'] == 'foo') {
     // The body after revalidation.
     echo "/* after revalidation */";
diff --git a/third_party/blink/web_tests/http/tests/cache/resources/etag-200-empty.php b/third_party/blink/web_tests/http/tests/cache/resources/etag-200-empty.php
index f9b013e..f304030 100644
--- a/third_party/blink/web_tests/http/tests/cache/resources/etag-200-empty.php
+++ b/third_party/blink/web_tests/http/tests/cache/resources/etag-200-empty.php
@@ -4,6 +4,10 @@
 header('ETag: foo');
 header('Cache-control: max-age=0');
 
+if ($_GET['type'] == 'css') {
+    header('Content-Type: text/css');
+}
+
 if ($_SERVER['HTTP_IF_NONE_MATCH'] == 'foo') {
     // The body is intentionally empty.
     exit;
diff --git a/third_party/blink/web_tests/http/tests/cache/resources/etag.php b/third_party/blink/web_tests/http/tests/cache/resources/etag.php
index 638c00a..510eaa2 100644
--- a/third_party/blink/web_tests/http/tests/cache/resources/etag.php
+++ b/third_party/blink/web_tests/http/tests/cache/resources/etag.php
@@ -2,6 +2,10 @@
 header('ETag: foo');
 header('Cache-control: max-age=0');
 
+if ($_GET['type'] == 'css') {
+    header('Content-Type: text/css');
+}
+
 if ($_SERVER['HTTP_IF_NONE_MATCH'] == 'foo') {
     header('HTTP/1.1 304 Not Modified');
     exit;
diff --git a/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/empty-after-revalidate-css.html b/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/empty-after-revalidate-css.html
index 8d6e698..8a421ba 100644
--- a/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/empty-after-revalidate-css.html
+++ b/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/empty-after-revalidate-css.html
@@ -14,12 +14,12 @@
     link.onload = t_css.unreached_func('Second request should fail');
     link.onerror = t_css.step_func_done();
     link.href =
-      "../../cache/resources/etag-200-empty.php?empty-after-revalidate-css";
+      "../../cache/resources/etag-200-empty.php?type=css&empty-after-revalidate-css";
     document.head.appendChild(link);
   }
 </script>
 <link
-  href="../../cache/resources/etag-200-empty.php?empty-after-revalidate-css"
+  href="../../cache/resources/etag-200-empty.php?type=css&empty-after-revalidate-css"
   rel="stylesheet"
   integrity="sha256-YsI40D9FX0QghiYVdxQyySP2TOmARkLC5uPRO8RL2dE="
   onload="t_css.step_timeout(revalidate_css, 0)"
diff --git a/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-failed-css.html b/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-failed-css.html
index 3d9a8c52..fd544325 100644
--- a/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-failed-css.html
+++ b/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-failed-css.html
@@ -14,12 +14,12 @@
     link.onload = t_css.unreached_func('Second request should fail');
     link.onerror = t_css.step_func_done();
     link.href =
-      "../../cache/resources/etag-200-different.php?empty-after-revalidate-css";
+      "../../cache/resources/etag-200-different.php?type=css&empty-after-revalidate-css";
     document.head.appendChild(link);
   }
 </script>
 <link
-  href="../../cache/resources/etag-200-different.php?empty-after-revalidate-css"
+  href="../../cache/resources/etag-200-different.php?type=css&empty-after-revalidate-css"
   rel="stylesheet"
   integrity="sha256-YsI40D9FX0QghiYVdxQyySP2TOmARkLC5uPRO8RL2dE="
   onload="t_css.step_timeout(revalidate_css, 0)"
diff --git a/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-succeeded-css.html b/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-succeeded-css.html
index a9de7a85..adef700 100644
--- a/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-succeeded-css.html
+++ b/third_party/blink/web_tests/http/tests/security/subresourceIntegrity/revalidation-succeeded-css.html
@@ -14,12 +14,12 @@
     link.onload = t_css.step_func_done();
     link.onerror = t_css.unreached_func('Second request should pass');
     link.href =
-      "../../cache/resources/etag.php?empty-after-revalidate-css";
+      "../../cache/resources/etag.php?type=css&empty-after-revalidate-css";
     document.head.appendChild(link);
   }
 </script>
 <link
-  href="../../cache/resources/etag.php?empty-after-revalidate-css"
+  href="../../cache/resources/etag.php?type=css&empty-after-revalidate-css"
   rel="stylesheet"
   integrity="sha256-tbudgBSg+bHWHiHnlteNzN8TUvI80ygS9IULh4rklEw="
   onload="t_css.step_timeout(revalidate_css, 0)"
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 1c646a0..45122bc 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
index 79f2138..7ba44d7 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
index 2889cf50..51a3f40 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
index 96dcbea..f26dedc 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png
index 4c2811bf..d7eca57b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-pseudo-elements-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-pseudo-elements-expected.png
index 89c29b3d..9d3239e 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-pseudo-elements-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-pseudo-elements-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index a0668a5c..de4579b 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 234b3a1d..8f26ec7 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index 5d65035..24c2aa7e 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 48885e8..3a1744e 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index dd23962..d9f2787 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index 2b1d074..8c2a2b45 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
index 4e636c4..c1014e9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
index f1d7140..0ee02c9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
index fd4b5e9..814f46f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
index acd592cc..babd8d0 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
index 2cf6439..8c7da2be 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
index 500cae6e..d8719a1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
index 8690b856..a08d94b1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
index a10bc94..4454c540 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index fa817c192..b3f0588 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 093fce168..c3ebcc6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index e12843a..7f4059be 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index dd24655..c3c1b15 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index f2404df..03c7c3c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index 4a3c0f60..876ecc0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
index 94ff7be..1138902e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
index f52ac5a..108012c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
index d54aee7d..9f5ff08 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
index 838b7797..7b79616e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
index 56c4a9c..d99f901 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
index dddd7ab..93bc935 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
index c747d2f..99112622 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
index 3040344..4388cce 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt
deleted file mode 100644
index c374338..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-This is a testharness.js-based test.
-Found 90 tests; 45 PASS, 45 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Basic sanity-checking (cross-origin)
-PASS Basic sanity-checking (same-origin + document.domain)
-PASS Basic sanity-checking (cross-site)
-FAIL Only certain properties are accessible cross-origin (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Only certain properties are accessible cross-origin (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Only certain properties are accessible cross-origin (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Only certain properties are usable as cross-origin this objects (cross-origin) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
-FAIL Only certain properties are usable as cross-origin this objects (same-origin + document.domain) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
-FAIL Only certain properties are usable as cross-origin this objects (cross-site) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
-PASS [[GetPrototypeOf]] should return null (cross-origin)
-PASS [[GetPrototypeOf]] should return null (same-origin + document.domain)
-PASS [[GetPrototypeOf]] should return null (cross-site)
-FAIL [[SetPrototypeOf]] should return false (cross-origin) assert_throws: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[SetPrototypeOf]] should return false (same-origin + document.domain) assert_throws: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[SetPrototypeOf]] should return false (cross-site) assert_throws: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-PASS [[IsExtensible]] should return true for cross-origin objects (cross-origin)
-PASS [[IsExtensible]] should return true for cross-origin objects (same-origin + document.domain)
-PASS [[IsExtensible]] should return true for cross-origin objects (cross-site)
-FAIL [[PreventExtensions]] should throw for cross-origin objects (cross-origin) assert_throws: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[PreventExtensions]] should throw for cross-origin objects (same-origin + document.domain) assert_throws: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[PreventExtensions]] should throw for cross-origin objects (cross-site) assert_throws: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (cross-origin) assert_equals: property descriptor for 0 should be enumerable expected true but got false
-FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (same-origin + document.domain) assert_equals: property descriptor for 0 should be enumerable expected true but got false
-FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (cross-site) assert_equals: property descriptor for 0 should be enumerable expected true but got false
-PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (cross-origin)
-PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (same-origin + document.domain)
-PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (cross-site)
-PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (cross-origin)
-PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (same-origin + document.domain)
-PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (cross-site)
-PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (cross-origin)
-PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (same-origin + document.domain)
-PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (cross-site)
-PASS [[Delete]] Should throw on cross-origin objects (cross-origin)
-PASS [[Delete]] Should throw on cross-origin objects (same-origin + document.domain)
-PASS [[Delete]] Should throw on cross-origin objects (cross-site)
-PASS [[DefineOwnProperty]] Should throw for cross-origin objects (cross-origin)
-PASS [[DefineOwnProperty]] Should throw for cross-origin objects (same-origin + document.domain)
-PASS [[DefineOwnProperty]] Should throw for cross-origin objects (cross-site)
-FAIL Can only enumerate safelisted enumerable properties (cross-origin) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
-FAIL Can only enumerate safelisted enumerable properties (same-origin + document.domain) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
-FAIL Can only enumerate safelisted enumerable properties (cross-site) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
-FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (cross-origin) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
-FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (same-origin + document.domain) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
-FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (cross-site) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
-FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (cross-origin) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
-FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (same-origin + document.domain) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
-FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (cross-site) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
-FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (cross-origin) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
-FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (same-origin + document.domain) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
-FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (cross-site) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
-FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (cross-origin) assert_equals: expected "then" but got "postMessage"
-FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (same-origin + document.domain) assert_equals: expected "then" but got "postMessage"
-FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (cross-site) assert_equals: expected "then" but got "postMessage"
-PASS A and B jointly observe the same identity for cross-origin Window and Location (cross-origin)
-PASS A and B jointly observe the same identity for cross-origin Window and Location (same-origin + document.domain)
-PASS A and B jointly observe the same identity for cross-origin Window and Location (cross-site)
-PASS Cross-origin functions get local Function.prototype (cross-origin)
-PASS Cross-origin functions get local Function.prototype (same-origin + document.domain)
-PASS Cross-origin functions get local Function.prototype (cross-site)
-FAIL Cross-origin Window accessors get local Function.prototype (cross-origin) Cannot read property 'name' of undefined
-FAIL Cross-origin Window accessors get local Function.prototype (same-origin + document.domain) Cannot read property 'name' of undefined
-FAIL Cross-origin Window accessors get local Function.prototype (cross-site) Cannot read property 'name' of undefined
-PASS Same-origin observers get different functions for cross-origin objects (cross-origin)
-PASS Same-origin observers get different functions for cross-origin objects (same-origin + document.domain)
-PASS Same-origin observers get different functions for cross-origin objects (cross-site)
-FAIL Same-origin observers get different accessors for cross-origin Window (cross-origin) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
-FAIL Same-origin observers get different accessors for cross-origin Window (same-origin + document.domain) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
-FAIL Same-origin observers get different accessors for cross-origin Window (cross-site) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
-FAIL Same-origin observers get different accessors for cross-origin Location (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Same-origin observers get different accessors for cross-origin Location (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Same-origin observers get different accessors for cross-origin Location (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL {}.toString.call() does the right thing on cross-origin objects (cross-origin) assert_equals: expected "[object Object]" but got "[object Location]"
-FAIL {}.toString.call() does the right thing on cross-origin objects (same-origin + document.domain) assert_equals: expected "[object Object]" but got "[object Location]"
-FAIL {}.toString.call() does the right thing on cross-origin objects (cross-site) assert_equals: expected "[object Object]" but got "[object Location]"
-PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-origin)
-PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (same-origin + document.domain)
-PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-site)
-PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-origin)
-PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (same-origin + document.domain)
-PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-site)
-PASS Resolving a promise with a cross-origin location should work (cross-origin)
-PASS Resolving a promise with a cross-origin location should work (same-origin + document.domain)
-PASS Resolving a promise with a cross-origin location should work (cross-site)
-PASS LenientThis behavior (cross-origin)
-PASS LenientThis behavior (same-origin + document.domain)
-PASS LenientThis behavior (cross-site)
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
new file mode 100644
index 0000000..f33009cd
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
new file mode 100644
index 0000000..115aa6de
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
new file mode 100644
index 0000000..2ec143f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt
deleted file mode 100644
index d2a2d32..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-This is a testharness.js-based test.
-Found 90 tests; 45 PASS, 45 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Basic sanity-checking (cross-origin)
-PASS Basic sanity-checking (same-origin + document.domain)
-PASS Basic sanity-checking (cross-site)
-FAIL Only whitelisted properties are accessible cross-origin (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Only whitelisted properties are accessible cross-origin (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Only whitelisted properties are accessible cross-origin (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Only whitelisted properties are usable as cross-origin this objects (cross-origin) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
-FAIL Only whitelisted properties are usable as cross-origin this objects (same-origin + document.domain) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
-FAIL Only whitelisted properties are usable as cross-origin this objects (cross-site) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
-PASS [[GetPrototypeOf]] should return null (cross-origin)
-PASS [[GetPrototypeOf]] should return null (same-origin + document.domain)
-PASS [[GetPrototypeOf]] should return null (cross-site)
-FAIL [[SetPrototypeOf]] should return false (cross-origin) assert_throws: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[SetPrototypeOf]] should return false (same-origin + document.domain) assert_throws: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[SetPrototypeOf]] should return false (cross-site) assert_throws: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-PASS [[IsExtensible]] should return true for cross-origin objects (cross-origin)
-PASS [[IsExtensible]] should return true for cross-origin objects (same-origin + document.domain)
-PASS [[IsExtensible]] should return true for cross-origin objects (cross-site)
-FAIL [[PreventExtensions]] should throw for cross-origin objects (cross-origin) assert_throws: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[PreventExtensions]] should throw for cross-origin objects (same-origin + document.domain) assert_throws: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[PreventExtensions]] should throw for cross-origin objects (cross-site) assert_throws: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected object "TypeError" ("TypeError")
-FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (cross-origin) assert_equals: property descriptor for 0 should be enumerable expected true but got false
-FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (same-origin + document.domain) assert_equals: property descriptor for 0 should be enumerable expected true but got false
-FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (cross-site) assert_equals: property descriptor for 0 should be enumerable expected true but got false
-PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (cross-origin)
-PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (same-origin + document.domain)
-PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (cross-site)
-PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (cross-origin)
-PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (same-origin + document.domain)
-PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (cross-site)
-PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (cross-origin)
-PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (same-origin + document.domain)
-PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (cross-site)
-PASS [[Delete]] Should throw on cross-origin objects (cross-origin)
-PASS [[Delete]] Should throw on cross-origin objects (same-origin + document.domain)
-PASS [[Delete]] Should throw on cross-origin objects (cross-site)
-PASS [[DefineOwnProperty]] Should throw for cross-origin objects (cross-origin)
-PASS [[DefineOwnProperty]] Should throw for cross-origin objects (same-origin + document.domain)
-PASS [[DefineOwnProperty]] Should throw for cross-origin objects (cross-site)
-FAIL Can only enumerate safelisted enumerable properties (cross-origin) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
-FAIL Can only enumerate safelisted enumerable properties (same-origin + document.domain) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
-FAIL Can only enumerate safelisted enumerable properties (cross-site) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
-FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (cross-origin) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
-FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (same-origin + document.domain) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
-FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (cross-site) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
-FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (cross-origin) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
-FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (same-origin + document.domain) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
-FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (cross-site) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
-FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (cross-origin) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
-FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (same-origin + document.domain) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
-FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (cross-site) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
-FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (cross-origin) assert_equals: expected "then" but got "postMessage"
-FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (same-origin + document.domain) assert_equals: expected "then" but got "postMessage"
-FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (cross-site) assert_equals: expected "then" but got "postMessage"
-PASS A and B jointly observe the same identity for cross-origin Window and Location (cross-origin)
-PASS A and B jointly observe the same identity for cross-origin Window and Location (same-origin + document.domain)
-PASS A and B jointly observe the same identity for cross-origin Window and Location (cross-site)
-PASS Cross-origin functions get local Function.prototype (cross-origin)
-PASS Cross-origin functions get local Function.prototype (same-origin + document.domain)
-PASS Cross-origin functions get local Function.prototype (cross-site)
-FAIL Cross-origin Window accessors get local Function.prototype (cross-origin) Cannot read property 'name' of undefined
-FAIL Cross-origin Window accessors get local Function.prototype (same-origin + document.domain) Cannot read property 'name' of undefined
-FAIL Cross-origin Window accessors get local Function.prototype (cross-site) Cannot read property 'name' of undefined
-PASS Same-origin observers get different functions for cross-origin objects (cross-origin)
-PASS Same-origin observers get different functions for cross-origin objects (same-origin + document.domain)
-PASS Same-origin observers get different functions for cross-origin objects (cross-site)
-FAIL Same-origin observers get different accessors for cross-origin Window (cross-origin) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
-FAIL Same-origin observers get different accessors for cross-origin Window (same-origin + document.domain) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
-FAIL Same-origin observers get different accessors for cross-origin Window (cross-site) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
-FAIL Same-origin observers get different accessors for cross-origin Location (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Same-origin observers get different accessors for cross-origin Location (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL Same-origin observers get different accessors for cross-origin Location (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
-FAIL {}.toString.call() does the right thing on cross-origin objects (cross-origin) assert_equals: expected "[object Object]" but got "[object Location]"
-FAIL {}.toString.call() does the right thing on cross-origin objects (same-origin + document.domain) assert_equals: expected "[object Object]" but got "[object Location]"
-FAIL {}.toString.call() does the right thing on cross-origin objects (cross-site) assert_equals: expected "[object Object]" but got "[object Location]"
-PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-origin)
-PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (same-origin + document.domain)
-PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-site)
-PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-origin)
-PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (same-origin + document.domain)
-PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-site)
-PASS Resolving a promise with a cross-origin location should work (cross-origin)
-PASS Resolving a promise with a cross-origin location should work (same-origin + document.domain)
-PASS Resolving a promise with a cross-origin location should work (cross-site)
-PASS LenientThis behavior (cross-origin)
-PASS LenientThis behavior (same-origin + document.domain)
-PASS LenientThis behavior (cross-site)
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
new file mode 100644
index 0000000..f33009cd
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 26c4f130..115aa6de 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
new file mode 100644
index 0000000..2ec143f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index f13b788..4923461 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
index 3c9cb48..27dbf0f3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
index 44422211..399dbd6f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
index 48f7e55..46836d2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
index 11d2a65..6936093 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
index bccefa6..1479f64 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
index 3aae6baa..186c811d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
index 29fe1f2..be44a2d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
index 89822ea9..1b78f06 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
new file mode 100644
index 0000000..f33009cd
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
new file mode 100644
index 0000000..238a6bbe6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
new file mode 100644
index 0000000..2ec143f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 8c9394d..f33009cd 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 94a69ba..238a6bbe6 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index 3e5a58a..2ec143f 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 4e7811d..0600eb7 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 74bdfaf..17c8bf82 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index df8381e..4e9f9fc0 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
index 7acc8c2..246a2a64 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
index 7068953..bac9ee4a 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
index c36f0b9..23eeed88 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
index f3006980..96c3d8a 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
index 7b315290..6d932c2 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
index cc1a0a1a..d33fbdc 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
index b4a3325..c861a23 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
index 49da92a..3847b872 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 1ca65b2..a26bc7a 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
index 3c3f06cc..7af90357 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
index 0e7f943..a66fb07 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
index c12e74e..eb80f787 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png
index c6148d9..38b4dd91f 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-pseudo-elements-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-pseudo-elements-expected.png
index 209ab13..9150eea 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-pseudo-elements-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-pseudo-elements-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 715c121..dd01980 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 155b11eb..24bf7c44 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index ec77454e..bb7cd01 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
index ea79af5..69f5a719 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
index 1e24216d..3a4620ed 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
index adae705..5882a15 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
index 372e7e7..4481c32 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-AM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
index 2653398..8d7bd12 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-12-PM-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
index be408012..82947dd 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-24-hour-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
index 24c6c5ef..f9212f65 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowdown-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
index b43a7d6..1819057 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-arrowup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
index d2a09752..6e83086 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
index 2357afbdf..e42a79d 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-milliseconds-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
index 06d02b0..0a03343 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh/time-picker/time-picker-appearance-seconds-pm-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
new file mode 100644
index 0000000..5317e01
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
new file mode 100644
index 0000000..892727b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
new file mode 100644
index 0000000..dd01980
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
new file mode 100644
index 0000000..24bf7c44
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time-picker/time-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
new file mode 100644
index 0000000..bb7cd01
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
index 0d3726e..b45590c 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/time-picker/time-picker-appearance-ko-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt
index 649809fd..4530967 100644
--- a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt
+++ b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-createDataChannel-expected.txt
@@ -1,9 +1,8 @@
 This is a testharness.js-based test.
-Found 50 tests; 43 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS createDataChannel with no argument should throw TypeError
 PASS createDataChannel with closed connection should throw InvalidStateError
-FAIL createDataChannel attribute default values assert_equals: expected (string) "low" but got (undefined) undefined
-FAIL createDataChannel with provided parameters should initialize attributes to provided values assert_equals: expected (string) "high" but got (undefined) undefined
+FAIL createDataChannel attribute default values assert_equals: expected "blob" but got "arraybuffer"
+FAIL createDataChannel with provided parameters should initialize attributes to provided values assert_equals: expected "blob" but got "arraybuffer"
 PASS createDataChannel with label "foo" should succeed
 PASS createDataChannel with label null should succeed
 PASS createDataChannel with label undefined should succeed
@@ -30,8 +29,6 @@
 PASS createDataChannel with id -1 should throw TypeError
 PASS createDataChannel with id 65535 should throw TypeError
 PASS createDataChannel with id 65536 should throw TypeError
-FAIL createDataChannel with priority "high" should succeed assert_equals: expected (string) "high" but got (undefined) undefined
-FAIL createDataChannel with invalid priority should throw TypeError assert_throws: function "() => pc.createDataChannel('', { priority: 'invalid' })" did not throw
 PASS createDataChannel with too long label should throw TypeError
 PASS createDataChannel with too long label (2 byte unicode) should throw TypeError
 PASS createDataChannel with same label used twice should not throw
diff --git a/third_party/intellij/BUILD.gn b/third_party/intellij/BUILD.gn
index d0a8f64..862cda4a 100644
--- a/third_party/intellij/BUILD.gn
+++ b/third_party/intellij/BUILD.gn
@@ -5,6 +5,5 @@
 import("//build/config/android/rules.gni")
 
 java_prebuilt("intellij_annotations_java") {
-  testonly = true
   jar_path = "lib/annotations.jar"
 }
diff --git a/third_party/intellij/OWNERS b/third_party/intellij/OWNERS
index df1ed5b..7f75c518 100644
--- a/third_party/intellij/OWNERS
+++ b/third_party/intellij/OWNERS
@@ -1,5 +1,6 @@
 jbudorick@chromium.org
-mikecase@chromium.org
-yolandyan@chromium.org
+agrieve@chromium.org
+bjoyce@chromium.org
+wnwen@chromium.org
 
 # COMPONENT: Test>Android
diff --git a/third_party/intellij/README.chromium b/third_party/intellij/README.chromium
index 7368a24..ed88f88 100644
--- a/third_party/intellij/README.chromium
+++ b/third_party/intellij/README.chromium
@@ -1,6 +1,6 @@
 Name: IntelliJ Annotations
 URL: https://www.jetbrains.com/help/idea/2016.1/annotating-source-code.html
-Version: 12.0
+Version: 13.0
 License: Apache 2.0
 License File: NOT_SHIPPED
 Security Critical: no
diff --git a/third_party/intellij/cipd.yaml b/third_party/intellij/cipd.yaml
index 8e5a2ce..1826b65 100644
--- a/third_party/intellij/cipd.yaml
+++ b/third_party/intellij/cipd.yaml
@@ -3,7 +3,7 @@
 # found in the LICENSE file.
 
 # To create CIPD package run the following command.
-# cipd create --pkg-def cipd.yaml -tag version:$(cat version.txt)
+# cipd create --pkg-def cipd.yaml -tag version:13.0-cr0
 package: chromium/third_party/intellij
 description: intellij Java library
 data:
diff --git a/third_party/jetifier_standalone/LICENSE b/third_party/jetifier_standalone/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/jetifier_standalone/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/jetifier_standalone/OWNERS b/third_party/jetifier_standalone/OWNERS
new file mode 100644
index 0000000..0373196
--- /dev/null
+++ b/third_party/jetifier_standalone/OWNERS
@@ -0,0 +1,3 @@
+bjoyce@chromium.org
+agrieve@chromium.org
+wnwen@chromium.org
diff --git a/third_party/jetifier_standalone/README.chromium b/third_party/jetifier_standalone/README.chromium
new file mode 100644
index 0000000..7a48882e
--- /dev/null
+++ b/third_party/jetifier_standalone/README.chromium
@@ -0,0 +1,16 @@
+Name: Jetifier-standalone
+URL: https://dl.google.com/dl/android/studio/jetifier-zips/1.0.0-beta08/jetifier-standalone.zip
+Version: 1.0.0-beta08
+License: Apache 2.0
+License File: NOT_SHIPPED
+Security Critical: yes
+Description:
+The standalone Jetifier tool migrates support-library-dependent libraries to
+rely on the equivalent AndroidX packages instead.
+
+https://developer.android.com/studio/command-line/jetifier
+
+Local Modifications:
+-Classpaths in jettifier-standalone are changed to get jars in third_party.
+-Ignore_R config file removes some mappings to avoid having duplicate resources
+with androidx library and android_support library.
diff --git a/third_party/jetifier_standalone/bin/jetifier-standalone b/third_party/jetifier_standalone/bin/jetifier-standalone
new file mode 100755
index 0000000..de64c4a
--- /dev/null
+++ b/third_party/jetifier_standalone/bin/jetifier-standalone
@@ -0,0 +1,189 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+##  jetifier-standalone start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/.." >/dev/null
+APP_HOME="`pwd -P`"
+THIRD_PARTY_DIR=$APP_HOME/..
+cd "$SAVED" >/dev/null
+
+APP_NAME="jetifier-standalone"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and JETIFIER_STANDALONE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/lib/jetifier-standalone.jar:$THIRD_PARTY_DIR/android_deps/libs/com_android_tools_build_jetifier_jetifier_processor/jetifier-processor-1.0.0-beta08.jar:$THIRD_PARTY_DIR/android_deps/libs/commons_cli_commons_cli/commons-cli-1.3.1.jar:$THIRD_PARTY_DIR/android_deps/libs/com_android_tools_build_jetifier_jetifier_core/jetifier-core-1.0.0-beta08.jar:$THIRD_PARTY_DIR/ow2_asm/lib/asm-util.jar:$THIRD_PARTY_DIR/ow2_asm/lib/asm-commons.jar:$THIRD_PARTY_DIR/ow2_asm/lib/asm-tree.jar:$THIRD_PARTY_DIR/ow2_asm/lib/asm.jar:$THIRD_PARTY_DIR/org_jdom_jdom2/jdom2-2.0.6.jar:$THIRD_PARTY_DIR/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/kotlin-stdlib-1.3.41.jar:$THIRD_PARTY_DIR/gson/lib/gson.jar:$THIRD_PARTY_DIR/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/kotlin-stdlib-common-1.3.41.jar:$THIRD_PARTY_DIR/intellij/lib/annotations.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $JETIFIER_STANDALONE_OPTS -classpath "\"$CLASSPATH\"" com.android.tools.build.jetifier.standalone.Main "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+  cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/third_party/jetifier_standalone/config/ignore_R.config b/third_party/jetifier_standalone/config/ignore_R.config
new file mode 100644
index 0000000..32ae78bd
--- /dev/null
+++ b/third_party/jetifier_standalone/config/ignore_R.config
@@ -0,0 +1,4309 @@
+
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License
+# DO NOT EDIT MANUALLY! This file was auto-generated using Jetifier preprocessor.
+# To make some changes in the configuration edit "default.config" and run
+# preprocessor/scripts/processDefaultConfig.sh script to update this file.
+{
+  "restrictToPackagePrefixes": [
+    "android/support/",
+    "android/arch/",
+    "android/databinding/",
+    "com/android/databinding/library/baseAdapters/"
+  ],
+  "reversedRestrictToPackagePrefixes": [
+    "androidx/",
+    "com/google/android/material/"
+  ],
+  "rules": [
+    {
+      "from": "(.*)BuildConfig",
+      "to": "ignoreInPreprocessorOnly"
+    },
+    {
+      "from": "(.*)/package-info",
+      "to": "ignoreInPreprocessorOnly"
+    },
+    {
+      "from": "android/support/exifinterface/test/R(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "android/support/test/((.*)/)?internal/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "android/support/v4/os/ResultReceiver(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "(.*)Parcelizer",
+      "to": "{0}Parcelizer"
+    },
+    {
+      "from": "android/support/wearable/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "android/support/compat/^R(.*)",
+      "to": "androidx/core/R{0}"
+    },
+    {
+      "from": "android/support/mediacompat/^R(.*)",
+      "to": "androidx/media/R{0}"
+    },
+    {
+      "from": "android/support/v7/cardview/R(.*)",
+      "to": "androidx/cardview/R{0}"
+    },
+    {
+      "from": "android/support/percent/R(.*)",
+      "to": "androidx/percentlayout/R{0}"
+    },
+    {
+      "from": "android/support/coordinatorlayout/R(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "android/support/text/emoji/R(.*)",
+      "to": "androidx/emoji/R{0}"
+    },
+    {
+      "from": "android/support/v7/recyclerview/R(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "android/support/v7/gridlayout/R(.*)",
+      "to": "androidx/gridlayout/R{0}"
+    },
+    #{
+    #  "from": "android/support/v7/appcompat/R$(id)",
+    #  "to": "androidx/appcompat/R{0}"
+    #},
+    #{
+    #  "from": "android/support/v7/appcompat/R(.*)",
+    #  "to": "androidx/appcompat/R{0}"
+    #},
+    {
+      "from": "android/support/v7/mediarouter/R(.*)",
+      "to": "androidx/mediarouter/R{0}"
+    },
+    {
+      "from": "android/support/v4/app/ActionBarDrawerToggle(.*)",
+      "to": "androidx/legacy/app/ActionBarDrawerToggle{0}"
+    },
+    {
+      "from": "android/support/v4/widget/Space(.*)",
+      "to": "androidx/legacy/widget/Space{0}"
+    },
+    {
+      "from": "android/support/v4/content/WakefulBroadcastReceiver(.*)",
+      "to": "androidx/legacy/content/WakefulBroadcastReceiver{0}"
+    },
+    {
+      "from": "android/support/v13/view/ViewCompat(.*)",
+      "to": "androidx/legacy/view/ViewCompat{0}"
+    },
+    {
+      "from": "android/support/v13/app/ActivityCompat(.*)",
+      "to": "androidx/legacy/app/ActivityCompat{0}"
+    },
+    {
+      "from": "android/support/v13/app/FragmentCompat(.*)",
+      "to": "androidx/legacy/app/FragmentCompat{0}"
+    },
+    {
+      "from": "android/support/v13/app/FragmentPagerAdapter(.*)",
+      "to": "androidx/legacy/app/FragmentPagerAdapter{0}"
+    },
+    {
+      "from": "android/support/v13/app/FragmentStatePagerAdapter(.*)",
+      "to": "androidx/legacy/app/FragmentStatePagerAdapter{0}"
+    },
+    {
+      "from": "android/support/v13/app/FragmentTabHost(.*)",
+      "to": "androidx/legacy/app/FragmentTabHost{0}"
+    },
+    {
+      "from": "android/support/v7/widget/AdapterHelper(.*)",
+      "to": "androidx/recyclerview/widget/AdapterHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/ChildHelper(.*)",
+      "to": "androidx/recyclerview/widget/ChildHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/DefaultItemAnimator(.*)",
+      "to": "androidx/recyclerview/widget/DefaultItemAnimator{0}"
+    },
+    {
+      "from": "android/support/v7/widget/DividerItemDecoration(.*)",
+      "to": "androidx/recyclerview/widget/DividerItemDecoration{0}"
+    },
+    {
+      "from": "android/support/v7/widget/FastScroller(.*)",
+      "to": "androidx/recyclerview/widget/FastScroller{0}"
+    },
+    {
+      "from": "android/support/v7/widget/GapWorker(.*)",
+      "to": "androidx/recyclerview/widget/GapWorker{0}"
+    },
+    {
+      "from": "android/support/v7/widget/GridLayoutManager(.*)",
+      "to": "androidx/recyclerview/widget/GridLayoutManager{0}"
+    },
+    {
+      "from": "android/support/v7/widget/LayoutState(.*)",
+      "to": "androidx/recyclerview/widget/LayoutState{0}"
+    },
+    {
+      "from": "android/support/v7/widget/LinearLayoutManager(.*)",
+      "to": "androidx/recyclerview/widget/LinearLayoutManager{0}"
+    },
+    {
+      "from": "android/support/v7/widget/LinearSmoothScroller(.*)",
+      "to": "androidx/recyclerview/widget/LinearSmoothScroller{0}"
+    },
+    {
+      "from": "android/support/v7/widget/LinearSnapHelper(.*)",
+      "to": "androidx/recyclerview/widget/LinearSnapHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/OpReorderer(.*)",
+      "to": "androidx/recyclerview/widget/OpReorderer{0}"
+    },
+    {
+      "from": "android/support/v7/widget/OrientationHelper(.*)",
+      "to": "androidx/recyclerview/widget/OrientationHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/PagerSnapHelper(.*)",
+      "to": "androidx/recyclerview/widget/PagerSnapHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/PositionMap(.*)",
+      "to": "androidx/recyclerview/widget/PositionMap{0}"
+    },
+    {
+      "from": "android/support/v7/widget/RecyclerViewAccessibilityDelegate(.*)",
+      "to": "androidx/recyclerview/widget/RecyclerViewAccessibilityDelegate{0}"
+    },
+    {
+      "from": "android/support/v7/widget/RecyclerView(.*)",
+      "to": "androidx/recyclerview/widget/RecyclerView{0}"
+    },
+    {
+      "from": "android/support/v7/widget/ScrollbarHelper(.*)",
+      "to": "androidx/recyclerview/widget/ScrollbarHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/SimpleItemAnimator(.*)",
+      "to": "androidx/recyclerview/widget/SimpleItemAnimator{0}"
+    },
+    {
+      "from": "android/support/v7/widget/SnapHelper(.*)",
+      "to": "androidx/recyclerview/widget/SnapHelper{0}"
+    },
+    {
+      "from": "android/support/v7/widget/StaggeredGridLayoutManager(.*)",
+      "to": "androidx/recyclerview/widget/StaggeredGridLayoutManager{0}"
+    },
+    {
+      "from": "android/support/v7/widget/ViewBoundsCheck(.*)",
+      "to": "androidx/recyclerview/widget/ViewBoundsCheck{0}"
+    },
+    {
+      "from": "android/support/v7/widget/ViewInfoStore(.*)",
+      "to": "androidx/recyclerview/widget/ViewInfoStore{0}"
+    },
+    {
+      "from": "android/support/v7/recyclerview/extensions/(.*)",
+      "to": "androidx/recyclerview/widget/{0}"
+    },
+    {
+      "from": "android/support/v7/util/(.*)",
+      "to": "androidx/recyclerview/widget/{0}"
+    },
+    {
+      "from": "android/support/v7/widget/helper/(.*)",
+      "to": "androidx/recyclerview/widget/{0}"
+    },
+    {
+      "from": "android/support/v7/widget/util/(.*)",
+      "to": "androidx/recyclerview/widget/{0}"
+    },
+    {
+      "from": "android/support/wear/(.*)",
+      "to": "androidx/wear/{0}"
+    },
+    {
+      "from": "android/support/v7/preference/^R(.*)",
+      "to": "androidx/preference/{0}"
+    },
+    {
+      "from": "android/support/v7/internal/widget/PreferenceImageView(.*)",
+      "to": "androidx/preference/internal/PreferenceImageView{0}"
+    },
+    {
+      "from": "android/support/v14/preference/(.*)",
+      "to": "androidx/preference/{0}"
+    },
+    {
+      "from": "android/support/v7/graphics/ColorCutQuantizer(.*)",
+      "to": "androidx/palette/graphics/ColorCutQuantizer{0}"
+    },
+    {
+      "from": "android/support/v7/graphics/Palette(.*)",
+      "to": "androidx/palette/graphics/Palette{0}"
+    },
+    {
+      "from": "android/support/v7/graphics/Target(.*)",
+      "to": "androidx/palette/graphics/Target{0}"
+    },
+    {
+      "from": "android/support/v7/app/MediaRoute(.*)",
+      "to": "androidx/mediarouter/app/MediaRoute{0}"
+    },
+    {
+      "from": "android/support/v7/app/OverlayListView(.*)",
+      "to": "androidx/mediarouter/app/OverlayListView{0}"
+    },
+    {
+      "from": "android/support/v7/media/(.*)",
+      "to": "androidx/mediarouter/media/{0}"
+    },
+    {
+      "from": "android/support/v7/widget/CardView(.*)",
+      "to": "androidx/cardview/widget/CardView{0}"
+    },
+    {
+      "from": "android/support/v7/widget/RoundRectDrawable(.*)",
+      "to": "androidx/cardview/widget/RoundRectDrawable{0}"
+    },
+    {
+      "from": "android/support/v7/widget/RoundRectDrawableWithShadow(.*)",
+      "to": "androidx/cardview/widget/RoundRectDrawableWithShadow{0}"
+    },
+    {
+      "from": "android/support/v7/widget/GridLayout(.*)",
+      "to": "androidx/gridlayout/widget/GridLayout{0}"
+    },
+    {
+      "from": "android/support/v4/content/res/GrowingArrayUtils(.*)",
+      "to": "androidx/core/content/res/GrowingArrayUtils{0}"
+    },
+    {
+      "from": "android/support/v7/content/res/GrowingArrayUtils(.*)",
+      "to": "androidx/core/content/res/GrowingArrayUtils{0}"
+    },
+    {
+      "from": "android/support/v4/content/res/ColorStateListInflaterCompat(.*)",
+      "to": "androidx/core/content/res/ColorStateListInflaterCompat{0}"
+    },
+    {
+      "from": "android/support/v7/content/res/AppCompatColorStateListInflater(.*)",
+      "to": "androidx/core/content/res/ColorStateListInflaterCompat{0}"
+    },
+    {
+      "from": "android/support/v7/(.*)",
+      "to": "androidx/appcompat/{0}"
+    },
+    {
+      "from": "android/support/graphics/drawable/(.*)",
+      "to": "androidx/vectordrawable/graphics/drawable/{0}"
+    },
+    {
+      "from": "android/support/customtabs/CustomTabs(.*)",
+      "to": "androidx/browser/customtabs/CustomTabs{0}"
+    },
+    {
+      "from": "android/support/customtabs/PostMessageService(.*)",
+      "to": "androidx/browser/customtabs/PostMessageService{0}"
+    },
+    {
+      "from": "android/support/customtabs/TrustedWebUtils(.*)",
+      "to": "androidx/browser/customtabs/TrustedWebUtils{0}"
+    },
+    {
+      "from": "android/support/customtabs/R(.*)",
+      "to": "androidx/browser/R{0}"
+    },
+    {
+      "from": "android/support/customtabs/(.*)",
+      "to": "android/support/customtabs/{0}"
+    },
+    {
+      "from": "android/support/media/tv/(.*)",
+      "to": "androidx/tvprovider/media/tv/{0}"
+    },
+    {
+      "from": "android/support/media/ExifInterface(.*)",
+      "to": "androidx/exifinterface/media/ExifInterface{0}"
+    },
+    {
+      "from": "android/support/v17/internal/widget/OutlineOnlyWithChildrenFrameLayout(.*)",
+      "to": "androidx/leanback/preference/internal/OutlineOnlyWithChildrenFrameLayout{0}"
+    },
+    {
+      "from": "android/support/v17/preference/(.*)",
+      "to": "androidx/leanback/preference/{0}"
+    },
+    {
+      "from": "android/support/v17/leanback/(.*)",
+      "to": "androidx/leanback/{0}"
+    },
+    {
+      "from": "android/support/percent/(.*)",
+      "to": "androidx/percentlayout/widget/{0}"
+    },
+    {
+      "from": "android/support/app/recommendation/(.*)",
+      "to": "androidx/recommendation/app/{0}"
+    },
+    {
+      "from": "android/support/annotation/(.*)",
+      "to": "androidx/annotation/{0}"
+    },
+    {
+      "from": "android/support/transition/(.*)",
+      "to": "androidx/transition/{0}"
+    },
+    {
+      "from": "android/support/text/emoji/bundled/BundledEmojiCompatConfig(.*)",
+      "to": "androidx/emoji/bundled/BundledEmojiCompatConfig{0}"
+    },
+    {
+      "from": "android/support/text/emoji/widget/(.*)",
+      "to": "androidx/emoji/widget/{0}"
+    },
+    {
+      "from": "android/support/text/emoji/(.*)",
+      "to": "androidx/emoji/text/{0}"
+    },
+    {
+      "from": "android/support/content/(.*)",
+      "to": "androidx/contentpager/content/{0}"
+    },
+    {
+      "from": "android/support/v4/view/animation/PathInterpolatorApi14(.*)",
+      "to": "androidx/core/view/animation/PathInterpolatorApi14{0}"
+    },
+    {
+      "from": "android/support/v4/view/animation/PathInterpolatorCompat(.*)",
+      "to": "androidx/core/view/animation/PathInterpolatorCompat{0}"
+    },
+    {
+      "from": "android/support/animation/(.*)",
+      "to": "androidx/dynamicanimation/animation/{0}"
+    },
+    {
+      "from": "android/support/v4/app/SupportActivity(.*)",
+      "to": "androidx/core/app/ComponentActivity{0}"
+    },
+    {
+      "from": "android/support/v4/app/Fragment(.*)",
+      "to": "androidx/fragment/app/Fragment{0}"
+    },
+    {
+      "from": "android/support/v4/app/BaseFragment(.*)",
+      "to": "androidx/fragment/app/BaseFragment{0}"
+    },
+    {
+      "from": "android/support/v4/app/BackStack(.*)",
+      "to": "androidx/fragment/app/BackStack{0}"
+    },
+    {
+      "from": "android/support/v4/app/DialogFragment(.*)",
+      "to": "androidx/fragment/app/DialogFragment{0}"
+    },
+    {
+      "from": "android/support/v4/app/ListFragment(.*)",
+      "to": "androidx/fragment/app/ListFragment{0}"
+    },
+    {
+      "from": "android/support/v4/app/OneShotPreDrawListener(.*)",
+      "to": "androidx/fragment/app/OneShotPreDrawListener{0}"
+    },
+    {
+      "from": "android/support/v4/app/SuperNotCalledException(.*)",
+      "to": "androidx/fragment/app/SuperNotCalledException{0}"
+    },
+    {
+      "from": "android/support/textclassifier/(.*)",
+      "to": "androidx/textclassifier/{0}"
+    },
+    {
+      "from": "android/support/v4/media/app/NotificationCompat(.*)",
+      "to": "androidx/media/app/NotificationCompat{0}"
+    },
+    {
+      "from": "android/support/v4/media/AudioAttributesCompat(.*)",
+      "to": "androidx/media/AudioAttributesCompat{0}"
+    },
+    {
+      "from": "android/support/v4/media/MediaBrowserCompatUtils(.*)",
+      "to": "androidx/media/MediaBrowserCompatUtils{0}"
+    },
+    {
+      "from": "android/support/v4/media/MediaBrowserProtocol(.*)",
+      "to": "androidx/media/MediaBrowserProtocol{0}"
+    },
+    {
+      "from": "android/support/v4/media/MediaBrowserServiceCompat(.*)",
+      "to": "androidx/media/MediaBrowserServiceCompat{0}"
+    },
+    {
+      "from": "android/support/v4/media/VolumeProviderCompat(.*)",
+      "to": "androidx/media/VolumeProviderCompat{0}"
+    },
+    {
+      "from": "android/support/v4/media/session/MediaButtonReceiver(.*)",
+      "to": "androidx/media/session/MediaButtonReceiver{0}"
+    },
+    {
+      "from": "android/support/v4/media/(.*)",
+      "to": "android/support/v4/media/{0}"
+    },
+    {
+      "from": "android/support/v4/widget/CursorAdapter(.*)",
+      "to": "androidx/cursoradapter/widget/CursorAdapter{0}"
+    },
+    {
+      "from": "android/support/v4/widget/CursorFilter(.*)",
+      "to": "androidx/cursoradapter/widget/CursorFilter{0}"
+    },
+    {
+      "from": "android/support/v4/widget/ResourceCursorAdapter(.*)",
+      "to": "androidx/cursoradapter/widget/ResourceCursorAdapter{0}"
+    },
+    {
+      "from": "android/support/v4/widget/SimpleCursorAdapter(.*)",
+      "to": "androidx/cursoradapter/widget/SimpleCursorAdapter{0}"
+    },
+    {
+      "from": "android/support/v4/app/LoaderManager(.*)",
+      "to": "androidx/loader/app/LoaderManager{0}"
+    },
+    {
+      "from": "android/support/v4/content/Loader(.*)",
+      "to": "androidx/loader/content/Loader{0}"
+    },
+    {
+      "from": "android/support/v4/content/CursorLoader(.*)",
+      "to": "androidx/loader/content/CursorLoader{0}"
+    },
+    {
+      "from": "android/support/v4/content/AsyncTaskLoader(.*)",
+      "to": "androidx/loader/content/AsyncTaskLoader{0}"
+    },
+    {
+      "from": "android/support/v4/content/ModernAsyncTask(.*)",
+      "to": "androidx/loader/content/ModernAsyncTask{0}"
+    },
+    {
+      "from": "android/support/design/widget/CoordinatorLayout(.*)",
+      "to": "androidx/coordinatorlayout/widget/CoordinatorLayout{0}"
+    },
+    {
+      "from": "android/support/v4/widget/DirectedAcyclicGraph(.*)",
+      "to": "androidx/coordinatorlayout/widget/DirectedAcyclicGraph{0}"
+    },
+    {
+      "from": "android/support/v4/widget/ViewGroupUtils(.*)",
+      "to": "androidx/coordinatorlayout/widget/ViewGroupUtils{0}"
+    },
+    {
+      "from": "android/support/v4/view/ViewPager(.*)",
+      "to": "androidx/viewpager/widget/ViewPager{0}"
+    },
+    {
+      "from": "android/support/v4/view/PagerAdapter(.*)",
+      "to": "androidx/viewpager/widget/PagerAdapter{0}"
+    },
+    {
+      "from": "android/support/v4/view/PagerTabStrip(.*)",
+      "to": "androidx/viewpager/widget/PagerTabStrip{0}"
+    },
+    {
+      "from": "android/support/v4/view/PagerTitleStrip(.*)",
+      "to": "androidx/viewpager/widget/PagerTitleStrip{0}"
+    },
+    {
+      "from": "android/support/v4/view/AbsSavedState(.*)",
+      "to": "androidx/customview/view/AbsSavedState{0}"
+    },
+    {
+      "from": "android/support/v4/widget/ExploreByTouchHelper(.*)",
+      "to": "androidx/customview/widget/ExploreByTouchHelper{0}"
+    },
+    {
+      "from": "android/support/v4/widget/FocusStrategy(.*)",
+      "to": "androidx/customview/widget/FocusStrategy{0}"
+    },
+    {
+      "from": "android/support/v4/widget/ViewDragHelper(.*)",
+      "to": "androidx/customview/widget/ViewDragHelper{0}"
+    },
+    {
+      "from": "android/support/v4/view/animation/(.*)",
+      "to": "androidx/interpolator/view/animation/{0}"
+    },
+    {
+      "from": "android/support/v4/widget/DrawerLayout(.*)",
+      "to": "androidx/drawerlayout/widget/DrawerLayout{0}"
+    },
+    {
+      "from": "android/support/v4/widget/SlidingPaneLayout(.*)",
+      "to": "androidx/slidingpanelayout/widget/SlidingPaneLayout{0}"
+    },
+    {
+      "from": "android/support/v4/view/AsyncLayoutInflater(.*)",
+      "to": "androidx/asynclayoutinflater/view/AsyncLayoutInflater{0}"
+    },
+    {
+      "from": "android/support/v4/widget/SwipeRefreshLayout(.*)",
+      "to": "androidx/swiperefreshlayout/widget/SwipeRefreshLayout{0}"
+    },
+    {
+      "from": "android/support/v4/widget/CircularProgressDrawable(.*)",
+      "to": "androidx/swiperefreshlayout/widget/CircularProgressDrawable{0}"
+    },
+    {
+      "from": "android/support/v4/widget/CircleImageView(.*)",
+      "to": "androidx/swiperefreshlayout/widget/CircleImageView{0}"
+    },
+    {
+      "from": "android/support/v4/util/ArrayMap(.*)",
+      "to": "androidx/collection/ArrayMap{0}"
+    },
+    {
+      "from": "android/support/v4/util/ArraySet(.*)",
+      "to": "androidx/collection/ArraySet{0}"
+    },
+    {
+      "from": "android/support/v4/util/CircularArray(.*)",
+      "to": "androidx/collection/CircularArray{0}"
+    },
+    {
+      "from": "android/support/v4/util/CircularIntArray(.*)",
+      "to": "androidx/collection/CircularIntArray{0}"
+    },
+    {
+      "from": "android/support/v4/util/ContainerHelpers(.*)",
+      "to": "androidx/collection/ContainerHelpers{0}"
+    },
+    {
+      "from": "android/support/v4/util/LongSparseArray(.*)",
+      "to": "androidx/collection/LongSparseArray{0}"
+    },
+    {
+      "from": "android/support/v4/util/LruCache(.*)",
+      "to": "androidx/collection/LruCache{0}"
+    },
+    {
+      "from": "android/support/v4/util/MapCollections(.*)",
+      "to": "androidx/collection/MapCollections{0}"
+    },
+    {
+      "from": "android/support/v4/util/SimpleArrayMap(.*)",
+      "to": "androidx/collection/SimpleArrayMap{0}"
+    },
+    {
+      "from": "android/support/v4/util/SparseArray(.*)",
+      "to": "androidx/collection/SparseArray{0}"
+    },
+    {
+      "from": "android/support/v4/provider/DocumentFile(.*)",
+      "to": "androidx/documentfile/provider/DocumentFile{0}"
+    },
+    {
+      "from": "android/support/v4/provider/DocumentsContractApi19(.*)",
+      "to": "androidx/documentfile/provider/DocumentsContractApi19{0}"
+    },
+    {
+      "from": "android/support/v4/provider/RawDocumentFile(.*)",
+      "to": "androidx/documentfile/provider/RawDocumentFile{0}"
+    },
+    {
+      "from": "android/support/v4/provider/SingleDocumentFile(.*)",
+      "to": "androidx/documentfile/provider/SingleDocumentFile{0}"
+    },
+    {
+      "from": "android/support/v4/provider/TreeDocumentFile(.*)",
+      "to": "androidx/documentfile/provider/TreeDocumentFile{0}"
+    },
+    {
+      "from": "android/support/v4/content/LocalBroadcastManager(.*)",
+      "to": "androidx/localbroadcastmanager/content/LocalBroadcastManager{0}"
+    },
+    {
+      "from": "android/support/v4/print/(.*)",
+      "to": "androidx/print/{0}"
+    },
+    {
+      "from": "android/support/v4/^R(.*)",
+      "to": "androidx/core/{0}"
+    },
+    {
+      "from": "android/support/v13/(.*)",
+      "to": "androidx/core/{0}"
+    },
+    {
+      "from": "android/arch/core/(.*)",
+      "to": "androidx/arch/core/{0}"
+    },
+    {
+      "from": "android/arch/lifecycle/(.*)",
+      "to": "androidx/lifecycle/{0}"
+    },
+    {
+      "from": "android/arch/paging/(.*)",
+      "to": "androidx/paging/{0}"
+    },
+    {
+      "from": "android/arch/persistence/room/(.*)",
+      "to": "androidx/room/{0}"
+    },
+    {
+      "from": "android/arch/persistence/(.*)",
+      "to": "androidx/sqlite/{0}"
+    },
+    {
+      "from": "android/arch/core/executor/testing/(.*)",
+      "to": "androidx/arch/core/executor/testing/{0}"
+    },
+    {
+      "from": "android/support/constraint/solver/(.*)",
+      "to": "androidx/constraintlayout/solver/{0}"
+    },
+    {
+      "from": "android/support/constraint/(.*)",
+      "to": "androidx/constraintlayout/widget/{0}"
+    },
+    {
+      "from": "com/android/support/v8/renderscript/EnableAsyncTeardown",
+      "to": "androidx/renderscript/EnableAsyncTeardown"
+    },
+    {
+      "from": "com/android/support/v8/renderscript/EnableBlurWorkaround",
+      "to": "androidx/renderscript/EnableBlurWorkaround"
+    },
+    {
+      "from": "android/support/v8/renderscript/(.*)",
+      "to": "androidx/renderscript/{0}"
+    },
+    {
+      "from": "android/databinding/(.*)",
+      "to": "androidx/databinding/{0}"
+    },
+    {
+      "from": "android/support/multidex/(.*)",
+      "to": "androidx/multidex/{0}"
+    },
+    {
+      "from": "androidx/versionedparcelable/(.*)",
+      "to": "androidx/versionedparcelable/{0}"
+    },
+    {
+      "from": "android/support/design/widget/AppBarLayout(.*)",
+      "to": "com/google/android/material/appbar/AppBarLayout{0}"
+    },
+    {
+      "from": "android/support/design/widget/BaseTransientBottomBar(.*)",
+      "to": "com/google/android/material/snackbar/BaseTransientBottomBar{0}"
+    },
+    {
+      "from": "android/support/design/widget/BottomNavigationView(.*)",
+      "to": "com/google/android/material/bottomnavigation/BottomNavigationView{0}"
+    },
+    {
+      "from": "android/support/design/widget/BottomSheet(.*)",
+      "to": "com/google/android/material/bottomsheet/BottomSheet{0}"
+    },
+    {
+      "from": "android/support/design/widget/CheckableImageButton(.*)",
+      "to": "com/google/android/material/internal/CheckableImageButton{0}"
+    },
+    {
+      "from": "android/support/design/widget/CircularBorderDrawable(.*)",
+      "to": "com/google/android/material/internal/CircularBorderDrawable{0}"
+    },
+    {
+      "from": "android/support/design/widget/CollapsingTextHelper(.*)",
+      "to": "com/google/android/material/internal/CollapsingTextHelper{0}"
+    },
+    {
+      "from": "android/support/design/widget/CollapsingToolbarLayout(.*)",
+      "to": "com/google/android/material/appbar/CollapsingToolbarLayout{0}"
+    },
+    {
+      "from": "android/support/design/widget/CutoutDrawable(.*)",
+      "to": "com/google/android/material/textfield/CutoutDrawable{0}"
+    },
+    {
+      "from": "android/support/design/widget/DescendantOffsetUtils(.*)",
+      "to": "com/google/android/material/internal/DescendantOffsetUtils{0}"
+    },
+    {
+      "from": "android/support/design/widget/DrawableUtils(.*)",
+      "to": "com/google/android/material/internal/DrawableUtils{0}"
+    },
+    {
+      "from": "android/support/design/widget/FloatingActionButton(.*)",
+      "to": "com/google/android/material/floatingactionbutton/FloatingActionButton{0}"
+    },
+    {
+      "from": "android/support/design/widget/HeaderBehavior(.*)",
+      "to": "com/google/android/material/appbar/HeaderBehavior{0}"
+    },
+    {
+      "from": "android/support/design/widget/HeaderScrollingViewBehavior(.*)",
+      "to": "com/google/android/material/appbar/HeaderScrollingViewBehavior{0}"
+    },
+    {
+      "from": "android/support/design/widget/HideBottomViewOnScrollBehavior(.*)",
+      "to": "com/google/android/material/behavior/HeaderScrollingViewBehavior{0}"
+    },
+    {
+      "from": "android/support/design/widget/IndicatorViewController(.*)",
+      "to": "com/google/android/material/textfield/IndicatorViewController{0}"
+    },
+    {
+      "from": "android/support/design/widget/MathUtils(.*)",
+      "to": "com/google/android/material/math/MathUtils{0}"
+    },
+    {
+      "from": "android/support/design/widget/NavigationView(.*)",
+      "to": "com/google/android/material/navigation/NavigationView{0}"
+    },
+    {
+      "from": "android/support/design/widget/Shadow(.*)",
+      "to": "com/google/android/material/shadow/Shadow{0}"
+    },
+    {
+      "from": "android/support/design/widget/Snackbar(.*)",
+      "to": "com/google/android/material/snackbar/Snackbar{0}"
+    },
+    {
+      "from": "android/support/design/widget/SnackbarManager(.*)",
+      "to": "com/google/android/material/snackbar/SnackbarManager{0}"
+    },
+    {
+      "from": "android/support/design/widget/StateListAnimator(.*)",
+      "to": "com/google/android/material/internal/StateListAnimator{0}"
+    },
+    {
+      "from": "android/support/design/widget/SwipeDismissBehavior(.*)",
+      "to": "com/google/android/material/behavior/SwipeDismissBehavior{0}"
+    },
+    {
+      "from": "android/support/design/widget/Tab(.*)",
+      "to": "com/google/android/material/tabs/Tab{0}"
+    },
+    {
+      "from": "android/support/design/widget/TextInput(.*)",
+      "to": "com/google/android/material/textfield/TextInput{0}"
+    },
+    {
+      "from": "android/support/design/widget/ViewOffsetBehavior(.*)",
+      "to": "com/google/android/material/appbar/ViewOffsetBehavior{0}"
+    },
+    {
+      "from": "android/support/design/widget/ViewOffsetHelper(.*)",
+      "to": "com/google/android/material/appbar/ViewOffsetHelper{0}"
+    },
+    {
+      "from": "android/support/design/widget/ViewUtilsLollipop(.*)",
+      "to": "com/google/android/material/appbar/ViewUtilsLollipop{0}"
+    },
+    {
+      "from": "android/support/design/widget/VisibilityAwareImageButton(.*)",
+      "to": "com/google/android/material/internal/VisibilityAwareImageButton{0}"
+    },
+    {
+      "from": "android/support/design/internal/BottomNavigation(.*)",
+      "to": "com/google/android/material/bottomnavigation/BottomNavigation{0}"
+    },
+    {
+      "from": "android/support/design/internal/SnackbarContentLayout(.*)",
+      "to": "com/google/android/material/snackbar/SnackbarContentLayout{0}"
+    },
+    {
+      "from": "android/support/design/R(.*)",
+      "to": "com/google/android/material/R{0}"
+    },
+    {
+      "from": "android/support/design/(.*)",
+      "to": "com/google/android/material/{0}"
+    },
+    #{
+    #  "from": "android/support/test/(.*)",
+    #  "to": "androidx/test/{0}"
+    #},
+    {
+      "from": "android/support/biometric/(.*)",
+      "to": "androidx/biometric/{0}"
+    },
+    {
+      "from": "com/android/databinding/library/baseAdapters/(.*)",
+      "to": "androidx/databinding/library/baseAdapters/{0}"
+    }
+  ],
+  "slRules": [
+    {
+      "from": "(.*)/package-info",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/navigation/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/text/emoji/flatbuffer/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/browser/browseractions/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/heifwriter/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/webkit/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/slice/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/recyclerview/selection/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/car/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/media/widget/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/media2/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/concurrent/futures/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/(.*)/ktx/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/(.*)/(.*)-ktx/(.*)",
+      "to": "ignore"
+    },
+    {
+      "from": "androidx/media/(.*)",
+      "to": "android/support/v4/media/{0}"
+    },
+    {
+      "from": "androidx/coordinatorlayout/widget/annotations",
+      "to": "android/support/design/widget/annotations"
+    },
+    {
+      "from": "androidx/drawerlayout/widget/annotations",
+      "to": "android/support/v4/widget/annotations"
+    },
+    {
+      "from": "androidx/exifinterface/media/annotations",
+      "to": "android/support/media/annotations"
+    },
+    {
+      "from": "androidx/fragment/app/annotations",
+      "to": "android/support/v4/app/annotations"
+    },
+    {
+      "from": "androidx/mediarouter/app/annotations",
+      "to": "android/support/v7/app/annotations"
+    },
+    {
+      "from": "androidx/swiperefreshlayout/widget/annotations",
+      "to": "android/support/v4/widget/annotations"
+    },
+    {
+      "from": "androidx/browser/customtabs/annotations",
+      "to": "android/support/customtabs/annotations"
+    },
+    {
+      "from": "androidx/browser/browseractions/annotations",
+      "to": "ignore"
+    }
+  ],
+  "packageMap": [
+    {
+      "from": "android/support/exifinterface",
+      "to": "androidx/exifinterface"
+    },
+    {
+      "from": "android/support/heifwriter",
+      "to": "androidx/heifwriter"
+    },
+    {
+      "from": "android/support/graphics/drawable",
+      "to": "androidx/vectordrawable"
+    },
+    {
+      "from": "android/support/graphics/drawable/animated",
+      "to": "androidx/vectordrawable"
+    },
+    {
+      "from": "android/support/media/tv",
+      "to": "androidx/tvprovider"
+    },
+    {
+      "from": "android/support/textclassifier",
+      "to": "androidx/textclassifier"
+    },
+    {
+      "from": "androidx/recyclerview/selection",
+      "to": "androidx/recyclerview/selection"
+    },
+    {
+      "from": "android/support/v4",
+      "to": "androidx/legacy/v4"
+    },
+    {
+      "from": "android/support/print",
+      "to": "androidx/print"
+    },
+    {
+      "from": "android/support/documentfile",
+      "to": "androidx/documentfile"
+    },
+    {
+      "from": "android/support/coordinatorlayout",
+      "to": "androidx/coordinatorlayout"
+    },
+    {
+      "from": "android/support/swiperefreshlayout",
+      "to": "androidx/swiperefreshlayout"
+    },
+    {
+      "from": "android/support/slidingpanelayout",
+      "to": "androidx/slidingpanelayout"
+    },
+    {
+      "from": "android/support/asynclayoutinflater",
+      "to": "androidx/asynclayoutinflater"
+    },
+    {
+      "from": "android/support/interpolator",
+      "to": "androidx/interpolator"
+    },
+    {
+      "from": "android/support/v7/palette",
+      "to": "androidx/palette"
+    },
+    {
+      "from": "android/support/v7/cardview",
+      "to": "androidx/cardview"
+    },
+    {
+      "from": "android/support/customview",
+      "to": "androidx/customview"
+    },
+    {
+      "from": "android/support/loader",
+      "to": "androidx/loader"
+    },
+    {
+      "from": "android/support/cursoradapter",
+      "to": "androidx/cursoradapter"
+    },
+    {
+      "from": "android/support/v7/mediarouter",
+      "to": "androidx/mediarouter"
+    },
+    {
+      "from": "android/support/v7/appcompat",
+      "to": "androidx/appcompat"
+    },
+    {
+      "from": "android/support/v7/recyclerview",
+      "to": "androidx/recyclerview"
+    },
+    {
+      "from": "android/support/v7/viewpager",
+      "to": "androidx/viewpager"
+    },
+    {
+      "from": "android/support/percent",
+      "to": "androidx/percentlayout"
+    },
+    {
+      "from": "android/support/v7/gridlayout",
+      "to": "androidx/gridlayout"
+    },
+    {
+      "from": "android/support/v13",
+      "to": "androidx/legacy/v13"
+    },
+    {
+      "from": "android/support/v7/preference",
+      "to": "androidx/preference"
+    },
+    {
+      "from": "android/support/v14/preference",
+      "to": "androidx/legacy/preference"
+    },
+    {
+      "from": "android/support/v17/leanback",
+      "to": "androidx/leanback"
+    },
+    {
+      "from": "android/support/v17/preference",
+      "to": "androidx/leanback/preference"
+    },
+    {
+      "from": "android/support/compat",
+      "to": "androidx/core"
+    },
+    {
+      "from": "android/support/mediacompat",
+      "to": "androidx/media"
+    },
+    {
+      "from": "android/support/media2",
+      "to": "androidx/media2"
+    },
+    {
+      "from": "androidx/media2/exoplayer/external",
+      "to": "androidx/media2/exoplayer/external"
+    },
+    {
+      "from": "android/support/fragment",
+      "to": "androidx/fragment"
+    },
+    {
+      "from": "android/support/coreutils",
+      "to": "androidx/legacy/coreutils"
+    },
+    {
+      "from": "android/support/dynamicanimation",
+      "to": "androidx/dynamicanimation"
+    },
+    {
+      "from": "android/support/customtabs",
+      "to": "androidx/browser"
+    },
+    {
+      "from": "android/support/coreui",
+      "to": "androidx/legacy/coreui"
+    },
+    {
+      "from": "android/support/content",
+      "to": "androidx/contentpager"
+    },
+    {
+      "from": "android/support/transition",
+      "to": "androidx/transition"
+    },
+    {
+      "from": "android/support/recommendation",
+      "to": "androidx/recommendation"
+    },
+    {
+      "from": "android/support/drawerlayout",
+      "to": "androidx/drawerlayout"
+    },
+    {
+      "from": "android/support/wear",
+      "to": "androidx/wear"
+    },
+    {
+      "from": "android/support/design",
+      "to": "com/google/android/material"
+    },
+    {
+      "from": "android/support/text/emoji/appcompat",
+      "to": "androidx/emoji/appcompat"
+    },
+    {
+      "from": "android/support/text/emoji/bundled",
+      "to": "androidx/emoji/bundled"
+    },
+    {
+      "from": "android/support/text/emoji",
+      "to": "androidx/emoji"
+    },
+    {
+      "from": "androidx/text/emoji/bundled",
+      "to": "androidx/text/emoji/bundled"
+    },
+    {
+      "from": "android/support/localbroadcastmanager",
+      "to": "androidx/localbroadcastmanager"
+    },
+    {
+      "from": "androidx/text/emoji/bundled",
+      "to": "androidx/text/emoji/bundled"
+    },
+    {
+      "from": "androidx/webkit",
+      "to": "androidx/webkit"
+    },
+    {
+      "from": "androidx/versionedparcelable",
+      "to": "androidx/versionedparcelable"
+    },
+    {
+      "from": "androidx/slice/view",
+      "to": "androidx/slice/view"
+    },
+    {
+      "from": "androidx/slice/core",
+      "to": "androidx/slice/core"
+    },
+    {
+      "from": "androidx/slice/builders",
+      "to": "androidx/slice/builders"
+    },
+    {
+      "from": "android/arch/paging/runtime",
+      "to": "androidx/paging/runtime"
+    },
+    {
+      "from": "android/arch/core/testing",
+      "to": "androidx/arch/core/testing"
+    },
+    {
+      "from": "android/arch/core",
+      "to": "androidx/arch/core"
+    },
+    {
+      "from": "android/arch/persistence/db/framework",
+      "to": "androidx/sqlite/db/framework"
+    },
+    {
+      "from": "android/arch/persistence/db",
+      "to": "androidx/sqlite/db"
+    },
+    {
+      "from": "android/arch/persistence/room/rxjava2",
+      "to": "androidx/room/rxjava2"
+    },
+    {
+      "from": "android/arch/persistence/room/guava",
+      "to": "androidx/room/guava"
+    },
+    {
+      "from": "android/arch/persistence/room/testing",
+      "to": "androidx/room/testing"
+    },
+    {
+      "from": "android/arch/persistence/room",
+      "to": "androidx/room"
+    },
+    {
+      "from": "android/arch/lifecycle/extensions",
+      "to": "androidx/lifecycle/extensions"
+    },
+    {
+      "from": "android/arch/lifecycle/livedata/core",
+      "to": "androidx/lifecycle/livedata/core"
+    },
+    {
+      "from": "android/arch/lifecycle",
+      "to": "androidx/lifecycle"
+    },
+    {
+      "from": "android/arch/lifecycle/viewmodel",
+      "to": "androidx/lifecycle/viewmodel"
+    },
+    {
+      "from": "android/arch/lifecycle/livedata",
+      "to": "androidx/lifecycle/livedata"
+    },
+    {
+      "from": "android/arch/lifecycle/reactivestreams",
+      "to": "androidx/lifecycle/reactivestreams"
+    },
+    {
+      "from": "android/support/multidex/instrumentation",
+      "to": "androidx/multidex/instrumentation"
+    },
+    {
+      "from": "android/support/multidex",
+      "to": "androidx/multidex"
+    },
+    {
+      "from": "android/support/biometric",
+      "to": "androidx/biometric"
+    }
+  ],
+  "pomRules": [
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "animated-vector-drawable",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.vectordrawable",
+        "artifactId": "vectordrawable-animated",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "appcompat-v7",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.appcompat",
+        "artifactId": "appcompat",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "cardview-v7",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.cardview",
+        "artifactId": "cardview",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "customtabs",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.browser",
+        "artifactId": "browser",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "design",
+        "version": "{oldMaterialVersion}"
+      },
+      "to": {
+        "groupId": "com.google.android.material",
+        "artifactId": "material",
+        "version": "{newMaterialVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "exifinterface",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.exifinterface",
+        "artifactId": "exifinterface",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "gridlayout-v7",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.gridlayout",
+        "artifactId": "gridlayout",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "leanback-v17",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.leanback",
+        "artifactId": "leanback",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "mediarouter-v7",
+        "version": "{oldMediarouterVersion}"
+      },
+      "to": {
+        "groupId": "androidx.mediarouter",
+        "artifactId": "mediarouter",
+        "version": "{newMediarouterVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "multidex",
+        "version": "1.0.3"
+      },
+      "to": {
+        "groupId": "androidx.multidex",
+        "artifactId": "multidex",
+        "version": "2.0.0"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "multidex-instrumentation",
+        "version": "1.0.3"
+      },
+      "to": {
+        "groupId": "androidx.multidex",
+        "artifactId": "multidex-instrumentation",
+        "version": "2.0.0"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "palette-v7",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.palette",
+        "artifactId": "palette",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "percent",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.percentlayout",
+        "artifactId": "percentlayout",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "preference-leanback-v17",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.leanback",
+        "artifactId": "leanback-preference",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "preference-v14",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.legacy",
+        "artifactId": "legacy-preference-v14",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "preference-v7",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.preference",
+        "artifactId": "preference",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "recommendation",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.recommendation",
+        "artifactId": "recommendation",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "recyclerview-v7",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.recyclerview",
+        "artifactId": "recyclerview",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-annotations",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.annotation",
+        "artifactId": "annotation",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-compat",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.core",
+        "artifactId": "core",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-content",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.contentpager",
+        "artifactId": "contentpager",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-core-ui",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.legacy",
+        "artifactId": "legacy-support-core-ui",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-core-utils",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.legacy",
+        "artifactId": "legacy-support-core-utils",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-dynamic-animation",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.dynamicanimation",
+        "artifactId": "dynamicanimation",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-emoji",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.emoji",
+        "artifactId": "emoji",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-emoji-appcompat",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.emoji",
+        "artifactId": "emoji-appcompat",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-emoji-bundled",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.emoji",
+        "artifactId": "emoji-bundled",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-fragment",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.fragment",
+        "artifactId": "fragment",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-media-compat",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.media",
+        "artifactId": "media",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-tv-provider",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.tvprovider",
+        "artifactId": "tvprovider",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-v13",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.legacy",
+        "artifactId": "legacy-support-v13",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-v4",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.legacy",
+        "artifactId": "legacy-support-v4",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "support-vector-drawable",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.vectordrawable",
+        "artifactId": "vectordrawable",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "textclassifier",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.textclassifier",
+        "artifactId": "textclassifier",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "transition",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.transition",
+        "artifactId": "transition",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "wear",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.wear",
+        "artifactId": "wear",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "asynclayoutinflater",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.asynclayoutinflater",
+        "artifactId": "asynclayoutinflater",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "collections",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.collection",
+        "artifactId": "collection",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "coordinatorlayout",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.coordinatorlayout",
+        "artifactId": "coordinatorlayout",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "cursoradapter",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.cursoradapter",
+        "artifactId": "cursoradapter",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "customview",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.customview",
+        "artifactId": "customview",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "documentfile",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.documentfile",
+        "artifactId": "documentfile",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "drawerlayout",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.drawerlayout",
+        "artifactId": "drawerlayout",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "interpolator",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.interpolator",
+        "artifactId": "interpolator",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "loader",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.loader",
+        "artifactId": "loader",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "localbroadcastmanager",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.localbroadcastmanager",
+        "artifactId": "localbroadcastmanager",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "print",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.print",
+        "artifactId": "print",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "slidingpanelayout",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.slidingpanelayout",
+        "artifactId": "slidingpanelayout",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "swiperefreshlayout",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.swiperefreshlayout",
+        "artifactId": "swiperefreshlayout",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "viewpager",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.viewpager",
+        "artifactId": "viewpager",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.databinding",
+        "artifactId": "adapters",
+        "version": "undefined"
+      },
+      "to": {
+        "groupId": "androidx.databinding",
+        "artifactId": "databinding-adapters",
+        "version": "{newDataBindingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.databinding",
+        "artifactId": "baseLibrary",
+        "version": "undefined"
+      },
+      "to": {
+        "groupId": "androidx.databinding",
+        "artifactId": "databinding-common",
+        "version": "{newDataBindingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.databinding",
+        "artifactId": "compiler",
+        "version": "undefined"
+      },
+      "to": {
+        "groupId": "androidx.databinding",
+        "artifactId": "databinding-compiler",
+        "version": "{newDataBindingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.databinding",
+        "artifactId": "compilerCommon",
+        "version": "undefined"
+      },
+      "to": {
+        "groupId": "androidx.databinding",
+        "artifactId": "databinding-compiler-common",
+        "version": "{newDataBindingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.databinding",
+        "artifactId": "library",
+        "version": "undefined"
+      },
+      "to": {
+        "groupId": "androidx.databinding",
+        "artifactId": "databinding-runtime",
+        "version": "{newDataBindingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "versionedparcelable",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.versionedparcelable",
+        "artifactId": "versionedparcelable",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.work",
+        "artifactId": "work-runtime",
+        "version": "{oldWorkManagerVersion}"
+      },
+      "to": {
+        "groupId": "androidx.work",
+        "artifactId": "work-runtime",
+        "version": "{newWorkManagerVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.work",
+        "artifactId": "work-runtime-ktx",
+        "version": "{oldWorkManagerVersion}"
+      },
+      "to": {
+        "groupId": "androidx.work",
+        "artifactId": "work-runtime-ktx",
+        "version": "{newWorkManagerVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.work",
+        "artifactId": "work-rxjava2",
+        "version": "{oldWorkManagerVersion}"
+      },
+      "to": {
+        "groupId": "androidx.work",
+        "artifactId": "work-rxjava2",
+        "version": "{newWorkManagerVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.work",
+        "artifactId": "work-testing",
+        "version": "{oldWorkManagerVersion}"
+      },
+      "to": {
+        "groupId": "androidx.work",
+        "artifactId": "work-testing",
+        "version": "{newWorkManagerVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "common",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-common",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "common-ktx",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-common-ktx",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "fragment",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-fragment",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "fragment-ktx",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-fragment-ktx",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "runtime",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-runtime",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "runtime-ktx",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-runtime-ktx",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "ui",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-ui",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.navigation",
+        "artifactId": "ui-ktx",
+        "version": "{oldNavigationVersion}"
+      },
+      "to": {
+        "groupId": "androidx.navigation",
+        "artifactId": "navigation-ui-ktx",
+        "version": "{newNavigationVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.core",
+        "artifactId": "common",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.arch.core",
+        "artifactId": "core-common",
+        "version": "{newArchCoreVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.core",
+        "artifactId": "core",
+        "version": "1.0.0-alpha3"
+      },
+      "to": {
+        "groupId": "androidx.arch.core",
+        "artifactId": "core",
+        "version": "{newArchCoreVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.core",
+        "artifactId": "runtime",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.arch.core",
+        "artifactId": "core-runtime",
+        "version": "{newArchCoreVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "common",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-common",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "common-java8",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-common-java8",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "compiler",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-compiler",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "extensions",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-extensions",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "reactivestreams",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-reactivestreams",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "runtime",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-runtime",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "viewmodel",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-viewmodel",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "livedata",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-livedata",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.lifecycle",
+        "artifactId": "livedata-core",
+        "version": "1.1.1"
+      },
+      "to": {
+        "groupId": "androidx.lifecycle",
+        "artifactId": "lifecycle-livedata-core",
+        "version": "{newLifecycleVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.paging",
+        "artifactId": "common",
+        "version": "1.0.0"
+      },
+      "to": {
+        "groupId": "androidx.paging",
+        "artifactId": "paging-common",
+        "version": "{newPagingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.paging",
+        "artifactId": "runtime",
+        "version": "1.0.0"
+      },
+      "to": {
+        "groupId": "androidx.paging",
+        "artifactId": "paging-runtime",
+        "version": "{newPagingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.paging",
+        "artifactId": "rxjava2",
+        "version": "1.0.0-alpha1"
+      },
+      "to": {
+        "groupId": "androidx.paging",
+        "artifactId": "paging-rxjava2",
+        "version": "{newPagingVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence",
+        "artifactId": "db",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.sqlite",
+        "artifactId": "sqlite",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence",
+        "artifactId": "db-framework",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.sqlite",
+        "artifactId": "sqlite-framework",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "common",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-common",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "compiler",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-compiler",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "migration",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-migration",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "runtime",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-runtime",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "rxjava2",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-rxjava2",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "testing",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-testing",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "android.arch.persistence.room",
+        "artifactId": "guava",
+        "version": "{oldRoomVersion}"
+      },
+      "to": {
+        "groupId": "androidx.room",
+        "artifactId": "room-guava",
+        "version": "{newRoomVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.constraint",
+        "artifactId": "constraint-layout",
+        "version": "1.1.0"
+      },
+      "to": {
+        "groupId": "androidx.constraintlayout",
+        "artifactId": "constraintlayout",
+        "version": "1.1.3"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.constraint",
+        "artifactId": "constraint-layout-solver",
+        "version": "1.1.0"
+      },
+      "to": {
+        "groupId": "androidx.constraintlayout",
+        "artifactId": "constraintlayout-solver",
+        "version": "1.1.3"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test",
+        "artifactId": "orchestrator",
+        "version": "1.0.2"
+      },
+      "to": {
+        "groupId": "androidx.test",
+        "artifactId": "orchestrator",
+        "version": "{newTestsVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test",
+        "artifactId": "rules",
+        "version": "1.0.2"
+      },
+      "to": {
+        "groupId": "androidx.test",
+        "artifactId": "rules",
+        "version": "{newTestsVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test",
+        "artifactId": "runner",
+        "version": "1.0.2"
+      },
+      "to": {
+        "groupId": "androidx.test",
+        "artifactId": "runner",
+        "version": "{newTestsVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test",
+        "artifactId": "monitor",
+        "version": "1.0.2"
+      },
+      "to": {
+        "groupId": "androidx.test",
+        "artifactId": "monitor",
+        "version": "{newTestsVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test.janktesthelper",
+        "artifactId": "janktesthelper",
+        "version": "1.0.1"
+      },
+      "to": {
+        "groupId": "androidx.test.jank",
+        "artifactId": "janktesthelper",
+        "version": "{newJankTestHelperVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test.services",
+        "artifactId": "test-services",
+        "version": "1.0.2"
+      },
+      "to": {
+        "groupId": "androidx.test",
+        "artifactId": "test-services",
+        "version": "{newTestsVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test.uiautomator",
+        "artifactId": "uiautomator",
+        "version": "2.1.3"
+      },
+      "to": {
+        "groupId": "androidx.test.uiautomator",
+        "artifactId": "uiautomator",
+        "version": "{newUiAutomatorVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support.test.uiautomator",
+        "artifactId": "uiautomator-v18",
+        "version": "2.1.3"
+      },
+      "to": {
+        "groupId": "androidx.test.uiautomator",
+        "artifactId": "uiautomator",
+        "version": "{newUiAutomatorVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "car",
+        "version": "{oldCarVersion}"
+      },
+      "to": {
+        "groupId": "androidx.car",
+        "artifactId": "car",
+        "version": "{newCarVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "slices-core",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.slice",
+        "artifactId": "slice-core",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "slices-builders",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.slice",
+        "artifactId": "slice-builders",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "slices-view",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.slice",
+        "artifactId": "slice-view",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "heifwriter",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.heifwriter",
+        "artifactId": "heifwriter",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "recyclerview-selection",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.recyclerview",
+        "artifactId": "recyclerview-selection",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "webkit",
+        "version": "{oldSlVersion}"
+      },
+      "to": {
+        "groupId": "androidx.webkit",
+        "artifactId": "webkit",
+        "version": "{newSlVersion}"
+      }
+    },
+    {
+      "from": {
+        "groupId": "com.android.support",
+        "artifactId": "biometric",
+        "version": "{oldBiometricVersion}"
+      },
+      "to": {
+        "groupId": "androidx.biometric",
+        "artifactId": "biometric",
+        "version": "{newBiometricVersion}"
+      }
+    }
+  ],
+  "versions": {
+    "latestReleased": {
+      "oldSlVersion": "28.0.0",
+      "oldMaterialVersion": "28.0.0",
+      "oldRoomVersion": "1.1.0",
+      "oldCarVersion": "28.0.0-alpha5",
+      "oldMediarouterVersion": "28.0.0-alpha5",
+      "oldMedia2Version": "28.0.0-alpha03",
+      "oldExoplayerVersion": "28.0.0-alpha01",
+      "oldBiometricVersion": "28.0.0-alpha03",
+      "oldNavigationVersion": "1.0.0",
+      "oldWorkManagerVersion": "1.0.0",
+      "newSlVersion": "1.0.0",
+      "newMaterialVersion": "1.0.0",
+      "newArchCoreVersion": "2.0.0",
+      "newLifecycleVersion": "2.0.0",
+      "newPagingVersion": "2.0.0",
+      "newRoomVersion": "2.0.0",
+      "newEspressoVersion": "3.1.0-alpha3",
+      "newTestsVersion": "1.1.0-alpha3",
+      "newJankTestHelperVersion": "1.0.1-alpha3",
+      "newUiAutomatorVersion": "2.2.0-alpha3",
+      "newCarVersion": "1.0.0-alpha5",
+      "newMediarouterVersion": "1.0.0-alpha5",
+      "newMedia2Version": "1.0.0-alpha03",
+      "newExoplayerVersion": "1.0.0-alpha01",
+      "newBiometricVersion": "1.0.0-alpha03",
+      "newDataBindingVersion": "undefined",
+      "newNavigationVersion": "2.0.0",
+      "newWorkManagerVersion": "2.0.0"
+    }
+  },
+  "map": {
+    "types": {
+      "android/arch/core/executor/AppToolkitTaskExecutor": "androidx/arch/core/executor/AppToolkitTaskExecutor",
+      "android/arch/core/executor/ArchTaskExecutor": "androidx/arch/core/executor/ArchTaskExecutor",
+      "android/arch/core/executor/DefaultTaskExecutor": "androidx/arch/core/executor/DefaultTaskExecutor",
+      "android/arch/core/executor/JunitTaskExecutorRule": "androidx/arch/core/executor/JunitTaskExecutorRule",
+      "android/arch/core/executor/TaskExecutor": "androidx/arch/core/executor/TaskExecutor",
+      "android/arch/core/executor/TaskExecutorWithFakeMainThread": "androidx/arch/core/executor/TaskExecutorWithFakeMainThread",
+      "android/arch/core/executor/testing/CountingTaskExecutorRule": "androidx/arch/core/executor/testing/CountingTaskExecutorRule",
+      "android/arch/core/executor/testing/InstantTaskExecutorRule": "androidx/arch/core/executor/testing/InstantTaskExecutorRule",
+      "android/arch/core/internal/FastSafeIterableMap": "androidx/arch/core/internal/FastSafeIterableMap",
+      "android/arch/core/internal/SafeIterableMap": "androidx/arch/core/internal/SafeIterableMap",
+      "android/arch/core/util/Function": "androidx/arch/core/util/Function",
+      "android/arch/lifecycle/AndroidViewModel": "androidx/lifecycle/AndroidViewModel",
+      "android/arch/lifecycle/ClassesInfoCache": "androidx/lifecycle/ClassesInfoCache",
+      "android/arch/lifecycle/CompositeGeneratedAdaptersObserver": "androidx/lifecycle/CompositeGeneratedAdaptersObserver",
+      "android/arch/lifecycle/ComputableLiveData": "androidx/lifecycle/ComputableLiveData",
+      "android/arch/lifecycle/DefaultLifecycleObserver": "androidx/lifecycle/DefaultLifecycleObserver",
+      "android/arch/lifecycle/Elements_extKt": "androidx/lifecycle/Elements_extKt",
+      "android/arch/lifecycle/EmptyActivityLifecycleCallbacks": "androidx/lifecycle/EmptyActivityLifecycleCallbacks",
+      "android/arch/lifecycle/ErrorMessages": "androidx/lifecycle/ErrorMessages",
+      "android/arch/lifecycle/FullLifecycleObserver": "androidx/lifecycle/FullLifecycleObserver",
+      "android/arch/lifecycle/FullLifecycleObserverAdapter": "androidx/lifecycle/FullLifecycleObserverAdapter",
+      "android/arch/lifecycle/GeneratedAdapter": "androidx/lifecycle/GeneratedAdapter",
+      "android/arch/lifecycle/GenericLifecycleObserver": "androidx/lifecycle/GenericLifecycleObserver",
+      "android/arch/lifecycle/HolderFragment": "androidx/lifecycle/HolderFragment",
+      "android/arch/lifecycle/Input_collectorKt": "androidx/lifecycle/Input_collectorKt",
+      "android/arch/lifecycle/Lifecycle": "androidx/lifecycle/Lifecycle",
+      "android/arch/lifecycle/LifecycleDispatcher": "androidx/lifecycle/LifecycleDispatcher",
+      "android/arch/lifecycle/LifecycleObserver": "androidx/lifecycle/LifecycleObserver",
+      "android/arch/lifecycle/LifecycleOwner": "androidx/lifecycle/LifecycleOwner",
+      "android/arch/lifecycle/LifecycleProcessor": "androidx/lifecycle/LifecycleProcessor",
+      "android/arch/lifecycle/LifecycleRegistry": "androidx/lifecycle/LifecycleRegistry",
+      "android/arch/lifecycle/LifecycleRegistryOwner": "androidx/lifecycle/LifecycleRegistryOwner",
+      "android/arch/lifecycle/LifecycleService": "androidx/lifecycle/LifecycleService",
+      "android/arch/lifecycle/Lifecycling": "androidx/lifecycle/Lifecycling",
+      "android/arch/lifecycle/LiveData": "androidx/lifecycle/LiveData",
+      "android/arch/lifecycle/LiveDataReactiveStreams": "androidx/lifecycle/LiveDataReactiveStreams",
+      "android/arch/lifecycle/MediatorLiveData": "androidx/lifecycle/MediatorLiveData",
+      "android/arch/lifecycle/MethodCallsLogger": "androidx/lifecycle/MethodCallsLogger",
+      "android/arch/lifecycle/MutableLiveData": "androidx/lifecycle/MutableLiveData",
+      "android/arch/lifecycle/Observer": "androidx/lifecycle/Observer",
+      "android/arch/lifecycle/ObserversCollector": "androidx/lifecycle/ObserversCollector",
+      "android/arch/lifecycle/OnLifecycleEvent": "androidx/lifecycle/OnLifecycleEvent",
+      "android/arch/lifecycle/ProcessLifecycleOwner": "androidx/lifecycle/ProcessLifecycleOwner",
+      "android/arch/lifecycle/ProcessLifecycleOwnerInitializer": "androidx/lifecycle/ProcessLifecycleOwnerInitializer",
+      "android/arch/lifecycle/ReflectiveGenericLifecycleObserver": "androidx/lifecycle/ReflectiveGenericLifecycleObserver",
+      "android/arch/lifecycle/ReportFragment": "androidx/lifecycle/ReportFragment",
+      "android/arch/lifecycle/ServiceLifecycleDispatcher": "androidx/lifecycle/ServiceLifecycleDispatcher",
+      "android/arch/lifecycle/SingleGeneratedAdapterObserver": "androidx/lifecycle/SingleGeneratedAdapterObserver",
+      "android/arch/lifecycle/TransformationKt": "androidx/lifecycle/TransformationKt",
+      "android/arch/lifecycle/Transformations": "androidx/lifecycle/Transformations",
+      "android/arch/lifecycle/Validator": "androidx/lifecycle/Validator",
+      "android/arch/lifecycle/ViewModel": "androidx/lifecycle/ViewModel",
+      "android/arch/lifecycle/ViewModelProvider": "androidx/lifecycle/ViewModelProvider",
+      "android/arch/lifecycle/ViewModelProviders": "androidx/lifecycle/ViewModelProviders",
+      "android/arch/lifecycle/ViewModelStore": "androidx/lifecycle/ViewModelStore",
+      "android/arch/lifecycle/ViewModelStoreOwner": "androidx/lifecycle/ViewModelStoreOwner",
+      "android/arch/lifecycle/ViewModelStores": "androidx/lifecycle/ViewModelStores",
+      "android/arch/lifecycle/WriterKt": "androidx/lifecycle/WriterKt",
+      "android/arch/lifecycle/model/AdapterClass": "androidx/lifecycle/model/AdapterClass",
+      "android/arch/lifecycle/model/AdapterClassKt": "androidx/lifecycle/model/AdapterClassKt",
+      "android/arch/lifecycle/model/EventMethod": "androidx/lifecycle/model/EventMethod",
+      "android/arch/lifecycle/model/EventMethodCall": "androidx/lifecycle/model/EventMethodCall",
+      "android/arch/lifecycle/model/InputModel": "androidx/lifecycle/model/InputModel",
+      "android/arch/lifecycle/model/LifecycleObserverInfo": "androidx/lifecycle/model/LifecycleObserverInfo",
+      "android/arch/paging/AsyncPagedListDiffer": "androidx/paging/AsyncPagedListDiffer",
+      "android/arch/paging/ContiguousDataSource": "androidx/paging/ContiguousDataSource",
+      "android/arch/paging/ContiguousPagedList": "androidx/paging/ContiguousPagedList",
+      "android/arch/paging/DataSource": "androidx/paging/DataSource",
+      "android/arch/paging/ItemKeyedDataSource": "androidx/paging/ItemKeyedDataSource",
+      "android/arch/paging/ListDataSource": "androidx/paging/ListDataSource",
+      "android/arch/paging/LivePagedListBuilder": "androidx/paging/LivePagedListBuilder",
+      "android/arch/paging/LivePagedListProvider": "androidx/paging/LivePagedListProvider",
+      "android/arch/paging/PageKeyedDataSource": "androidx/paging/PageKeyedDataSource",
+      "android/arch/paging/PageResult": "androidx/paging/PageResult",
+      "android/arch/paging/PagedList": "androidx/paging/PagedList",
+      "android/arch/paging/PagedListAdapter": "androidx/paging/PagedListAdapter",
+      "android/arch/paging/PagedStorage": "androidx/paging/PagedStorage",
+      "android/arch/paging/PagedStorageDiffHelper": "androidx/paging/PagedStorageDiffHelper",
+      "android/arch/paging/PositionalDataSource": "androidx/paging/PositionalDataSource",
+      "android/arch/paging/RxPagedListBuilder": "androidx/paging/RxPagedListBuilder",
+      "android/arch/paging/SnapshotPagedList": "androidx/paging/SnapshotPagedList",
+      "android/arch/paging/TiledDataSource": "androidx/paging/TiledDataSource",
+      "android/arch/paging/TiledPagedList": "androidx/paging/TiledPagedList",
+      "android/arch/paging/WrapperItemKeyedDataSource": "androidx/paging/WrapperItemKeyedDataSource",
+      "android/arch/paging/WrapperPageKeyedDataSource": "androidx/paging/WrapperPageKeyedDataSource",
+      "android/arch/paging/WrapperPositionalDataSource": "androidx/paging/WrapperPositionalDataSource",
+      "android/arch/persistence/db/SimpleSQLiteQuery": "androidx/sqlite/db/SimpleSQLiteQuery",
+      "android/arch/persistence/db/SupportSQLiteDatabase": "androidx/sqlite/db/SupportSQLiteDatabase",
+      "android/arch/persistence/db/SupportSQLiteOpenHelper": "androidx/sqlite/db/SupportSQLiteOpenHelper",
+      "android/arch/persistence/db/SupportSQLiteProgram": "androidx/sqlite/db/SupportSQLiteProgram",
+      "android/arch/persistence/db/SupportSQLiteQuery": "androidx/sqlite/db/SupportSQLiteQuery",
+      "android/arch/persistence/db/SupportSQLiteQueryBuilder": "androidx/sqlite/db/SupportSQLiteQueryBuilder",
+      "android/arch/persistence/db/SupportSQLiteStatement": "androidx/sqlite/db/SupportSQLiteStatement",
+      "android/arch/persistence/db/framework/FrameworkSQLiteDatabase": "androidx/sqlite/db/framework/FrameworkSQLiteDatabase",
+      "android/arch/persistence/db/framework/FrameworkSQLiteOpenHelper": "androidx/sqlite/db/framework/FrameworkSQLiteOpenHelper",
+      "android/arch/persistence/db/framework/FrameworkSQLiteOpenHelperFactory": "androidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory",
+      "android/arch/persistence/db/framework/FrameworkSQLiteProgram": "androidx/sqlite/db/framework/FrameworkSQLiteProgram",
+      "android/arch/persistence/db/framework/FrameworkSQLiteStatement": "androidx/sqlite/db/framework/FrameworkSQLiteStatement",
+      "android/arch/persistence/room/ColumnInfo": "androidx/room/ColumnInfo",
+      "android/arch/persistence/room/Dao": "androidx/room/Dao",
+      "android/arch/persistence/room/Database": "androidx/room/Database",
+      "android/arch/persistence/room/DatabaseConfiguration": "androidx/room/DatabaseConfiguration",
+      "android/arch/persistence/room/Delete": "androidx/room/Delete",
+      "android/arch/persistence/room/Embedded": "androidx/room/Embedded",
+      "android/arch/persistence/room/EmptyResultSetException": "androidx/room/EmptyResultSetException",
+      "android/arch/persistence/room/Entity": "androidx/room/Entity",
+      "android/arch/persistence/room/EntityDeletionOrUpdateAdapter": "androidx/room/EntityDeletionOrUpdateAdapter",
+      "android/arch/persistence/room/EntityInsertionAdapter": "androidx/room/EntityInsertionAdapter",
+      "android/arch/persistence/room/ForeignKey": "androidx/room/ForeignKey",
+      "android/arch/persistence/room/Ignore": "androidx/room/Ignore",
+      "android/arch/persistence/room/Index": "androidx/room/Index",
+      "android/arch/persistence/room/Insert": "androidx/room/Insert",
+      "android/arch/persistence/room/InvalidationTracker": "androidx/room/InvalidationTracker",
+      "android/arch/persistence/room/OnConflictStrategy": "androidx/room/OnConflictStrategy",
+      "android/arch/persistence/room/PrimaryKey": "androidx/room/PrimaryKey",
+      "android/arch/persistence/room/Query": "androidx/room/Query",
+      "android/arch/persistence/room/RawQuery": "androidx/room/RawQuery",
+      "android/arch/persistence/room/Relation": "androidx/room/Relation",
+      "android/arch/persistence/room/Room": "androidx/room/Room",
+      "android/arch/persistence/room/RoomDatabase": "androidx/room/RoomDatabase",
+      "android/arch/persistence/room/RoomMasterTable": "androidx/room/RoomMasterTable",
+      "android/arch/persistence/room/RoomOpenHelper": "androidx/room/RoomOpenHelper",
+      "android/arch/persistence/room/RoomProcessor": "androidx/room/RoomProcessor",
+      "android/arch/persistence/room/RoomSQLiteQuery": "androidx/room/RoomSQLiteQuery",
+      "android/arch/persistence/room/RoomWarnings": "androidx/room/RoomWarnings",
+      "android/arch/persistence/room/RxRoom": "androidx/room/RxRoom",
+      "android/arch/persistence/room/SharedSQLiteStatement": "androidx/room/SharedSQLiteStatement",
+      "android/arch/persistence/room/SkipQueryVerification": "androidx/room/SkipQueryVerification",
+      "android/arch/persistence/room/Transaction": "androidx/room/Transaction",
+      "android/arch/persistence/room/TypeConverter": "androidx/room/TypeConverter",
+      "android/arch/persistence/room/TypeConverters": "androidx/room/TypeConverters",
+      "android/arch/persistence/room/Update": "androidx/room/Update",
+      "android/arch/persistence/room/ext/AndroidTypeNames": "androidx/room/ext/AndroidTypeNames",
+      "android/arch/persistence/room/ext/ArchTypeNames": "androidx/room/ext/ArchTypeNames",
+      "android/arch/persistence/room/ext/CommonTypeNames": "androidx/room/ext/CommonTypeNames",
+      "android/arch/persistence/room/ext/Element_extKt": "androidx/room/ext/Element_extKt",
+      "android/arch/persistence/room/ext/GuavaBaseTypeNames": "androidx/room/ext/GuavaBaseTypeNames",
+      "android/arch/persistence/room/ext/GuavaUtilConcurrentTypeNames": "androidx/room/ext/GuavaUtilConcurrentTypeNames",
+      "android/arch/persistence/room/ext/Javapoet_extKt": "androidx/room/ext/Javapoet_extKt",
+      "android/arch/persistence/room/ext/KotlinMetadataProcessor": "androidx/room/ext/KotlinMetadataProcessor",
+      "android/arch/persistence/room/ext/LifecyclesTypeNames": "androidx/room/ext/LifecyclesTypeNames",
+      "android/arch/persistence/room/ext/PagingTypeNames": "androidx/room/ext/PagingTypeNames",
+      "android/arch/persistence/room/ext/ReactiveStreamsTypeNames": "androidx/room/ext/ReactiveStreamsTypeNames",
+      "android/arch/persistence/room/ext/RoomGuavaTypeNames": "androidx/room/ext/RoomGuavaTypeNames",
+      "android/arch/persistence/room/ext/RoomRxJava2TypeNames": "androidx/room/ext/RoomRxJava2TypeNames",
+      "android/arch/persistence/room/ext/RoomTypeNames": "androidx/room/ext/RoomTypeNames",
+      "android/arch/persistence/room/ext/RxJava2TypeNames": "androidx/room/ext/RxJava2TypeNames",
+      "android/arch/persistence/room/ext/SupportDbTypeNames": "androidx/room/ext/SupportDbTypeNames",
+      "android/arch/persistence/room/guava/GuavaRoom": "androidx/room/guava/GuavaRoom",
+      "android/arch/persistence/room/log/RLog": "androidx/room/log/RLog",
+      "android/arch/persistence/room/migration/Migration": "androidx/room/migration/Migration",
+      "android/arch/persistence/room/migration/bundle/BundleUtil": "androidx/room/migration/bundle/BundleUtil",
+      "android/arch/persistence/room/migration/bundle/DatabaseBundle": "androidx/room/migration/bundle/DatabaseBundle",
+      "android/arch/persistence/room/migration/bundle/EntityBundle": "androidx/room/migration/bundle/EntityBundle",
+      "android/arch/persistence/room/migration/bundle/FieldBundle": "androidx/room/migration/bundle/FieldBundle",
+      "android/arch/persistence/room/migration/bundle/ForeignKeyBundle": "androidx/room/migration/bundle/ForeignKeyBundle",
+      "android/arch/persistence/room/migration/bundle/IndexBundle": "androidx/room/migration/bundle/IndexBundle",
+      "android/arch/persistence/room/migration/bundle/PrimaryKeyBundle": "androidx/room/migration/bundle/PrimaryKeyBundle",
+      "android/arch/persistence/room/migration/bundle/SchemaBundle": "androidx/room/migration/bundle/SchemaBundle",
+      "android/arch/persistence/room/migration/bundle/SchemaEquality": "androidx/room/migration/bundle/SchemaEquality",
+      "android/arch/persistence/room/migration/bundle/SchemaEqualityUtil": "androidx/room/migration/bundle/SchemaEqualityUtil",
+      "android/arch/persistence/room/paging/LimitOffsetDataSource": "androidx/room/paging/LimitOffsetDataSource",
+      "android/arch/persistence/room/parser/Collate": "androidx/room/parser/Collate",
+      "android/arch/persistence/room/parser/ParsedQuery": "androidx/room/parser/ParsedQuery",
+      "android/arch/persistence/room/parser/ParserErrors": "androidx/room/parser/ParserErrors",
+      "android/arch/persistence/room/parser/QueryType": "androidx/room/parser/QueryType",
+      "android/arch/persistence/room/parser/QueryVisitor": "androidx/room/parser/QueryVisitor",
+      "android/arch/persistence/room/parser/SQLTypeAffinity": "androidx/room/parser/SQLTypeAffinity",
+      "android/arch/persistence/room/parser/SQLiteBaseListener": "androidx/room/parser/SQLiteBaseListener",
+      "android/arch/persistence/room/parser/SQLiteBaseVisitor": "androidx/room/parser/SQLiteBaseVisitor",
+      "android/arch/persistence/room/parser/SQLiteLexer": "androidx/room/parser/SQLiteLexer",
+      "android/arch/persistence/room/parser/SQLiteListener": "androidx/room/parser/SQLiteListener",
+      "android/arch/persistence/room/parser/SQLiteParser": "androidx/room/parser/SQLiteParser",
+      "android/arch/persistence/room/parser/SQLiteVisitor": "androidx/room/parser/SQLiteVisitor",
+      "android/arch/persistence/room/parser/Section": "androidx/room/parser/Section",
+      "android/arch/persistence/room/parser/SectionType": "androidx/room/parser/SectionType",
+      "android/arch/persistence/room/parser/SqlParser": "androidx/room/parser/SqlParser",
+      "android/arch/persistence/room/parser/Table": "androidx/room/parser/Table",
+      "android/arch/persistence/room/preconditions/Checks": "androidx/room/preconditions/Checks",
+      "android/arch/persistence/room/processor/Context": "androidx/room/processor/Context",
+      "android/arch/persistence/room/processor/CustomConverterProcessor": "androidx/room/processor/CustomConverterProcessor",
+      "android/arch/persistence/room/processor/DaoProcessor": "androidx/room/processor/DaoProcessor",
+      "android/arch/persistence/room/processor/DatabaseProcessor": "androidx/room/processor/DatabaseProcessor",
+      "android/arch/persistence/room/processor/DeletionMethodProcessor": "androidx/room/processor/DeletionMethodProcessor",
+      "android/arch/persistence/room/processor/EntityProcessor": "androidx/room/processor/EntityProcessor",
+      "android/arch/persistence/room/processor/FieldProcessor": "androidx/room/processor/FieldProcessor",
+      "android/arch/persistence/room/processor/InsertionMethodProcessor": "androidx/room/processor/InsertionMethodProcessor",
+      "android/arch/persistence/room/processor/OnConflictProcessor": "androidx/room/processor/OnConflictProcessor",
+      "android/arch/persistence/room/processor/PojoMethodProcessor": "androidx/room/processor/PojoMethodProcessor",
+      "android/arch/persistence/room/processor/PojoProcessor": "androidx/room/processor/PojoProcessor",
+      "android/arch/persistence/room/processor/ProcessorErrors": "androidx/room/processor/ProcessorErrors",
+      "android/arch/persistence/room/processor/QueryMethodProcessor": "androidx/room/processor/QueryMethodProcessor",
+      "android/arch/persistence/room/processor/QueryParameterProcessor": "androidx/room/processor/QueryParameterProcessor",
+      "android/arch/persistence/room/processor/RawQueryMethodProcessor": "androidx/room/processor/RawQueryMethodProcessor",
+      "android/arch/persistence/room/processor/ShortcutMethodProcessor": "androidx/room/processor/ShortcutMethodProcessor",
+      "android/arch/persistence/room/processor/ShortcutParameterProcessor": "androidx/room/processor/ShortcutParameterProcessor",
+      "android/arch/persistence/room/processor/SuppressWarningProcessor": "androidx/room/processor/SuppressWarningProcessor",
+      "android/arch/persistence/room/processor/TransactionMethodProcessor": "androidx/room/processor/TransactionMethodProcessor",
+      "android/arch/persistence/room/processor/UpdateMethodProcessor": "androidx/room/processor/UpdateMethodProcessor",
+      "android/arch/persistence/room/processor/cache/Cache": "androidx/room/processor/cache/Cache",
+      "android/arch/persistence/room/solver/CodeGenScope": "androidx/room/solver/CodeGenScope",
+      "android/arch/persistence/room/solver/ObservableQueryResultBinderProvider": "androidx/room/solver/ObservableQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/QueryResultBinderProvider": "androidx/room/solver/QueryResultBinderProvider",
+      "android/arch/persistence/room/solver/TypeAdapterStore": "androidx/room/solver/TypeAdapterStore",
+      "android/arch/persistence/room/solver/binderprovider/CursorQueryResultBinderProvider": "androidx/room/solver/binderprovider/CursorQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/DataSourceFactoryQueryResultBinderProvider": "androidx/room/solver/binderprovider/DataSourceFactoryQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/DataSourceQueryResultBinderProvider": "androidx/room/solver/binderprovider/DataSourceQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/FlowableQueryResultBinderProvider": "androidx/room/solver/binderprovider/FlowableQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/GuavaListenableFutureQueryResultBinderProvider": "androidx/room/solver/binderprovider/GuavaListenableFutureQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/InstantQueryResultBinderProvider": "androidx/room/solver/binderprovider/InstantQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/LiveDataQueryResultBinderProvider": "androidx/room/solver/binderprovider/LiveDataQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/RxCallableQueryResultBinderProvider": "androidx/room/solver/binderprovider/RxCallableQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/RxMaybeQueryResultBinderProvider": "androidx/room/solver/binderprovider/RxMaybeQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/binderprovider/RxSingleQueryResultBinderProvider": "androidx/room/solver/binderprovider/RxSingleQueryResultBinderProvider",
+      "android/arch/persistence/room/solver/query/parameter/ArrayQueryParameterAdapter": "androidx/room/solver/query/parameter/ArrayQueryParameterAdapter",
+      "android/arch/persistence/room/solver/query/parameter/BasicQueryParameterAdapter": "androidx/room/solver/query/parameter/BasicQueryParameterAdapter",
+      "android/arch/persistence/room/solver/query/parameter/CollectionQueryParameterAdapter": "androidx/room/solver/query/parameter/CollectionQueryParameterAdapter",
+      "android/arch/persistence/room/solver/query/parameter/QueryParameterAdapter": "androidx/room/solver/query/parameter/QueryParameterAdapter",
+      "android/arch/persistence/room/solver/query/result/ArrayQueryResultAdapter": "androidx/room/solver/query/result/ArrayQueryResultAdapter",
+      "android/arch/persistence/room/solver/query/result/BaseObservableQueryResultBinder": "androidx/room/solver/query/result/BaseObservableQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/CursorQueryResultBinder": "androidx/room/solver/query/result/CursorQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/DataSourceFactoryQueryResultBinder": "androidx/room/solver/query/result/DataSourceFactoryQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/EntityRowAdapter": "androidx/room/solver/query/result/EntityRowAdapter",
+      "android/arch/persistence/room/solver/query/result/FlowableQueryResultBinder": "androidx/room/solver/query/result/FlowableQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/GuavaListenableFutureQueryResultBinder": "androidx/room/solver/query/result/GuavaListenableFutureQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/GuavaOptionalQueryResultAdapter": "androidx/room/solver/query/result/GuavaOptionalQueryResultAdapter",
+      "android/arch/persistence/room/solver/query/result/InstantQueryResultBinder": "androidx/room/solver/query/result/InstantQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/ListQueryResultAdapter": "androidx/room/solver/query/result/ListQueryResultAdapter",
+      "android/arch/persistence/room/solver/query/result/LiveDataQueryResultBinder": "androidx/room/solver/query/result/LiveDataQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/OptionalQueryResultAdapter": "androidx/room/solver/query/result/OptionalQueryResultAdapter",
+      "android/arch/persistence/room/solver/query/result/PojoRowAdapter": "androidx/room/solver/query/result/PojoRowAdapter",
+      "android/arch/persistence/room/solver/query/result/PositionalDataSourceQueryResultBinder": "androidx/room/solver/query/result/PositionalDataSourceQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/QueryResultAdapter": "androidx/room/solver/query/result/QueryResultAdapter",
+      "android/arch/persistence/room/solver/query/result/QueryResultBinder": "androidx/room/solver/query/result/QueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/RowAdapter": "androidx/room/solver/query/result/RowAdapter",
+      "android/arch/persistence/room/solver/query/result/RxCallableQueryResultBinder": "androidx/room/solver/query/result/RxCallableQueryResultBinder",
+      "android/arch/persistence/room/solver/query/result/SingleColumnRowAdapter": "androidx/room/solver/query/result/SingleColumnRowAdapter",
+      "android/arch/persistence/room/solver/query/result/SingleEntityQueryResultAdapter": "androidx/room/solver/query/result/SingleEntityQueryResultAdapter",
+      "android/arch/persistence/room/solver/query/result/TransactionWrapper": "androidx/room/solver/query/result/TransactionWrapper",
+      "android/arch/persistence/room/solver/query/result/TransactionWrapperKt": "androidx/room/solver/query/result/TransactionWrapperKt",
+      "android/arch/persistence/room/solver/types/BoxedBooleanToBoxedIntConverter": "androidx/room/solver/types/BoxedBooleanToBoxedIntConverter",
+      "android/arch/persistence/room/solver/types/BoxedPrimitiveColumnTypeAdapter": "androidx/room/solver/types/BoxedPrimitiveColumnTypeAdapter",
+      "android/arch/persistence/room/solver/types/ByteArrayColumnTypeAdapter": "androidx/room/solver/types/ByteArrayColumnTypeAdapter",
+      "android/arch/persistence/room/solver/types/ColumnTypeAdapter": "androidx/room/solver/types/ColumnTypeAdapter",
+      "android/arch/persistence/room/solver/types/CompositeAdapter": "androidx/room/solver/types/CompositeAdapter",
+      "android/arch/persistence/room/solver/types/CompositeTypeConverter": "androidx/room/solver/types/CompositeTypeConverter",
+      "android/arch/persistence/room/solver/types/CursorValueReader": "androidx/room/solver/types/CursorValueReader",
+      "android/arch/persistence/room/solver/types/CustomTypeConverterWrapper": "androidx/room/solver/types/CustomTypeConverterWrapper",
+      "android/arch/persistence/room/solver/types/NoOpConverter": "androidx/room/solver/types/NoOpConverter",
+      "android/arch/persistence/room/solver/types/PrimitiveBooleanToIntConverter": "androidx/room/solver/types/PrimitiveBooleanToIntConverter",
+      "android/arch/persistence/room/solver/types/PrimitiveColumnTypeAdapter": "androidx/room/solver/types/PrimitiveColumnTypeAdapter",
+      "android/arch/persistence/room/solver/types/StatementValueBinder": "androidx/room/solver/types/StatementValueBinder",
+      "android/arch/persistence/room/solver/types/StringColumnTypeAdapter": "androidx/room/solver/types/StringColumnTypeAdapter",
+      "android/arch/persistence/room/solver/types/TypeConverter": "androidx/room/solver/types/TypeConverter",
+      "android/arch/persistence/room/testing/MigrationTestHelper": "androidx/room/testing/MigrationTestHelper",
+      "android/arch/persistence/room/util/StringUtil": "androidx/room/util/StringUtil",
+      "android/arch/persistence/room/util/TableInfo": "androidx/room/util/TableInfo",
+      "android/arch/persistence/room/verifier/ColumnInfo": "androidx/room/verifier/ColumnInfo",
+      "android/arch/persistence/room/verifier/DatabaseVerificaitonErrors": "androidx/room/verifier/DatabaseVerificaitonErrors",
+      "android/arch/persistence/room/verifier/DatabaseVerifier": "androidx/room/verifier/DatabaseVerifier",
+      "android/arch/persistence/room/verifier/QueryResultInfo": "androidx/room/verifier/QueryResultInfo",
+      "android/arch/persistence/room/vo/CallType": "androidx/room/vo/CallType",
+      "android/arch/persistence/room/vo/Constructor": "androidx/room/vo/Constructor",
+      "android/arch/persistence/room/vo/CustomTypeConverter": "androidx/room/vo/CustomTypeConverter",
+      "android/arch/persistence/room/vo/Dao": "androidx/room/vo/Dao",
+      "android/arch/persistence/room/vo/DaoMethod": "androidx/room/vo/DaoMethod",
+      "android/arch/persistence/room/vo/Database": "androidx/room/vo/Database",
+      "android/arch/persistence/room/vo/DeletionMethod": "androidx/room/vo/DeletionMethod",
+      "android/arch/persistence/room/vo/EmbeddedField": "androidx/room/vo/EmbeddedField",
+      "android/arch/persistence/room/vo/Entity": "androidx/room/vo/Entity",
+      "android/arch/persistence/room/vo/Field": "androidx/room/vo/Field",
+      "android/arch/persistence/room/vo/FieldGetter": "androidx/room/vo/FieldGetter",
+      "android/arch/persistence/room/vo/FieldSetter": "androidx/room/vo/FieldSetter",
+      "android/arch/persistence/room/vo/FieldWithIndex": "androidx/room/vo/FieldWithIndex",
+      "android/arch/persistence/room/vo/ForeignKey": "androidx/room/vo/ForeignKey",
+      "android/arch/persistence/room/vo/ForeignKeyAction": "androidx/room/vo/ForeignKeyAction",
+      "android/arch/persistence/room/vo/HasSchemaIdentity": "androidx/room/vo/HasSchemaIdentity",
+      "android/arch/persistence/room/vo/Index": "androidx/room/vo/Index",
+      "android/arch/persistence/room/vo/InsertionMethod": "androidx/room/vo/InsertionMethod",
+      "android/arch/persistence/room/vo/Pojo": "androidx/room/vo/Pojo",
+      "android/arch/persistence/room/vo/PojoMethod": "androidx/room/vo/PojoMethod",
+      "android/arch/persistence/room/vo/PrimaryKey": "androidx/room/vo/PrimaryKey",
+      "android/arch/persistence/room/vo/QueryMethod": "androidx/room/vo/QueryMethod",
+      "android/arch/persistence/room/vo/QueryParameter": "androidx/room/vo/QueryParameter",
+      "android/arch/persistence/room/vo/RawQueryMethod": "androidx/room/vo/RawQueryMethod",
+      "android/arch/persistence/room/vo/Relation": "androidx/room/vo/Relation",
+      "android/arch/persistence/room/vo/RelationCollector": "androidx/room/vo/RelationCollector",
+      "android/arch/persistence/room/vo/SchemaIdentityKey": "androidx/room/vo/SchemaIdentityKey",
+      "android/arch/persistence/room/vo/ShortcutMethod": "androidx/room/vo/ShortcutMethod",
+      "android/arch/persistence/room/vo/ShortcutQueryParameter": "androidx/room/vo/ShortcutQueryParameter",
+      "android/arch/persistence/room/vo/TransactionMethod": "androidx/room/vo/TransactionMethod",
+      "android/arch/persistence/room/vo/UpdateMethod": "androidx/room/vo/UpdateMethod",
+      "android/arch/persistence/room/vo/Warning": "androidx/room/vo/Warning",
+      "android/arch/persistence/room/writer/ClassWriter": "androidx/room/writer/ClassWriter",
+      "android/arch/persistence/room/writer/DaoWriter": "androidx/room/writer/DaoWriter",
+      "android/arch/persistence/room/writer/DatabaseWriter": "androidx/room/writer/DatabaseWriter",
+      "android/arch/persistence/room/writer/EntityCursorConverterWriter": "androidx/room/writer/EntityCursorConverterWriter",
+      "android/arch/persistence/room/writer/EntityDeleteComparator": "androidx/room/writer/EntityDeleteComparator",
+      "android/arch/persistence/room/writer/EntityDeletionAdapterWriter": "androidx/room/writer/EntityDeletionAdapterWriter",
+      "android/arch/persistence/room/writer/EntityInsertionAdapterWriter": "androidx/room/writer/EntityInsertionAdapterWriter",
+      "android/arch/persistence/room/writer/EntityUpdateAdapterWriter": "androidx/room/writer/EntityUpdateAdapterWriter",
+      "android/arch/persistence/room/writer/FieldReadWriteWriter": "androidx/room/writer/FieldReadWriteWriter",
+      "android/arch/persistence/room/writer/PreparedStatementWriter": "androidx/room/writer/PreparedStatementWriter",
+      "android/arch/persistence/room/writer/QueryWriter": "androidx/room/writer/QueryWriter",
+      "android/arch/persistence/room/writer/RelationCollectorMethodWriter": "androidx/room/writer/RelationCollectorMethodWriter",
+      "android/arch/persistence/room/writer/SQLiteOpenHelperWriter": "androidx/room/writer/SQLiteOpenHelperWriter",
+      "android/arch/persistence/room/writer/TableInfoValidationWriter": "androidx/room/writer/TableInfoValidationWriter",
+      "android/databinding/BaseObservable": "androidx/databinding/BaseObservable",
+      "android/databinding/BaseObservableField": "androidx/databinding/BaseObservableField",
+      "android/databinding/Bindable": "androidx/databinding/Bindable",
+      "android/databinding/BindingAdapter": "androidx/databinding/BindingAdapter",
+      "android/databinding/BindingBuildInfo": "androidx/databinding/BindingBuildInfo",
+      "android/databinding/BindingConversion": "androidx/databinding/BindingConversion",
+      "android/databinding/BindingMethod": "androidx/databinding/BindingMethod",
+      "android/databinding/BindingMethods": "androidx/databinding/BindingMethods",
+      "android/databinding/CallbackRegistry": "androidx/databinding/CallbackRegistry",
+      "android/databinding/DataBinderMapper": "androidx/databinding/DataBinderMapper",
+      "android/databinding/DataBinderMapperImpl": "androidx/databinding/DataBinderMapperImpl",
+      "android/databinding/DataBindingComponent": "androidx/databinding/DataBindingComponent",
+      "android/databinding/DataBindingUtil": "androidx/databinding/DataBindingUtil",
+      "android/databinding/InverseBindingAdapter": "androidx/databinding/InverseBindingAdapter",
+      "android/databinding/InverseBindingListener": "androidx/databinding/InverseBindingListener",
+      "android/databinding/InverseBindingMethod": "androidx/databinding/InverseBindingMethod",
+      "android/databinding/InverseBindingMethods": "androidx/databinding/InverseBindingMethods",
+      "android/databinding/InverseMethod": "androidx/databinding/InverseMethod",
+      "android/databinding/ListChangeRegistry": "androidx/databinding/ListChangeRegistry",
+      "android/databinding/MapChangeRegistry": "androidx/databinding/MapChangeRegistry",
+      "android/databinding/MergedDataBinderMapper": "androidx/databinding/MergedDataBinderMapper",
+      "android/databinding/Observable": "androidx/databinding/Observable",
+      "android/databinding/ObservableArrayList": "androidx/databinding/ObservableArrayList",
+      "android/databinding/ObservableArrayMap": "androidx/databinding/ObservableArrayMap",
+      "android/databinding/ObservableBoolean": "androidx/databinding/ObservableBoolean",
+      "android/databinding/ObservableByte": "androidx/databinding/ObservableByte",
+      "android/databinding/ObservableChar": "androidx/databinding/ObservableChar",
+      "android/databinding/ObservableDouble": "androidx/databinding/ObservableDouble",
+      "android/databinding/ObservableField": "androidx/databinding/ObservableField",
+      "android/databinding/ObservableFloat": "androidx/databinding/ObservableFloat",
+      "android/databinding/ObservableInt": "androidx/databinding/ObservableInt",
+      "android/databinding/ObservableList": "androidx/databinding/ObservableList",
+      "android/databinding/ObservableLong": "androidx/databinding/ObservableLong",
+      "android/databinding/ObservableMap": "androidx/databinding/ObservableMap",
+      "android/databinding/ObservableParcelable": "androidx/databinding/ObservableParcelable",
+      "android/databinding/ObservableShort": "androidx/databinding/ObservableShort",
+      "android/databinding/OnRebindCallback": "androidx/databinding/OnRebindCallback",
+      "android/databinding/PropertyChangeRegistry": "androidx/databinding/PropertyChangeRegistry",
+      "android/databinding/Untaggable": "androidx/databinding/Untaggable",
+      "android/databinding/ViewDataBinding": "androidx/databinding/ViewDataBinding",
+      "android/databinding/ViewStubProxy": "androidx/databinding/ViewStubProxy",
+      "android/databinding/adapters/AbsListViewBindingAdapter": "androidx/databinding/adapters/AbsListViewBindingAdapter",
+      "android/databinding/adapters/AbsSeekBarBindingAdapter": "androidx/databinding/adapters/AbsSeekBarBindingAdapter",
+      "android/databinding/adapters/AbsSpinnerBindingAdapter": "androidx/databinding/adapters/AbsSpinnerBindingAdapter",
+      "android/databinding/adapters/ActionMenuViewBindingAdapter": "androidx/databinding/adapters/ActionMenuViewBindingAdapter",
+      "android/databinding/adapters/AdapterViewBindingAdapter": "androidx/databinding/adapters/AdapterViewBindingAdapter",
+      "android/databinding/adapters/AutoCompleteTextViewBindingAdapter": "androidx/databinding/adapters/AutoCompleteTextViewBindingAdapter",
+      "android/databinding/adapters/CalendarViewBindingAdapter": "androidx/databinding/adapters/CalendarViewBindingAdapter",
+      "android/databinding/adapters/CardViewBindingAdapter": "androidx/databinding/adapters/CardViewBindingAdapter",
+      "android/databinding/adapters/CheckedTextViewBindingAdapter": "androidx/databinding/adapters/CheckedTextViewBindingAdapter",
+      "android/databinding/adapters/ChronometerBindingAdapter": "androidx/databinding/adapters/ChronometerBindingAdapter",
+      "android/databinding/adapters/CompoundButtonBindingAdapter": "androidx/databinding/adapters/CompoundButtonBindingAdapter",
+      "android/databinding/adapters/Converters": "androidx/databinding/adapters/Converters",
+      "android/databinding/adapters/DatePickerBindingAdapter": "androidx/databinding/adapters/DatePickerBindingAdapter",
+      "android/databinding/adapters/ExpandableListViewBindingAdapter": "androidx/databinding/adapters/ExpandableListViewBindingAdapter",
+      "android/databinding/adapters/FrameLayoutBindingAdapter": "androidx/databinding/adapters/FrameLayoutBindingAdapter",
+      "android/databinding/adapters/ImageViewBindingAdapter": "androidx/databinding/adapters/ImageViewBindingAdapter",
+      "android/databinding/adapters/LinearLayoutBindingAdapter": "androidx/databinding/adapters/LinearLayoutBindingAdapter",
+      "android/databinding/adapters/ListenerUtil": "androidx/databinding/adapters/ListenerUtil",
+      "android/databinding/adapters/NumberPickerBindingAdapter": "androidx/databinding/adapters/NumberPickerBindingAdapter",
+      "android/databinding/adapters/ObservableListAdapter": "androidx/databinding/adapters/ObservableListAdapter",
+      "android/databinding/adapters/ProgressBarBindingAdapter": "androidx/databinding/adapters/ProgressBarBindingAdapter",
+      "android/databinding/adapters/RadioGroupBindingAdapter": "androidx/databinding/adapters/RadioGroupBindingAdapter",
+      "android/databinding/adapters/RatingBarBindingAdapter": "androidx/databinding/adapters/RatingBarBindingAdapter",
+      "android/databinding/adapters/SearchViewBindingAdapter": "androidx/databinding/adapters/SearchViewBindingAdapter",
+      "android/databinding/adapters/SeekBarBindingAdapter": "androidx/databinding/adapters/SeekBarBindingAdapter",
+      "android/databinding/adapters/SpinnerBindingAdapter": "androidx/databinding/adapters/SpinnerBindingAdapter",
+      "android/databinding/adapters/SwitchBindingAdapter": "androidx/databinding/adapters/SwitchBindingAdapter",
+      "android/databinding/adapters/SwitchCompatBindingAdapter": "androidx/databinding/adapters/SwitchCompatBindingAdapter",
+      "android/databinding/adapters/TabHostBindingAdapter": "androidx/databinding/adapters/TabHostBindingAdapter",
+      "android/databinding/adapters/TabWidgetBindingAdapter": "androidx/databinding/adapters/TabWidgetBindingAdapter",
+      "android/databinding/adapters/TableLayoutBindingAdapter": "androidx/databinding/adapters/TableLayoutBindingAdapter",
+      "android/databinding/adapters/TextViewBindingAdapter": "androidx/databinding/adapters/TextViewBindingAdapter",
+      "android/databinding/adapters/TimePickerBindingAdapter": "androidx/databinding/adapters/TimePickerBindingAdapter",
+      "android/databinding/adapters/ToolbarBindingAdapter": "androidx/databinding/adapters/ToolbarBindingAdapter",
+      "android/databinding/adapters/VideoViewBindingAdapter": "androidx/databinding/adapters/VideoViewBindingAdapter",
+      "android/databinding/adapters/ViewBindingAdapter": "androidx/databinding/adapters/ViewBindingAdapter",
+      "android/databinding/adapters/ViewGroupBindingAdapter": "androidx/databinding/adapters/ViewGroupBindingAdapter",
+      "android/databinding/adapters/ViewStubBindingAdapter": "androidx/databinding/adapters/ViewStubBindingAdapter",
+      "android/databinding/adapters/ZoomControlsBindingAdapter": "androidx/databinding/adapters/ZoomControlsBindingAdapter",
+      "android/support/animation/AnimationHandler": "androidx/dynamicanimation/animation/AnimationHandler",
+      "android/support/animation/DynamicAnimation": "androidx/dynamicanimation/animation/DynamicAnimation",
+      "android/support/animation/FlingAnimation": "androidx/dynamicanimation/animation/FlingAnimation",
+      "android/support/animation/FloatPropertyCompat": "androidx/dynamicanimation/animation/FloatPropertyCompat",
+      "android/support/animation/FloatValueHolder": "androidx/dynamicanimation/animation/FloatValueHolder",
+      "android/support/animation/Force": "androidx/dynamicanimation/animation/Force",
+      "android/support/animation/SpringAnimation": "androidx/dynamicanimation/animation/SpringAnimation",
+      "android/support/animation/SpringForce": "androidx/dynamicanimation/animation/SpringForce",
+      "android/support/annotation/AnimRes": "androidx/annotation/AnimRes",
+      "android/support/annotation/AnimatorRes": "androidx/annotation/AnimatorRes",
+      "android/support/annotation/AnyRes": "androidx/annotation/AnyRes",
+      "android/support/annotation/AnyThread": "androidx/annotation/AnyThread",
+      "android/support/annotation/ArrayRes": "androidx/annotation/ArrayRes",
+      "android/support/annotation/AttrRes": "androidx/annotation/AttrRes",
+      "android/support/annotation/BinderThread": "androidx/annotation/BinderThread",
+      "android/support/annotation/BoolRes": "androidx/annotation/BoolRes",
+      "android/support/annotation/CallSuper": "androidx/annotation/CallSuper",
+      "android/support/annotation/CheckResult": "androidx/annotation/CheckResult",
+      "android/support/annotation/ColorInt": "androidx/annotation/ColorInt",
+      "android/support/annotation/ColorLong": "androidx/annotation/ColorLong",
+      "android/support/annotation/ColorRes": "androidx/annotation/ColorRes",
+      "android/support/annotation/DimenRes": "androidx/annotation/DimenRes",
+      "android/support/annotation/Dimension": "androidx/annotation/Dimension",
+      "android/support/annotation/DrawableRes": "androidx/annotation/DrawableRes",
+      "android/support/annotation/FloatRange": "androidx/annotation/FloatRange",
+      "android/support/annotation/FontRes": "androidx/annotation/FontRes",
+      "android/support/annotation/FractionRes": "androidx/annotation/FractionRes",
+      "android/support/annotation/GuardedBy": "androidx/annotation/GuardedBy",
+      "android/support/annotation/HalfFloat": "androidx/annotation/HalfFloat",
+      "android/support/annotation/IdRes": "androidx/annotation/IdRes",
+      "android/support/annotation/IntDef": "androidx/annotation/IntDef",
+      "android/support/annotation/IntRange": "androidx/annotation/IntRange",
+      "android/support/annotation/IntegerRes": "androidx/annotation/IntegerRes",
+      "android/support/annotation/InterpolatorRes": "androidx/annotation/InterpolatorRes",
+      "android/support/annotation/Keep": "androidx/annotation/Keep",
+      "android/support/annotation/LayoutRes": "androidx/annotation/LayoutRes",
+      "android/support/annotation/LongDef": "androidx/annotation/LongDef",
+      "android/support/annotation/MainThread": "androidx/annotation/MainThread",
+      "android/support/annotation/MenuRes": "androidx/annotation/MenuRes",
+      "android/support/annotation/NavigationRes": "androidx/annotation/NavigationRes",
+      "android/support/annotation/NonNull": "androidx/annotation/NonNull",
+      "android/support/annotation/Nullable": "androidx/annotation/Nullable",
+      "android/support/annotation/PluralsRes": "androidx/annotation/PluralsRes",
+      "android/support/annotation/Px": "androidx/annotation/Px",
+      "android/support/annotation/RawRes": "androidx/annotation/RawRes",
+      "android/support/annotation/RequiresApi": "androidx/annotation/RequiresApi",
+      "android/support/annotation/RequiresFeature": "androidx/annotation/RequiresFeature",
+      "android/support/annotation/RequiresPermission": "androidx/annotation/RequiresPermission",
+      "android/support/annotation/RestrictTo": "androidx/annotation/RestrictTo",
+      "android/support/annotation/Size": "androidx/annotation/Size",
+      "android/support/annotation/StringDef": "androidx/annotation/StringDef",
+      "android/support/annotation/StringRes": "androidx/annotation/StringRes",
+      "android/support/annotation/StyleRes": "androidx/annotation/StyleRes",
+      "android/support/annotation/StyleableRes": "androidx/annotation/StyleableRes",
+      "android/support/annotation/TransitionRes": "androidx/annotation/TransitionRes",
+      "android/support/annotation/UiThread": "androidx/annotation/UiThread",
+      "android/support/annotation/VisibleForTesting": "androidx/annotation/VisibleForTesting",
+      "android/support/annotation/WorkerThread": "androidx/annotation/WorkerThread",
+      "android/support/annotation/XmlRes": "androidx/annotation/XmlRes",
+      "android/support/app/recommendation/ContentRecommendation": "androidx/recommendation/app/ContentRecommendation",
+      "android/support/app/recommendation/RecommendationExtender": "androidx/recommendation/app/RecommendationExtender",
+      #"android/support/compat/R": "androidx/core/R",
+      "android/support/constraint/Barrier": "androidx/constraintlayout/widget/Barrier",
+      "android/support/constraint/ConstraintHelper": "androidx/constraintlayout/widget/ConstraintHelper",
+      "android/support/constraint/ConstraintLayout": "androidx/constraintlayout/widget/ConstraintLayout",
+      "android/support/constraint/ConstraintSet": "androidx/constraintlayout/widget/ConstraintSet",
+      "android/support/constraint/Constraints": "androidx/constraintlayout/widget/Constraints",
+      "android/support/constraint/Group": "androidx/constraintlayout/widget/Group",
+      "android/support/constraint/Guideline": "androidx/constraintlayout/widget/Guideline",
+      "android/support/constraint/Placeholder": "androidx/constraintlayout/widget/Placeholder",
+      "android/support/constraint/R": "androidx/constraintlayout/widget/R",
+      "android/support/constraint/solver/ArrayLinkedVariables": "androidx/constraintlayout/solver/ArrayLinkedVariables",
+      "android/support/constraint/solver/ArrayRow": "androidx/constraintlayout/solver/ArrayRow",
+      "android/support/constraint/solver/Cache": "androidx/constraintlayout/solver/Cache",
+      "android/support/constraint/solver/GoalRow": "androidx/constraintlayout/solver/GoalRow",
+      "android/support/constraint/solver/LinearSystem": "androidx/constraintlayout/solver/LinearSystem",
+      "android/support/constraint/solver/Metrics": "androidx/constraintlayout/solver/Metrics",
+      "android/support/constraint/solver/Pools": "androidx/constraintlayout/solver/Pools",
+      "android/support/constraint/solver/SolverVariable": "androidx/constraintlayout/solver/SolverVariable",
+      "android/support/constraint/solver/widgets/Analyzer": "androidx/constraintlayout/solver/widgets/Analyzer",
+      "android/support/constraint/solver/widgets/Barrier": "androidx/constraintlayout/solver/widgets/Barrier",
+      "android/support/constraint/solver/widgets/Chain": "androidx/constraintlayout/solver/widgets/Chain",
+      "android/support/constraint/solver/widgets/ChainHead": "androidx/constraintlayout/solver/widgets/ChainHead",
+      "android/support/constraint/solver/widgets/ConstraintAnchor": "androidx/constraintlayout/solver/widgets/ConstraintAnchor",
+      "android/support/constraint/solver/widgets/ConstraintHorizontalLayout": "androidx/constraintlayout/solver/widgets/ConstraintHorizontalLayout",
+      "android/support/constraint/solver/widgets/ConstraintTableLayout": "androidx/constraintlayout/solver/widgets/ConstraintTableLayout",
+      "android/support/constraint/solver/widgets/ConstraintWidget": "androidx/constraintlayout/solver/widgets/ConstraintWidget",
+      "android/support/constraint/solver/widgets/ConstraintWidgetContainer": "androidx/constraintlayout/solver/widgets/ConstraintWidgetContainer",
+      "android/support/constraint/solver/widgets/ConstraintWidgetGroup": "androidx/constraintlayout/solver/widgets/ConstraintWidgetGroup",
+      "android/support/constraint/solver/widgets/Guideline": "androidx/constraintlayout/solver/widgets/Guideline",
+      "android/support/constraint/solver/widgets/Helper": "androidx/constraintlayout/solver/widgets/Helper",
+      "android/support/constraint/solver/widgets/Optimizer": "androidx/constraintlayout/solver/widgets/Optimizer",
+      "android/support/constraint/solver/widgets/Rectangle": "androidx/constraintlayout/solver/widgets/Rectangle",
+      "android/support/constraint/solver/widgets/ResolutionAnchor": "androidx/constraintlayout/solver/widgets/ResolutionAnchor",
+      "android/support/constraint/solver/widgets/ResolutionDimension": "androidx/constraintlayout/solver/widgets/ResolutionDimension",
+      "android/support/constraint/solver/widgets/ResolutionNode": "androidx/constraintlayout/solver/widgets/ResolutionNode",
+      "android/support/constraint/solver/widgets/Snapshot": "androidx/constraintlayout/solver/widgets/Snapshot",
+      "android/support/constraint/solver/widgets/WidgetContainer": "androidx/constraintlayout/solver/widgets/WidgetContainer",
+      "android/support/content/ContentPager": "androidx/contentpager/content/ContentPager",
+      "android/support/content/InMemoryCursor": "androidx/contentpager/content/InMemoryCursor",
+      "android/support/content/LoaderQueryRunner": "androidx/contentpager/content/LoaderQueryRunner",
+      "android/support/content/Query": "androidx/contentpager/content/Query",
+      #"android/support/coordinatorlayout/R": "androidx/coordinatorlayout/R",
+      "android/support/customtabs/CustomTabsCallback": "androidx/browser/customtabs/CustomTabsCallback",
+      "android/support/customtabs/CustomTabsClient": "androidx/browser/customtabs/CustomTabsClient",
+      "android/support/customtabs/CustomTabsIntent": "androidx/browser/customtabs/CustomTabsIntent",
+      "android/support/customtabs/CustomTabsService": "androidx/browser/customtabs/CustomTabsService",
+      "android/support/customtabs/CustomTabsServiceConnection": "androidx/browser/customtabs/CustomTabsServiceConnection",
+      "android/support/customtabs/CustomTabsSession": "androidx/browser/customtabs/CustomTabsSession",
+      "android/support/customtabs/CustomTabsSessionToken": "androidx/browser/customtabs/CustomTabsSessionToken",
+      "android/support/customtabs/ICustomTabsCallback": "android/support/customtabs/ICustomTabsCallback",
+      "android/support/customtabs/ICustomTabsService": "android/support/customtabs/ICustomTabsService",
+      "android/support/customtabs/IPostMessageService": "android/support/customtabs/IPostMessageService",
+      "android/support/customtabs/PostMessageService": "androidx/browser/customtabs/PostMessageService",
+      "android/support/customtabs/PostMessageServiceConnection": "androidx/browser/customtabs/PostMessageServiceConnection",
+      "android/support/customtabs/R": "androidx/browser/R",
+      "android/support/customtabs/TrustedWebUtils": "androidx/browser/customtabs/TrustedWebUtils",
+      "android/support/design/R": "com/google/android/material/R",
+      "android/support/design/animation/AnimationUtils": "com/google/android/material/animation/AnimationUtils",
+      "android/support/design/animation/AnimatorSetCompat": "com/google/android/material/animation/AnimatorSetCompat",
+      "android/support/design/animation/ArgbEvaluatorCompat": "com/google/android/material/animation/ArgbEvaluatorCompat",
+      "android/support/design/animation/ChildrenAlphaProperty": "com/google/android/material/animation/ChildrenAlphaProperty",
+      "android/support/design/animation/DrawableAlphaProperty": "com/google/android/material/animation/DrawableAlphaProperty",
+      "android/support/design/animation/ImageMatrixProperty": "com/google/android/material/animation/ImageMatrixProperty",
+      "android/support/design/animation/MatrixEvaluator": "com/google/android/material/animation/MatrixEvaluator",
+      "android/support/design/animation/MotionSpec": "com/google/android/material/animation/MotionSpec",
+      "android/support/design/animation/MotionTiming": "com/google/android/material/animation/MotionTiming",
+      "android/support/design/animation/Positioning": "com/google/android/material/animation/Positioning",
+      "android/support/design/behavior/HideBottomViewOnScrollBehavior": "com/google/android/material/behavior/HideBottomViewOnScrollBehavior",
+      "android/support/design/bottomappbar/BottomAppBar": "com/google/android/material/bottomappbar/BottomAppBar",
+      "android/support/design/bottomappbar/BottomAppBarTopEdgeTreatment": "com/google/android/material/bottomappbar/BottomAppBarTopEdgeTreatment",
+      "android/support/design/bottomnavigation/LabelVisibilityMode": "com/google/android/material/bottomnavigation/LabelVisibilityMode",
+      "android/support/design/button/MaterialButton": "com/google/android/material/button/MaterialButton",
+      "android/support/design/button/MaterialButtonBackgroundDrawable": "com/google/android/material/button/MaterialButtonBackgroundDrawable",
+      "android/support/design/button/MaterialButtonHelper": "com/google/android/material/button/MaterialButtonHelper",
+      "android/support/design/canvas/CanvasCompat": "com/google/android/material/canvas/CanvasCompat",
+      "android/support/design/card/MaterialCardView": "com/google/android/material/card/MaterialCardView",
+      "android/support/design/card/MaterialCardViewHelper": "com/google/android/material/card/MaterialCardViewHelper",
+      "android/support/design/chip/Chip": "com/google/android/material/chip/Chip",
+      "android/support/design/chip/ChipDrawable": "com/google/android/material/chip/ChipDrawable",
+      "android/support/design/chip/ChipGroup": "com/google/android/material/chip/ChipGroup",
+      "android/support/design/circularreveal/CircularRevealCompat": "com/google/android/material/circularreveal/CircularRevealCompat",
+      "android/support/design/circularreveal/CircularRevealFrameLayout": "com/google/android/material/circularreveal/CircularRevealFrameLayout",
+      "android/support/design/circularreveal/CircularRevealGridLayout": "com/google/android/material/circularreveal/CircularRevealGridLayout",
+      "android/support/design/circularreveal/CircularRevealHelper": "com/google/android/material/circularreveal/CircularRevealHelper",
+      "android/support/design/circularreveal/CircularRevealLinearLayout": "com/google/android/material/circularreveal/CircularRevealLinearLayout",
+      "android/support/design/circularreveal/CircularRevealRelativeLayout": "com/google/android/material/circularreveal/CircularRevealRelativeLayout",
+      "android/support/design/circularreveal/CircularRevealWidget": "com/google/android/material/circularreveal/CircularRevealWidget",
+      "android/support/design/circularreveal/cardview/CircularRevealCardView": "com/google/android/material/circularreveal/cardview/CircularRevealCardView",
+      "android/support/design/circularreveal/coordinatorlayout/CircularRevealCoordinatorLayout": "com/google/android/material/circularreveal/coordinatorlayout/CircularRevealCoordinatorLayout",
+      "android/support/design/drawable/DrawableUtils": "com/google/android/material/drawable/DrawableUtils",
+      "android/support/design/expandable/ExpandableTransformationWidget": "com/google/android/material/expandable/ExpandableTransformationWidget",
+      "android/support/design/expandable/ExpandableWidget": "com/google/android/material/expandable/ExpandableWidget",
+      "android/support/design/expandable/ExpandableWidgetHelper": "com/google/android/material/expandable/ExpandableWidgetHelper",
+      "android/support/design/internal/BaselineLayout": "com/google/android/material/internal/BaselineLayout",
+      "android/support/design/internal/BottomNavigationItemView": "com/google/android/material/bottomnavigation/BottomNavigationItemView",
+      "android/support/design/internal/BottomNavigationMenu": "com/google/android/material/bottomnavigation/BottomNavigationMenu",
+      "android/support/design/internal/BottomNavigationMenuView": "com/google/android/material/bottomnavigation/BottomNavigationMenuView",
+      "android/support/design/internal/BottomNavigationPresenter": "com/google/android/material/bottomnavigation/BottomNavigationPresenter",
+      "android/support/design/internal/Experimental": "com/google/android/material/internal/Experimental",
+      "android/support/design/internal/FlowLayout": "com/google/android/material/internal/FlowLayout",
+      "android/support/design/internal/ForegroundLinearLayout": "com/google/android/material/internal/ForegroundLinearLayout",
+      "android/support/design/internal/NavigationMenu": "com/google/android/material/internal/NavigationMenu",
+      "android/support/design/internal/NavigationMenuItemView": "com/google/android/material/internal/NavigationMenuItemView",
+      "android/support/design/internal/NavigationMenuPresenter": "com/google/android/material/internal/NavigationMenuPresenter",
+      "android/support/design/internal/NavigationMenuView": "com/google/android/material/internal/NavigationMenuView",
+      "android/support/design/internal/NavigationSubMenu": "com/google/android/material/internal/NavigationSubMenu",
+      "android/support/design/internal/ParcelableSparseArray": "com/google/android/material/internal/ParcelableSparseArray",
+      "android/support/design/internal/ScrimInsetsFrameLayout": "com/google/android/material/internal/ScrimInsetsFrameLayout",
+      "android/support/design/internal/TextScale": "com/google/android/material/internal/TextScale",
+      "android/support/design/internal/ThemeEnforcement": "com/google/android/material/internal/ThemeEnforcement",
+      "android/support/design/internal/ViewUtils": "com/google/android/material/internal/ViewUtils",
+      "android/support/design/resources/MaterialResources": "com/google/android/material/resources/MaterialResources",
+      "android/support/design/resources/TextAppearance": "com/google/android/material/resources/TextAppearance",
+      "android/support/design/resources/TextAppearanceConfig": "com/google/android/material/resources/TextAppearanceConfig",
+      "android/support/design/ripple/RippleUtils": "com/google/android/material/ripple/RippleUtils",
+      "android/support/design/shape/CornerTreatment": "com/google/android/material/shape/CornerTreatment",
+      "android/support/design/shape/CutCornerTreatment": "com/google/android/material/shape/CutCornerTreatment",
+      "android/support/design/shape/EdgeTreatment": "com/google/android/material/shape/EdgeTreatment",
+      "android/support/design/shape/InterpolateOnScrollPositionChangeHelper": "com/google/android/material/shape/InterpolateOnScrollPositionChangeHelper",
+      "android/support/design/shape/MaterialShapeDrawable": "com/google/android/material/shape/MaterialShapeDrawable",
+      "android/support/design/shape/RoundedCornerTreatment": "com/google/android/material/shape/RoundedCornerTreatment",
+      "android/support/design/shape/ShapePath": "com/google/android/material/shape/ShapePath",
+      "android/support/design/shape/ShapePathModel": "com/google/android/material/shape/ShapePathModel",
+      "android/support/design/shape/TriangleEdgeTreatment": "com/google/android/material/shape/TriangleEdgeTreatment",
+      "android/support/design/snackbar/ContentViewCallback": "com/google/android/material/snackbar/ContentViewCallback",
+      "android/support/design/stateful/ExtendableSavedState": "com/google/android/material/stateful/ExtendableSavedState",
+      "android/support/design/theme/MaterialComponentsViewInflater": "com/google/android/material/theme/MaterialComponentsViewInflater",
+      "android/support/design/transformation/ExpandableBehavior": "com/google/android/material/transformation/ExpandableBehavior",
+      "android/support/design/transformation/ExpandableTransformationBehavior": "com/google/android/material/transformation/ExpandableTransformationBehavior",
+      "android/support/design/transformation/FabTransformationBehavior": "com/google/android/material/transformation/FabTransformationBehavior",
+      "android/support/design/transformation/FabTransformationScrimBehavior": "com/google/android/material/transformation/FabTransformationScrimBehavior",
+      "android/support/design/transformation/FabTransformationSheetBehavior": "com/google/android/material/transformation/FabTransformationSheetBehavior",
+      "android/support/design/transformation/TransformationChildCard": "com/google/android/material/transformation/TransformationChildCard",
+      "android/support/design/transformation/TransformationChildLayout": "com/google/android/material/transformation/TransformationChildLayout",
+      "android/support/design/widget/AppBarLayout": "com/google/android/material/appbar/AppBarLayout",
+      "android/support/design/widget/BaseTransientBottomBar": "com/google/android/material/snackbar/BaseTransientBottomBar",
+      "android/support/design/widget/BottomNavigationView": "com/google/android/material/bottomnavigation/BottomNavigationView",
+      "android/support/design/widget/BottomSheetBehavior": "com/google/android/material/bottomsheet/BottomSheetBehavior",
+      "android/support/design/widget/BottomSheetDialog": "com/google/android/material/bottomsheet/BottomSheetDialog",
+      "android/support/design/widget/BottomSheetDialogFragment": "com/google/android/material/bottomsheet/BottomSheetDialogFragment",
+      "android/support/design/widget/CheckableImageButton": "com/google/android/material/internal/CheckableImageButton",
+      "android/support/design/widget/CircularBorderDrawable": "com/google/android/material/internal/CircularBorderDrawable",
+      "android/support/design/widget/CircularBorderDrawableLollipop": "com/google/android/material/internal/CircularBorderDrawableLollipop",
+      "android/support/design/widget/CollapsingTextHelper": "com/google/android/material/internal/CollapsingTextHelper",
+      "android/support/design/widget/CollapsingToolbarLayout": "com/google/android/material/appbar/CollapsingToolbarLayout",
+      "android/support/design/widget/CoordinatorLayout": "androidx/coordinatorlayout/widget/CoordinatorLayout",
+      "android/support/design/widget/CutoutDrawable": "com/google/android/material/textfield/CutoutDrawable",
+      "android/support/design/widget/DescendantOffsetUtils": "com/google/android/material/internal/DescendantOffsetUtils",
+      "android/support/design/widget/DrawableUtils": "com/google/android/material/internal/DrawableUtils",
+      "android/support/design/widget/FloatingActionButton": "com/google/android/material/floatingactionbutton/FloatingActionButton",
+      "android/support/design/widget/FloatingActionButtonImpl": "com/google/android/material/floatingactionbutton/FloatingActionButtonImpl",
+      "android/support/design/widget/FloatingActionButtonImplLollipop": "com/google/android/material/floatingactionbutton/FloatingActionButtonImplLollipop",
+      "android/support/design/widget/HeaderBehavior": "com/google/android/material/appbar/HeaderBehavior",
+      "android/support/design/widget/HeaderScrollingViewBehavior": "com/google/android/material/appbar/HeaderScrollingViewBehavior",
+      "android/support/design/widget/IndicatorViewController": "com/google/android/material/textfield/IndicatorViewController",
+      "android/support/design/widget/MathUtils": "com/google/android/material/math/MathUtils",
+      "android/support/design/widget/NavigationView": "com/google/android/material/navigation/NavigationView",
+      "android/support/design/widget/ShadowDrawableWrapper": "com/google/android/material/shadow/ShadowDrawableWrapper",
+      "android/support/design/widget/ShadowViewDelegate": "com/google/android/material/shadow/ShadowViewDelegate",
+      "android/support/design/widget/Snackbar": "com/google/android/material/snackbar/Snackbar",
+      "android/support/design/widget/SnackbarContentLayout": "com/google/android/material/snackbar/SnackbarContentLayout",
+      "android/support/design/widget/SnackbarManager": "com/google/android/material/snackbar/SnackbarManager",
+      "android/support/design/widget/StateListAnimator": "com/google/android/material/internal/StateListAnimator",
+      "android/support/design/widget/SwipeDismissBehavior": "com/google/android/material/behavior/SwipeDismissBehavior",
+      "android/support/design/widget/TabItem": "com/google/android/material/tabs/TabItem",
+      "android/support/design/widget/TabLayout": "com/google/android/material/tabs/TabLayout",
+      "android/support/design/widget/TextInputEditText": "com/google/android/material/textfield/TextInputEditText",
+      "android/support/design/widget/TextInputLayout": "com/google/android/material/textfield/TextInputLayout",
+      "android/support/design/widget/ViewOffsetBehavior": "com/google/android/material/appbar/ViewOffsetBehavior",
+      "android/support/design/widget/ViewOffsetHelper": "com/google/android/material/appbar/ViewOffsetHelper",
+      "android/support/design/widget/ViewUtilsLollipop": "com/google/android/material/appbar/ViewUtilsLollipop",
+      "android/support/design/widget/VisibilityAwareImageButton": "com/google/android/material/internal/VisibilityAwareImageButton",
+      "android/support/graphics/drawable/AndroidResources": "androidx/vectordrawable/graphics/drawable/AndroidResources",
+      "android/support/graphics/drawable/Animatable2Compat": "androidx/vectordrawable/graphics/drawable/Animatable2Compat",
+      "android/support/graphics/drawable/AnimatedVectorDrawableCompat": "androidx/vectordrawable/graphics/drawable/AnimatedVectorDrawableCompat",
+      "android/support/graphics/drawable/AnimationUtilsCompat": "androidx/vectordrawable/graphics/drawable/AnimationUtilsCompat",
+      "android/support/graphics/drawable/AnimatorInflaterCompat": "androidx/vectordrawable/graphics/drawable/AnimatorInflaterCompat",
+      "android/support/graphics/drawable/ArgbEvaluator": "androidx/vectordrawable/graphics/drawable/ArgbEvaluator",
+      "android/support/graphics/drawable/PathInterpolatorCompat": "androidx/vectordrawable/graphics/drawable/PathInterpolatorCompat",
+      "android/support/graphics/drawable/VectorDrawableCommon": "androidx/vectordrawable/graphics/drawable/VectorDrawableCommon",
+      "android/support/graphics/drawable/VectorDrawableCompat": "androidx/vectordrawable/graphics/drawable/VectorDrawableCompat",
+      "android/support/media/ExifInterface": "androidx/exifinterface/media/ExifInterface",
+      "android/support/media/tv/BasePreviewProgram": "androidx/tvprovider/media/tv/BasePreviewProgram",
+      "android/support/media/tv/BaseProgram": "androidx/tvprovider/media/tv/BaseProgram",
+      "android/support/media/tv/Channel": "androidx/tvprovider/media/tv/Channel",
+      "android/support/media/tv/ChannelLogoUtils": "androidx/tvprovider/media/tv/ChannelLogoUtils",
+      "android/support/media/tv/CollectionUtils": "androidx/tvprovider/media/tv/CollectionUtils",
+      "android/support/media/tv/PreviewChannel": "androidx/tvprovider/media/tv/PreviewChannel",
+      "android/support/media/tv/PreviewChannelHelper": "androidx/tvprovider/media/tv/PreviewChannelHelper",
+      "android/support/media/tv/PreviewProgram": "androidx/tvprovider/media/tv/PreviewProgram",
+      "android/support/media/tv/Program": "androidx/tvprovider/media/tv/Program",
+      "android/support/media/tv/TvContractCompat": "androidx/tvprovider/media/tv/TvContractCompat",
+      "android/support/media/tv/TvContractUtils": "androidx/tvprovider/media/tv/TvContractUtils",
+      "android/support/media/tv/WatchNextProgram": "androidx/tvprovider/media/tv/WatchNextProgram",
+      "android/support/media2/BaseRemoteMediaPlayerConnector": "android/support/media2/BaseRemoteMediaPlayerConnector",
+      "android/support/media2/DataSourceDesc2": "android/support/media2/DataSourceDesc2",
+      "android/support/media2/MediaPlayerConnector": "android/support/media2/MediaPlayerConnector",
+      "android/support/media2/MediaPlaylistAgent": "android/support/media2/MediaPlaylistAgent",
+      "android/support/media2/MediaSession2": "android/support/media2/MediaSession2",
+      #"android/support/mediacompat/R": "androidx/media/R",
+      "android/support/multidex/MultiDex": "androidx/multidex/MultiDex",
+      "android/support/multidex/MultiDexApplication": "androidx/multidex/MultiDexApplication",
+      "android/support/multidex/MultiDexExtractor": "androidx/multidex/MultiDexExtractor",
+      "android/support/multidex/ZipUtil": "androidx/multidex/ZipUtil",
+      "android/support/percent/PercentFrameLayout": "androidx/percentlayout/widget/PercentFrameLayout",
+      "android/support/percent/PercentLayoutHelper": "androidx/percentlayout/widget/PercentLayoutHelper",
+      "android/support/percent/PercentRelativeLayout": "androidx/percentlayout/widget/PercentRelativeLayout",
+      "android/support/percent/R": "androidx/percentlayout/R",
+      "android/support/text/emoji/EmojiCompat": "androidx/emoji/text/EmojiCompat",
+      "android/support/text/emoji/EmojiMetadata": "androidx/emoji/text/EmojiMetadata",
+      "android/support/text/emoji/EmojiProcessor": "androidx/emoji/text/EmojiProcessor",
+      "android/support/text/emoji/EmojiSpan": "androidx/emoji/text/EmojiSpan",
+      "android/support/text/emoji/FontRequestEmojiCompatConfig": "androidx/emoji/text/FontRequestEmojiCompatConfig",
+      "android/support/text/emoji/MetadataListReader": "androidx/emoji/text/MetadataListReader",
+      "android/support/text/emoji/MetadataRepo": "androidx/emoji/text/MetadataRepo",
+      "android/support/text/emoji/R": "androidx/emoji/R",
+      "android/support/text/emoji/TypefaceEmojiSpan": "androidx/emoji/text/TypefaceEmojiSpan",
+      "android/support/text/emoji/bundled/BundledEmojiCompatConfig": "androidx/emoji/bundled/BundledEmojiCompatConfig",
+      "android/support/text/emoji/widget/EditTextAttributeHelper": "androidx/emoji/widget/EditTextAttributeHelper",
+      "android/support/text/emoji/widget/EmojiAppCompatButton": "androidx/emoji/widget/EmojiAppCompatButton",
+      "android/support/text/emoji/widget/EmojiAppCompatEditText": "androidx/emoji/widget/EmojiAppCompatEditText",
+      "android/support/text/emoji/widget/EmojiAppCompatTextView": "androidx/emoji/widget/EmojiAppCompatTextView",
+      "android/support/text/emoji/widget/EmojiButton": "androidx/emoji/widget/EmojiButton",
+      "android/support/text/emoji/widget/EmojiEditText": "androidx/emoji/widget/EmojiEditText",
+      "android/support/text/emoji/widget/EmojiEditTextHelper": "androidx/emoji/widget/EmojiEditTextHelper",
+      "android/support/text/emoji/widget/EmojiEditableFactory": "androidx/emoji/widget/EmojiEditableFactory",
+      "android/support/text/emoji/widget/EmojiExtractEditText": "androidx/emoji/widget/EmojiExtractEditText",
+      "android/support/text/emoji/widget/EmojiExtractTextLayout": "androidx/emoji/widget/EmojiExtractTextLayout",
+      "android/support/text/emoji/widget/EmojiInputConnection": "androidx/emoji/widget/EmojiInputConnection",
+      "android/support/text/emoji/widget/EmojiInputFilter": "androidx/emoji/widget/EmojiInputFilter",
+      "android/support/text/emoji/widget/EmojiKeyListener": "androidx/emoji/widget/EmojiKeyListener",
+      "android/support/text/emoji/widget/EmojiTextView": "androidx/emoji/widget/EmojiTextView",
+      "android/support/text/emoji/widget/EmojiTextViewHelper": "androidx/emoji/widget/EmojiTextViewHelper",
+      "android/support/text/emoji/widget/EmojiTextWatcher": "androidx/emoji/widget/EmojiTextWatcher",
+      "android/support/text/emoji/widget/EmojiTransformationMethod": "androidx/emoji/widget/EmojiTransformationMethod",
+      "android/support/text/emoji/widget/ExtractButtonCompat": "androidx/emoji/widget/ExtractButtonCompat",
+      "android/support/text/emoji/widget/SpannableBuilder": "androidx/emoji/widget/SpannableBuilder",
+      "android/support/transition/AnimatorUtils": "androidx/transition/AnimatorUtils",
+      "android/support/transition/ArcMotion": "androidx/transition/ArcMotion",
+      "android/support/transition/AutoTransition": "androidx/transition/AutoTransition",
+      "android/support/transition/ChangeBounds": "androidx/transition/ChangeBounds",
+      "android/support/transition/ChangeClipBounds": "androidx/transition/ChangeClipBounds",
+      "android/support/transition/ChangeImageTransform": "androidx/transition/ChangeImageTransform",
+      "android/support/transition/ChangeScroll": "androidx/transition/ChangeScroll",
+      "android/support/transition/ChangeTransform": "androidx/transition/ChangeTransform",
+      "android/support/transition/CircularPropagation": "androidx/transition/CircularPropagation",
+      "android/support/transition/Explode": "androidx/transition/Explode",
+      "android/support/transition/Fade": "androidx/transition/Fade",
+      "android/support/transition/FloatArrayEvaluator": "androidx/transition/FloatArrayEvaluator",
+      "android/support/transition/FragmentTransitionSupport": "androidx/transition/FragmentTransitionSupport",
+      "android/support/transition/GhostViewApi14": "androidx/transition/GhostViewApi14",
+      "android/support/transition/GhostViewApi21": "androidx/transition/GhostViewApi21",
+      "android/support/transition/GhostViewImpl": "androidx/transition/GhostViewImpl",
+      "android/support/transition/GhostViewUtils": "androidx/transition/GhostViewUtils",
+      "android/support/transition/ImageViewUtils": "androidx/transition/ImageViewUtils",
+      "android/support/transition/MatrixUtils": "androidx/transition/MatrixUtils",
+      "android/support/transition/ObjectAnimatorUtils": "androidx/transition/ObjectAnimatorUtils",
+      "android/support/transition/PathMotion": "androidx/transition/PathMotion",
+      "android/support/transition/PathProperty": "androidx/transition/PathProperty",
+      "android/support/transition/PatternPathMotion": "androidx/transition/PatternPathMotion",
+      "android/support/transition/PropertyValuesHolderUtils": "androidx/transition/PropertyValuesHolderUtils",
+      "android/support/transition/R": "androidx/transition/R",
+      "android/support/transition/RectEvaluator": "androidx/transition/RectEvaluator",
+      "android/support/transition/Scene": "androidx/transition/Scene",
+      "android/support/transition/SidePropagation": "androidx/transition/SidePropagation",
+      "android/support/transition/Slide": "androidx/transition/Slide",
+      "android/support/transition/Styleable": "androidx/transition/Styleable",
+      "android/support/transition/Transition": "androidx/transition/Transition",
+      "android/support/transition/TransitionInflater": "androidx/transition/TransitionInflater",
+      "android/support/transition/TransitionListenerAdapter": "androidx/transition/TransitionListenerAdapter",
+      "android/support/transition/TransitionManager": "androidx/transition/TransitionManager",
+      "android/support/transition/TransitionPropagation": "androidx/transition/TransitionPropagation",
+      "android/support/transition/TransitionSet": "androidx/transition/TransitionSet",
+      "android/support/transition/TransitionUtils": "androidx/transition/TransitionUtils",
+      "android/support/transition/TransitionValues": "androidx/transition/TransitionValues",
+      "android/support/transition/TransitionValuesMaps": "androidx/transition/TransitionValuesMaps",
+      "android/support/transition/TranslationAnimationCreator": "androidx/transition/TranslationAnimationCreator",
+      "android/support/transition/ViewGroupOverlayApi14": "androidx/transition/ViewGroupOverlayApi14",
+      "android/support/transition/ViewGroupOverlayApi18": "androidx/transition/ViewGroupOverlayApi18",
+      "android/support/transition/ViewGroupOverlayImpl": "androidx/transition/ViewGroupOverlayImpl",
+      "android/support/transition/ViewGroupUtils": "androidx/transition/ViewGroupUtils",
+      "android/support/transition/ViewGroupUtilsApi14": "androidx/transition/ViewGroupUtilsApi14",
+      "android/support/transition/ViewGroupUtilsApi18": "androidx/transition/ViewGroupUtilsApi18",
+      "android/support/transition/ViewOverlayApi14": "androidx/transition/ViewOverlayApi14",
+      "android/support/transition/ViewOverlayApi18": "androidx/transition/ViewOverlayApi18",
+      "android/support/transition/ViewOverlayImpl": "androidx/transition/ViewOverlayImpl",
+      "android/support/transition/ViewUtils": "androidx/transition/ViewUtils",
+      "android/support/transition/ViewUtilsApi19": "androidx/transition/ViewUtilsApi19",
+      "android/support/transition/ViewUtilsApi21": "androidx/transition/ViewUtilsApi21",
+      "android/support/transition/ViewUtilsApi22": "androidx/transition/ViewUtilsApi22",
+      "android/support/transition/ViewUtilsBase": "androidx/transition/ViewUtilsBase",
+      "android/support/transition/Visibility": "androidx/transition/Visibility",
+      "android/support/transition/VisibilityPropagation": "androidx/transition/VisibilityPropagation",
+      "android/support/transition/WindowIdApi14": "androidx/transition/WindowIdApi14",
+      "android/support/transition/WindowIdApi18": "androidx/transition/WindowIdApi18",
+      "android/support/transition/WindowIdImpl": "androidx/transition/WindowIdImpl",
+      "android/support/v13/app/ActivityCompat": "androidx/legacy/app/ActivityCompat",
+      "android/support/v13/app/FragmentCompat": "androidx/legacy/app/FragmentCompat",
+      "android/support/v13/app/FragmentPagerAdapter": "androidx/legacy/app/FragmentPagerAdapter",
+      "android/support/v13/app/FragmentStatePagerAdapter": "androidx/legacy/app/FragmentStatePagerAdapter",
+      "android/support/v13/app/FragmentTabHost": "androidx/legacy/app/FragmentTabHost",
+      "android/support/v13/view/DragAndDropPermissionsCompat": "androidx/core/view/DragAndDropPermissionsCompat",
+      "android/support/v13/view/DragStartHelper": "androidx/core/view/DragStartHelper",
+      "android/support/v13/view/ViewCompat": "androidx/legacy/view/ViewCompat",
+      "android/support/v13/view/inputmethod/EditorInfoCompat": "androidx/core/view/inputmethod/EditorInfoCompat",
+      "android/support/v13/view/inputmethod/InputConnectionCompat": "androidx/core/view/inputmethod/InputConnectionCompat",
+      "android/support/v13/view/inputmethod/InputContentInfoCompat": "androidx/core/view/inputmethod/InputContentInfoCompat",
+      "android/support/v14/preference/EditTextPreferenceDialogFragment": "androidx/preference/EditTextPreferenceDialogFragment",
+      "android/support/v14/preference/ListPreferenceDialogFragment": "androidx/preference/ListPreferenceDialogFragment",
+      "android/support/v14/preference/MultiSelectListPreference": "androidx/preference/MultiSelectListPreference",
+      "android/support/v14/preference/MultiSelectListPreferenceDialogFragment": "androidx/preference/MultiSelectListPreferenceDialogFragment",
+      "android/support/v14/preference/PreferenceDialogFragment": "androidx/preference/PreferenceDialogFragment",
+      "android/support/v14/preference/PreferenceFragment": "androidx/preference/PreferenceFragment",
+      "android/support/v14/preference/SwitchPreference": "androidx/preference/SwitchPreference",
+      "android/support/v17/internal/widget/OutlineOnlyWithChildrenFrameLayout": "androidx/leanback/preference/internal/OutlineOnlyWithChildrenFrameLayout",
+      "android/support/v17/leanback/R": "androidx/leanback/R",
+      "android/support/v17/leanback/animation/LogAccelerateInterpolator": "androidx/leanback/animation/LogAccelerateInterpolator",
+      "android/support/v17/leanback/animation/LogDecelerateInterpolator": "androidx/leanback/animation/LogDecelerateInterpolator",
+      "android/support/v17/leanback/app/BackgroundFragment": "androidx/leanback/app/BackgroundFragment",
+      "android/support/v17/leanback/app/BackgroundManager": "androidx/leanback/app/BackgroundManager",
+      "android/support/v17/leanback/app/BaseFragment": "androidx/leanback/app/BaseFragment",
+      "android/support/v17/leanback/app/BaseRowFragment": "androidx/leanback/app/BaseRowFragment",
+      "android/support/v17/leanback/app/BaseRowSupportFragment": "androidx/leanback/app/BaseRowSupportFragment",
+      "android/support/v17/leanback/app/BaseSupportFragment": "androidx/leanback/app/BaseSupportFragment",
+      "android/support/v17/leanback/app/BrandedFragment": "androidx/leanback/app/BrandedFragment",
+      "android/support/v17/leanback/app/BrandedSupportFragment": "androidx/leanback/app/BrandedSupportFragment",
+      "android/support/v17/leanback/app/BrowseFragment": "androidx/leanback/app/BrowseFragment",
+      "android/support/v17/leanback/app/BrowseSupportFragment": "androidx/leanback/app/BrowseSupportFragment",
+      "android/support/v17/leanback/app/DetailsBackgroundVideoHelper": "androidx/leanback/app/DetailsBackgroundVideoHelper",
+      "android/support/v17/leanback/app/DetailsFragment": "androidx/leanback/app/DetailsFragment",
+      "android/support/v17/leanback/app/DetailsFragmentBackgroundController": "androidx/leanback/app/DetailsFragmentBackgroundController",
+      "android/support/v17/leanback/app/DetailsSupportFragment": "androidx/leanback/app/DetailsSupportFragment",
+      "android/support/v17/leanback/app/DetailsSupportFragmentBackgroundController": "androidx/leanback/app/DetailsSupportFragmentBackgroundController",
+      "android/support/v17/leanback/app/ErrorFragment": "androidx/leanback/app/ErrorFragment",
+      "android/support/v17/leanback/app/ErrorSupportFragment": "androidx/leanback/app/ErrorSupportFragment",
+      "android/support/v17/leanback/app/FragmentUtil": "androidx/leanback/app/FragmentUtil",
+      "android/support/v17/leanback/app/GuidedStepFragment": "androidx/leanback/app/GuidedStepFragment",
+      "android/support/v17/leanback/app/GuidedStepRootLayout": "androidx/leanback/app/GuidedStepRootLayout",
+      "android/support/v17/leanback/app/GuidedStepSupportFragment": "androidx/leanback/app/GuidedStepSupportFragment",
+      "android/support/v17/leanback/app/HeadersFragment": "androidx/leanback/app/HeadersFragment",
+      "android/support/v17/leanback/app/HeadersSupportFragment": "androidx/leanback/app/HeadersSupportFragment",
+      "android/support/v17/leanback/app/ListRowDataAdapter": "androidx/leanback/app/ListRowDataAdapter",
+      "android/support/v17/leanback/app/OnboardingFragment": "androidx/leanback/app/OnboardingFragment",
+      "android/support/v17/leanback/app/OnboardingSupportFragment": "androidx/leanback/app/OnboardingSupportFragment",
+      "android/support/v17/leanback/app/PermissionHelper": "androidx/leanback/app/PermissionHelper",
+      "android/support/v17/leanback/app/PlaybackFragment": "androidx/leanback/app/PlaybackFragment",
+      "android/support/v17/leanback/app/PlaybackFragmentGlueHost": "androidx/leanback/app/PlaybackFragmentGlueHost",
+      "android/support/v17/leanback/app/PlaybackSupportFragment": "androidx/leanback/app/PlaybackSupportFragment",
+      "android/support/v17/leanback/app/PlaybackSupportFragmentGlueHost": "androidx/leanback/app/PlaybackSupportFragmentGlueHost",
+      "android/support/v17/leanback/app/ProgressBarManager": "androidx/leanback/app/ProgressBarManager",
+      "android/support/v17/leanback/app/RowsFragment": "androidx/leanback/app/RowsFragment",
+      "android/support/v17/leanback/app/RowsSupportFragment": "androidx/leanback/app/RowsSupportFragment",
+      "android/support/v17/leanback/app/SearchFragment": "androidx/leanback/app/SearchFragment",
+      "android/support/v17/leanback/app/SearchSupportFragment": "androidx/leanback/app/SearchSupportFragment",
+      "android/support/v17/leanback/app/VerticalGridFragment": "androidx/leanback/app/VerticalGridFragment",
+      "android/support/v17/leanback/app/VerticalGridSupportFragment": "androidx/leanback/app/VerticalGridSupportFragment",
+      "android/support/v17/leanback/app/VideoFragment": "androidx/leanback/app/VideoFragment",
+      "android/support/v17/leanback/app/VideoFragmentGlueHost": "androidx/leanback/app/VideoFragmentGlueHost",
+      "android/support/v17/leanback/app/VideoSupportFragment": "androidx/leanback/app/VideoSupportFragment",
+      "android/support/v17/leanback/app/VideoSupportFragmentGlueHost": "androidx/leanback/app/VideoSupportFragmentGlueHost",
+      "android/support/v17/leanback/database/CursorMapper": "androidx/leanback/database/CursorMapper",
+      "android/support/v17/leanback/graphics/BoundsRule": "androidx/leanback/graphics/BoundsRule",
+      "android/support/v17/leanback/graphics/ColorFilterCache": "androidx/leanback/graphics/ColorFilterCache",
+      "android/support/v17/leanback/graphics/ColorFilterDimmer": "androidx/leanback/graphics/ColorFilterDimmer",
+      "android/support/v17/leanback/graphics/ColorOverlayDimmer": "androidx/leanback/graphics/ColorOverlayDimmer",
+      "android/support/v17/leanback/graphics/CompositeDrawable": "androidx/leanback/graphics/CompositeDrawable",
+      "android/support/v17/leanback/graphics/FitWidthBitmapDrawable": "androidx/leanback/graphics/FitWidthBitmapDrawable",
+      "android/support/v17/leanback/media/MediaControllerAdapter": "androidx/leanback/media/MediaControllerAdapter",
+      "android/support/v17/leanback/media/MediaControllerGlue": "androidx/leanback/media/MediaControllerGlue",
+      "android/support/v17/leanback/media/MediaPlayerAdapter": "androidx/leanback/media/MediaPlayerAdapter",
+      "android/support/v17/leanback/media/MediaPlayerGlue": "androidx/leanback/media/MediaPlayerGlue",
+      "android/support/v17/leanback/media/PlaybackBannerControlGlue": "androidx/leanback/media/PlaybackBannerControlGlue",
+      "android/support/v17/leanback/media/PlaybackBaseControlGlue": "androidx/leanback/media/PlaybackBaseControlGlue",
+      "android/support/v17/leanback/media/PlaybackControlGlue": "androidx/leanback/media/PlaybackControlGlue",
+      "android/support/v17/leanback/media/PlaybackGlue": "androidx/leanback/media/PlaybackGlue",
+      "android/support/v17/leanback/media/PlaybackGlueHost": "androidx/leanback/media/PlaybackGlueHost",
+      "android/support/v17/leanback/media/PlaybackTransportControlGlue": "androidx/leanback/media/PlaybackTransportControlGlue",
+      "android/support/v17/leanback/media/PlayerAdapter": "androidx/leanback/media/PlayerAdapter",
+      "android/support/v17/leanback/media/SurfaceHolderGlueHost": "androidx/leanback/media/SurfaceHolderGlueHost",
+      "android/support/v17/leanback/system/Settings": "androidx/leanback/system/Settings",
+      "android/support/v17/leanback/transition/CustomChangeBounds": "androidx/leanback/transition/CustomChangeBounds",
+      "android/support/v17/leanback/transition/FadeAndShortSlide": "androidx/leanback/transition/FadeAndShortSlide",
+      "android/support/v17/leanback/transition/LeanbackTransitionHelper": "androidx/leanback/transition/LeanbackTransitionHelper",
+      "android/support/v17/leanback/transition/ParallaxTransition": "androidx/leanback/transition/ParallaxTransition",
+      "android/support/v17/leanback/transition/Scale": "androidx/leanback/transition/Scale",
+      "android/support/v17/leanback/transition/SlideKitkat": "androidx/leanback/transition/SlideKitkat",
+      "android/support/v17/leanback/transition/SlideNoPropagation": "androidx/leanback/transition/SlideNoPropagation",
+      "android/support/v17/leanback/transition/TransitionEpicenterCallback": "androidx/leanback/transition/TransitionEpicenterCallback",
+      "android/support/v17/leanback/transition/TransitionHelper": "androidx/leanback/transition/TransitionHelper",
+      "android/support/v17/leanback/transition/TransitionListener": "androidx/leanback/transition/TransitionListener",
+      "android/support/v17/leanback/transition/TranslationAnimationCreator": "androidx/leanback/transition/TranslationAnimationCreator",
+      "android/support/v17/leanback/util/MathUtil": "androidx/leanback/util/MathUtil",
+      "android/support/v17/leanback/util/StateMachine": "androidx/leanback/util/StateMachine",
+      "android/support/v17/leanback/widget/AbstractDetailsDescriptionPresenter": "androidx/leanback/widget/AbstractDetailsDescriptionPresenter",
+      "android/support/v17/leanback/widget/AbstractMediaItemPresenter": "androidx/leanback/widget/AbstractMediaItemPresenter",
+      "android/support/v17/leanback/widget/AbstractMediaListHeaderPresenter": "androidx/leanback/widget/AbstractMediaListHeaderPresenter",
+      "android/support/v17/leanback/widget/Action": "androidx/leanback/widget/Action",
+      "android/support/v17/leanback/widget/ActionPresenterSelector": "androidx/leanback/widget/ActionPresenterSelector",
+      "android/support/v17/leanback/widget/ArrayObjectAdapter": "androidx/leanback/widget/ArrayObjectAdapter",
+      "android/support/v17/leanback/widget/BackgroundHelper": "androidx/leanback/widget/BackgroundHelper",
+      "android/support/v17/leanback/widget/BaseCardView": "androidx/leanback/widget/BaseCardView",
+      "android/support/v17/leanback/widget/BaseGridView": "androidx/leanback/widget/BaseGridView",
+      "android/support/v17/leanback/widget/BaseOnItemViewClickedListener": "androidx/leanback/widget/BaseOnItemViewClickedListener",
+      "android/support/v17/leanback/widget/BaseOnItemViewSelectedListener": "androidx/leanback/widget/BaseOnItemViewSelectedListener",
+      "android/support/v17/leanback/widget/BrowseFrameLayout": "androidx/leanback/widget/BrowseFrameLayout",
+      "android/support/v17/leanback/widget/BrowseRowsFrameLayout": "androidx/leanback/widget/BrowseRowsFrameLayout",
+      "android/support/v17/leanback/widget/CheckableImageView": "androidx/leanback/widget/CheckableImageView",
+      "android/support/v17/leanback/widget/ClassPresenterSelector": "androidx/leanback/widget/ClassPresenterSelector",
+      "android/support/v17/leanback/widget/ControlBar": "androidx/leanback/widget/ControlBar",
+      "android/support/v17/leanback/widget/ControlBarPresenter": "androidx/leanback/widget/ControlBarPresenter",
+      "android/support/v17/leanback/widget/ControlButtonPresenterSelector": "androidx/leanback/widget/ControlButtonPresenterSelector",
+      "android/support/v17/leanback/widget/CursorObjectAdapter": "androidx/leanback/widget/CursorObjectAdapter",
+      "android/support/v17/leanback/widget/DetailsOverviewLogoPresenter": "androidx/leanback/widget/DetailsOverviewLogoPresenter",
+      "android/support/v17/leanback/widget/DetailsOverviewRow": "androidx/leanback/widget/DetailsOverviewRow",
+      "android/support/v17/leanback/widget/DetailsOverviewRowPresenter": "androidx/leanback/widget/DetailsOverviewRowPresenter",
+      "android/support/v17/leanback/widget/DetailsOverviewSharedElementHelper": "androidx/leanback/widget/DetailsOverviewSharedElementHelper",
+      "android/support/v17/leanback/widget/DetailsParallax": "androidx/leanback/widget/DetailsParallax",
+      "android/support/v17/leanback/widget/DetailsParallaxDrawable": "androidx/leanback/widget/DetailsParallaxDrawable",
+      "android/support/v17/leanback/widget/DiffCallback": "androidx/leanback/widget/DiffCallback",
+      "android/support/v17/leanback/widget/DividerPresenter": "androidx/leanback/widget/DividerPresenter",
+      "android/support/v17/leanback/widget/DividerRow": "androidx/leanback/widget/DividerRow",
+      "android/support/v17/leanback/widget/FacetProvider": "androidx/leanback/widget/FacetProvider",
+      "android/support/v17/leanback/widget/FacetProviderAdapter": "androidx/leanback/widget/FacetProviderAdapter",
+      "android/support/v17/leanback/widget/FocusHighlight": "androidx/leanback/widget/FocusHighlight",
+      "android/support/v17/leanback/widget/FocusHighlightHandler": "androidx/leanback/widget/FocusHighlightHandler",
+      "android/support/v17/leanback/widget/FocusHighlightHelper": "androidx/leanback/widget/FocusHighlightHelper",
+      "android/support/v17/leanback/widget/ForegroundHelper": "androidx/leanback/widget/ForegroundHelper",
+      "android/support/v17/leanback/widget/FragmentAnimationProvider": "androidx/leanback/widget/FragmentAnimationProvider",
+      "android/support/v17/leanback/widget/FullWidthDetailsOverviewRowPresenter": "androidx/leanback/widget/FullWidthDetailsOverviewRowPresenter",
+      "android/support/v17/leanback/widget/FullWidthDetailsOverviewSharedElementHelper": "androidx/leanback/widget/FullWidthDetailsOverviewSharedElementHelper",
+      "android/support/v17/leanback/widget/Grid": "androidx/leanback/widget/Grid",
+      "android/support/v17/leanback/widget/GridLayoutManager": "androidx/leanback/widget/GridLayoutManager",
+      "android/support/v17/leanback/widget/GuidanceStylingRelativeLayout": "androidx/leanback/widget/GuidanceStylingRelativeLayout",
+      "android/support/v17/leanback/widget/GuidanceStylist": "androidx/leanback/widget/GuidanceStylist",
+      "android/support/v17/leanback/widget/GuidedAction": "androidx/leanback/widget/GuidedAction",
+      "android/support/v17/leanback/widget/GuidedActionAdapter": "androidx/leanback/widget/GuidedActionAdapter",
+      "android/support/v17/leanback/widget/GuidedActionAdapterGroup": "androidx/leanback/widget/GuidedActionAdapterGroup",
+      "android/support/v17/leanback/widget/GuidedActionAutofillSupport": "androidx/leanback/widget/GuidedActionAutofillSupport",
+      "android/support/v17/leanback/widget/GuidedActionDiffCallback": "androidx/leanback/widget/GuidedActionDiffCallback",
+      "android/support/v17/leanback/widget/GuidedActionEditText": "androidx/leanback/widget/GuidedActionEditText",
+      "android/support/v17/leanback/widget/GuidedActionItemContainer": "androidx/leanback/widget/GuidedActionItemContainer",
+      "android/support/v17/leanback/widget/GuidedActionsRelativeLayout": "androidx/leanback/widget/GuidedActionsRelativeLayout",
+      "android/support/v17/leanback/widget/GuidedActionsStylist": "androidx/leanback/widget/GuidedActionsStylist",
+      "android/support/v17/leanback/widget/GuidedDatePickerAction": "androidx/leanback/widget/GuidedDatePickerAction",
+      "android/support/v17/leanback/widget/HeaderItem": "androidx/leanback/widget/HeaderItem",
+      "android/support/v17/leanback/widget/HorizontalGridView": "androidx/leanback/widget/HorizontalGridView",
+      "android/support/v17/leanback/widget/HorizontalHoverCardSwitcher": "androidx/leanback/widget/HorizontalHoverCardSwitcher",
+      "android/support/v17/leanback/widget/ImageCardView": "androidx/leanback/widget/ImageCardView",
+      "android/support/v17/leanback/widget/ImeKeyMonitor": "androidx/leanback/widget/ImeKeyMonitor",
+      "android/support/v17/leanback/widget/InvisibleRowPresenter": "androidx/leanback/widget/InvisibleRowPresenter",
+      "android/support/v17/leanback/widget/ItemAlignment": "androidx/leanback/widget/ItemAlignment",
+      "android/support/v17/leanback/widget/ItemAlignmentFacet": "androidx/leanback/widget/ItemAlignmentFacet",
+      "android/support/v17/leanback/widget/ItemAlignmentFacetHelper": "androidx/leanback/widget/ItemAlignmentFacetHelper",
+      "android/support/v17/leanback/widget/ItemBridgeAdapter": "androidx/leanback/widget/ItemBridgeAdapter",
+      "android/support/v17/leanback/widget/ItemBridgeAdapterShadowOverlayWrapper": "androidx/leanback/widget/ItemBridgeAdapterShadowOverlayWrapper",
+      "android/support/v17/leanback/widget/ListRow": "androidx/leanback/widget/ListRow",
+      "android/support/v17/leanback/widget/ListRowHoverCardView": "androidx/leanback/widget/ListRowHoverCardView",
+      "android/support/v17/leanback/widget/ListRowPresenter": "androidx/leanback/widget/ListRowPresenter",
+      "android/support/v17/leanback/widget/ListRowView": "androidx/leanback/widget/ListRowView",
+      "android/support/v17/leanback/widget/MediaItemActionPresenter": "androidx/leanback/widget/MediaItemActionPresenter",
+      "android/support/v17/leanback/widget/MediaNowPlayingView": "androidx/leanback/widget/MediaNowPlayingView",
+      "android/support/v17/leanback/widget/MediaRowFocusView": "androidx/leanback/widget/MediaRowFocusView",
+      "android/support/v17/leanback/widget/MultiActionsProvider": "androidx/leanback/widget/MultiActionsProvider",
+      "android/support/v17/leanback/widget/NonOverlappingFrameLayout": "androidx/leanback/widget/NonOverlappingFrameLayout",
+      "android/support/v17/leanback/widget/NonOverlappingLinearLayout": "androidx/leanback/widget/NonOverlappingLinearLayout",
+      "android/support/v17/leanback/widget/NonOverlappingLinearLayoutWithForeground": "androidx/leanback/widget/NonOverlappingLinearLayoutWithForeground",
+      "android/support/v17/leanback/widget/NonOverlappingRelativeLayout": "androidx/leanback/widget/NonOverlappingRelativeLayout",
+      "android/support/v17/leanback/widget/NonOverlappingView": "androidx/leanback/widget/NonOverlappingView",
+      "android/support/v17/leanback/widget/ObjectAdapter": "androidx/leanback/widget/ObjectAdapter",
+      "android/support/v17/leanback/widget/OnActionClickedListener": "androidx/leanback/widget/OnActionClickedListener",
+      "android/support/v17/leanback/widget/OnChildLaidOutListener": "androidx/leanback/widget/OnChildLaidOutListener",
+      "android/support/v17/leanback/widget/OnChildSelectedListener": "androidx/leanback/widget/OnChildSelectedListener",
+      "android/support/v17/leanback/widget/OnChildViewHolderSelectedListener": "androidx/leanback/widget/OnChildViewHolderSelectedListener",
+      "android/support/v17/leanback/widget/OnItemViewClickedListener": "androidx/leanback/widget/OnItemViewClickedListener",
+      "android/support/v17/leanback/widget/OnItemViewSelectedListener": "androidx/leanback/widget/OnItemViewSelectedListener",
+      "android/support/v17/leanback/widget/PageRow": "androidx/leanback/widget/PageRow",
+      "android/support/v17/leanback/widget/PagingIndicator": "androidx/leanback/widget/PagingIndicator",
+      "android/support/v17/leanback/widget/Parallax": "androidx/leanback/widget/Parallax",
+      "android/support/v17/leanback/widget/ParallaxEffect": "androidx/leanback/widget/ParallaxEffect",
+      "android/support/v17/leanback/widget/ParallaxTarget": "androidx/leanback/widget/ParallaxTarget",
+      "android/support/v17/leanback/widget/PersistentFocusWrapper": "androidx/leanback/widget/PersistentFocusWrapper",
+      "android/support/v17/leanback/widget/PlaybackControlsPresenter": "androidx/leanback/widget/PlaybackControlsPresenter",
+      "android/support/v17/leanback/widget/PlaybackControlsRow": "androidx/leanback/widget/PlaybackControlsRow",
+      "android/support/v17/leanback/widget/PlaybackControlsRowPresenter": "androidx/leanback/widget/PlaybackControlsRowPresenter",
+      "android/support/v17/leanback/widget/PlaybackControlsRowView": "androidx/leanback/widget/PlaybackControlsRowView",
+      "android/support/v17/leanback/widget/PlaybackRowPresenter": "androidx/leanback/widget/PlaybackRowPresenter",
+      "android/support/v17/leanback/widget/PlaybackSeekDataProvider": "androidx/leanback/widget/PlaybackSeekDataProvider",
+      "android/support/v17/leanback/widget/PlaybackSeekUi": "androidx/leanback/widget/PlaybackSeekUi",
+      "android/support/v17/leanback/widget/PlaybackTransportRowPresenter": "androidx/leanback/widget/PlaybackTransportRowPresenter",
+      "android/support/v17/leanback/widget/PlaybackTransportRowView": "androidx/leanback/widget/PlaybackTransportRowView",
+      "android/support/v17/leanback/widget/Presenter": "androidx/leanback/widget/Presenter",
+      "android/support/v17/leanback/widget/PresenterSelector": "androidx/leanback/widget/PresenterSelector",
+      "android/support/v17/leanback/widget/PresenterSwitcher": "androidx/leanback/widget/PresenterSwitcher",
+      "android/support/v17/leanback/widget/RecyclerViewParallax": "androidx/leanback/widget/RecyclerViewParallax",
+      "android/support/v17/leanback/widget/ResizingTextView": "androidx/leanback/widget/ResizingTextView",
+      "android/support/v17/leanback/widget/RoundedRectHelper": "androidx/leanback/widget/RoundedRectHelper",
+      "android/support/v17/leanback/widget/RoundedRectHelperApi21": "androidx/leanback/widget/RoundedRectHelperApi21",
+      "android/support/v17/leanback/widget/Row": "androidx/leanback/widget/Row",
+      "android/support/v17/leanback/widget/RowContainerView": "androidx/leanback/widget/RowContainerView",
+      "android/support/v17/leanback/widget/RowHeaderPresenter": "androidx/leanback/widget/RowHeaderPresenter",
+      "android/support/v17/leanback/widget/RowHeaderView": "androidx/leanback/widget/RowHeaderView",
+      "android/support/v17/leanback/widget/RowPresenter": "androidx/leanback/widget/RowPresenter",
+      "android/support/v17/leanback/widget/ScaleFrameLayout": "androidx/leanback/widget/ScaleFrameLayout",
+      "android/support/v17/leanback/widget/SearchBar": "androidx/leanback/widget/SearchBar",
+      "android/support/v17/leanback/widget/SearchEditText": "androidx/leanback/widget/SearchEditText",
+      "android/support/v17/leanback/widget/SearchOrbView": "androidx/leanback/widget/SearchOrbView",
+      "android/support/v17/leanback/widget/SectionRow": "androidx/leanback/widget/SectionRow",
+      "android/support/v17/leanback/widget/SeekBar": "androidx/leanback/widget/SeekBar",
+      "android/support/v17/leanback/widget/ShadowHelper": "androidx/leanback/widget/ShadowHelper",
+      "android/support/v17/leanback/widget/ShadowHelperApi21": "androidx/leanback/widget/ShadowHelperApi21",
+      "android/support/v17/leanback/widget/ShadowOverlayContainer": "androidx/leanback/widget/ShadowOverlayContainer",
+      "android/support/v17/leanback/widget/ShadowOverlayHelper": "androidx/leanback/widget/ShadowOverlayHelper",
+      "android/support/v17/leanback/widget/SinglePresenterSelector": "androidx/leanback/widget/SinglePresenterSelector",
+      "android/support/v17/leanback/widget/SingleRow": "androidx/leanback/widget/SingleRow",
+      "android/support/v17/leanback/widget/SparseArrayObjectAdapter": "androidx/leanback/widget/SparseArrayObjectAdapter",
+      "android/support/v17/leanback/widget/SpeechOrbView": "androidx/leanback/widget/SpeechOrbView",
+      "android/support/v17/leanback/widget/SpeechRecognitionCallback": "androidx/leanback/widget/SpeechRecognitionCallback",
+      "android/support/v17/leanback/widget/StaggeredGrid": "androidx/leanback/widget/StaggeredGrid",
+      "android/support/v17/leanback/widget/StaggeredGridDefault": "androidx/leanback/widget/StaggeredGridDefault",
+      "android/support/v17/leanback/widget/StaticShadowHelper": "androidx/leanback/widget/StaticShadowHelper",
+      "android/support/v17/leanback/widget/StreamingTextView": "androidx/leanback/widget/StreamingTextView",
+      "android/support/v17/leanback/widget/ThumbsBar": "androidx/leanback/widget/ThumbsBar",
+      "android/support/v17/leanback/widget/TitleHelper": "androidx/leanback/widget/TitleHelper",
+      "android/support/v17/leanback/widget/TitleView": "androidx/leanback/widget/TitleView",
+      "android/support/v17/leanback/widget/TitleViewAdapter": "androidx/leanback/widget/TitleViewAdapter",
+      "android/support/v17/leanback/widget/Util": "androidx/leanback/widget/Util",
+      "android/support/v17/leanback/widget/VerticalGridPresenter": "androidx/leanback/widget/VerticalGridPresenter",
+      "android/support/v17/leanback/widget/VerticalGridView": "androidx/leanback/widget/VerticalGridView",
+      "android/support/v17/leanback/widget/VideoSurfaceView": "androidx/leanback/widget/VideoSurfaceView",
+      "android/support/v17/leanback/widget/ViewHolderTask": "androidx/leanback/widget/ViewHolderTask",
+      "android/support/v17/leanback/widget/ViewsStateBundle": "androidx/leanback/widget/ViewsStateBundle",
+      "android/support/v17/leanback/widget/Visibility": "androidx/leanback/widget/Visibility",
+      "android/support/v17/leanback/widget/WindowAlignment": "androidx/leanback/widget/WindowAlignment",
+      "android/support/v17/leanback/widget/picker/DatePicker": "androidx/leanback/widget/picker/DatePicker",
+      "android/support/v17/leanback/widget/picker/Picker": "androidx/leanback/widget/picker/Picker",
+      "android/support/v17/leanback/widget/picker/PickerColumn": "androidx/leanback/widget/picker/PickerColumn",
+      "android/support/v17/leanback/widget/picker/PickerUtility": "androidx/leanback/widget/picker/PickerUtility",
+      "android/support/v17/leanback/widget/picker/TimePicker": "androidx/leanback/widget/picker/TimePicker",
+      "android/support/v17/preference/BaseLeanbackPreferenceFragment": "androidx/leanback/preference/BaseLeanbackPreferenceFragment",
+      "android/support/v17/preference/LeanbackListPreferenceDialogFragment": "androidx/leanback/preference/LeanbackListPreferenceDialogFragment",
+      "android/support/v17/preference/LeanbackPreferenceDialogFragment": "androidx/leanback/preference/LeanbackPreferenceDialogFragment",
+      "android/support/v17/preference/LeanbackPreferenceFragment": "androidx/leanback/preference/LeanbackPreferenceFragment",
+      "android/support/v17/preference/LeanbackPreferenceFragmentTransitionHelperApi21": "androidx/leanback/preference/LeanbackPreferenceFragmentTransitionHelperApi21",
+      "android/support/v17/preference/LeanbackSettingsFragment": "androidx/leanback/preference/LeanbackSettingsFragment",
+      "android/support/v17/preference/LeanbackSettingsRootView": "androidx/leanback/preference/LeanbackSettingsRootView",
+      "android/support/v17/preference/R": "androidx/leanback/preference/R",
+      "android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat": "androidx/core/accessibilityservice/AccessibilityServiceInfoCompat",
+      "android/support/v4/app/ActionBarDrawerToggle": "androidx/legacy/app/ActionBarDrawerToggle",
+      "android/support/v4/app/ActivityCompat": "androidx/core/app/ActivityCompat",
+      "android/support/v4/app/ActivityManagerCompat": "androidx/core/app/ActivityManagerCompat",
+      "android/support/v4/app/ActivityOptionsCompat": "androidx/core/app/ActivityOptionsCompat",
+      "android/support/v4/app/AlarmManagerCompat": "androidx/core/app/AlarmManagerCompat",
+      "android/support/v4/app/AppComponentFactory": "androidx/core/app/AppComponentFactory",
+      "android/support/v4/app/AppLaunchChecker": "androidx/core/app/AppLaunchChecker",
+      "android/support/v4/app/AppOpsManagerCompat": "androidx/core/app/AppOpsManagerCompat",
+      "android/support/v4/app/BackStackRecord": "androidx/fragment/app/BackStackRecord",
+      "android/support/v4/app/BackStackState": "androidx/fragment/app/BackStackState",
+      "android/support/v4/app/BundleCompat": "androidx/core/app/BundleCompat",
+      "android/support/v4/app/CoreComponentFactory": "androidx/core/app/CoreComponentFactory",
+      "android/support/v4/app/DialogFragment": "androidx/fragment/app/DialogFragment",
+      "android/support/v4/app/Fragment": "androidx/fragment/app/Fragment",
+      "android/support/v4/app/FragmentActivity": "androidx/fragment/app/FragmentActivity",
+      "android/support/v4/app/FragmentContainer": "androidx/fragment/app/FragmentContainer",
+      "android/support/v4/app/FragmentController": "androidx/fragment/app/FragmentController",
+      "android/support/v4/app/FragmentHostCallback": "androidx/fragment/app/FragmentHostCallback",
+      "android/support/v4/app/FragmentManager": "androidx/fragment/app/FragmentManager",
+      "android/support/v4/app/FragmentManagerImpl": "androidx/fragment/app/FragmentManagerImpl",
+      "android/support/v4/app/FragmentManagerNonConfig": "androidx/fragment/app/FragmentManagerNonConfig",
+      "android/support/v4/app/FragmentManagerState": "androidx/fragment/app/FragmentManagerState",
+      "android/support/v4/app/FragmentPagerAdapter": "androidx/fragment/app/FragmentPagerAdapter",
+      "android/support/v4/app/FragmentState": "androidx/fragment/app/FragmentState",
+      "android/support/v4/app/FragmentStatePagerAdapter": "androidx/fragment/app/FragmentStatePagerAdapter",
+      "android/support/v4/app/FragmentTabHost": "androidx/fragment/app/FragmentTabHost",
+      "android/support/v4/app/FragmentTransaction": "androidx/fragment/app/FragmentTransaction",
+      "android/support/v4/app/FragmentTransition": "androidx/fragment/app/FragmentTransition",
+      "android/support/v4/app/FragmentTransitionCompat21": "androidx/fragment/app/FragmentTransitionCompat21",
+      "android/support/v4/app/FragmentTransitionImpl": "androidx/fragment/app/FragmentTransitionImpl",
+      "android/support/v4/app/FrameMetricsAggregator": "androidx/core/app/FrameMetricsAggregator",
+      "android/support/v4/app/INotificationSideChannel": "androidx/core/app/INotificationSideChannel",
+      "android/support/v4/app/JobIntentService": "androidx/core/app/JobIntentService",
+      "android/support/v4/app/ListFragment": "androidx/fragment/app/ListFragment",
+      "android/support/v4/app/LoaderManager": "androidx/loader/app/LoaderManager",
+      "android/support/v4/app/LoaderManagerImpl": "androidx/loader/app/LoaderManagerImpl",
+      "android/support/v4/app/NavUtils": "androidx/core/app/NavUtils",
+      "android/support/v4/app/NotificationBuilderWithBuilderAccessor": "androidx/core/app/NotificationBuilderWithBuilderAccessor",
+      "android/support/v4/app/NotificationCompat": "androidx/core/app/NotificationCompat",
+      "android/support/v4/app/NotificationCompatBuilder": "androidx/core/app/NotificationCompatBuilder",
+      "android/support/v4/app/NotificationCompatExtras": "androidx/core/app/NotificationCompatExtras",
+      "android/support/v4/app/NotificationCompatJellybean": "androidx/core/app/NotificationCompatJellybean",
+      "android/support/v4/app/NotificationCompatSideChannelService": "androidx/core/app/NotificationCompatSideChannelService",
+      "android/support/v4/app/NotificationManagerCompat": "androidx/core/app/NotificationManagerCompat",
+      "android/support/v4/app/OneShotPreDrawListener": "androidx/fragment/app/OneShotPreDrawListener",
+      "android/support/v4/app/Person": "androidx/core/app/Person",
+      "android/support/v4/app/RemoteInput": "androidx/core/app/RemoteInput",
+      "android/support/v4/app/ServiceCompat": "androidx/core/app/ServiceCompat",
+      "android/support/v4/app/ShareCompat": "androidx/core/app/ShareCompat",
+      "android/support/v4/app/SharedElementCallback": "androidx/core/app/SharedElementCallback",
+      "android/support/v4/app/SuperNotCalledException": "androidx/fragment/app/SuperNotCalledException",
+      "android/support/v4/app/SupportActivity": "androidx/core/app/ComponentActivity",
+      "android/support/v4/app/TaskStackBuilder": "androidx/core/app/TaskStackBuilder",
+      "android/support/v4/content/AsyncTaskLoader": "androidx/loader/content/AsyncTaskLoader",
+      "android/support/v4/content/ContentResolverCompat": "androidx/core/content/ContentResolverCompat",
+      "android/support/v4/content/ContextCompat": "androidx/core/content/ContextCompat",
+      "android/support/v4/content/CursorLoader": "androidx/loader/content/CursorLoader",
+      "android/support/v4/content/FileProvider": "androidx/core/content/FileProvider",
+      "android/support/v4/content/IntentCompat": "androidx/core/content/IntentCompat",
+      "android/support/v4/content/Loader": "androidx/loader/content/Loader",
+      "android/support/v4/content/LocalBroadcastManager": "androidx/localbroadcastmanager/content/LocalBroadcastManager",
+      "android/support/v4/content/MimeTypeFilter": "androidx/core/content/MimeTypeFilter",
+      "android/support/v4/content/ModernAsyncTask": "androidx/loader/content/ModernAsyncTask",
+      "android/support/v4/content/PermissionChecker": "androidx/core/content/PermissionChecker",
+      "android/support/v4/content/SharedPreferencesCompat": "androidx/core/content/SharedPreferencesCompat",
+      "android/support/v4/content/WakefulBroadcastReceiver": "androidx/legacy/content/WakefulBroadcastReceiver",
+      "android/support/v4/content/pm/ActivityInfoCompat": "androidx/core/content/pm/ActivityInfoCompat",
+      "android/support/v4/content/pm/PackageInfoCompat": "androidx/core/content/pm/PackageInfoCompat",
+      "android/support/v4/content/pm/PermissionInfoCompat": "androidx/core/content/pm/PermissionInfoCompat",
+      "android/support/v4/content/pm/ShortcutInfoCompat": "androidx/core/content/pm/ShortcutInfoCompat",
+      "android/support/v4/content/pm/ShortcutManagerCompat": "androidx/core/content/pm/ShortcutManagerCompat",
+      "android/support/v4/content/res/ColorStateListInflaterCompat": "androidx/core/content/res/ColorStateListInflaterCompat",
+      "android/support/v4/content/res/ComplexColorCompat": "androidx/core/content/res/ComplexColorCompat",
+      "android/support/v4/content/res/ConfigurationHelper": "androidx/core/content/res/ConfigurationHelper",
+      "android/support/v4/content/res/FontResourcesParserCompat": "androidx/core/content/res/FontResourcesParserCompat",
+      "android/support/v4/content/res/GradientColorInflaterCompat": "androidx/core/content/res/GradientColorInflaterCompat",
+      "android/support/v4/content/res/GrowingArrayUtils": "androidx/core/content/res/GrowingArrayUtils",
+      "android/support/v4/content/res/ResourcesCompat": "androidx/core/content/res/ResourcesCompat",
+      "android/support/v4/content/res/TypedArrayUtils": "androidx/core/content/res/TypedArrayUtils",
+      "android/support/v4/database/CursorWindowCompat": "androidx/core/database/CursorWindowCompat",
+      "android/support/v4/database/DatabaseUtilsCompat": "androidx/core/database/DatabaseUtilsCompat",
+      "android/support/v4/database/sqlite/SQLiteCursorCompat": "androidx/core/database/sqlite/SQLiteCursorCompat",
+      "android/support/v4/graphics/BitmapCompat": "androidx/core/graphics/BitmapCompat",
+      "android/support/v4/graphics/ColorUtils": "androidx/core/graphics/ColorUtils",
+      "android/support/v4/graphics/PaintCompat": "androidx/core/graphics/PaintCompat",
+      "android/support/v4/graphics/PathParser": "androidx/core/graphics/PathParser",
+      "android/support/v4/graphics/PathSegment": "androidx/core/graphics/PathSegment",
+      "android/support/v4/graphics/PathUtils": "androidx/core/graphics/PathUtils",
+      "android/support/v4/graphics/TypefaceCompat": "androidx/core/graphics/TypefaceCompat",
+      "android/support/v4/graphics/TypefaceCompatApi21Impl": "androidx/core/graphics/TypefaceCompatApi21Impl",
+      "android/support/v4/graphics/TypefaceCompatApi24Impl": "androidx/core/graphics/TypefaceCompatApi24Impl",
+      "android/support/v4/graphics/TypefaceCompatApi26Impl": "androidx/core/graphics/TypefaceCompatApi26Impl",
+      "android/support/v4/graphics/TypefaceCompatApi28Impl": "androidx/core/graphics/TypefaceCompatApi28Impl",
+      "android/support/v4/graphics/TypefaceCompatBaseImpl": "androidx/core/graphics/TypefaceCompatBaseImpl",
+      "android/support/v4/graphics/TypefaceCompatUtil": "androidx/core/graphics/TypefaceCompatUtil",
+      "android/support/v4/graphics/drawable/DrawableCompat": "androidx/core/graphics/drawable/DrawableCompat",
+      "android/support/v4/graphics/drawable/IconCompat": "androidx/core/graphics/drawable/IconCompat",
+      "android/support/v4/graphics/drawable/IconCompatParcelizer": "android/support/v4/graphics/drawable/IconCompatParcelizer",
+      "android/support/v4/graphics/drawable/RoundedBitmapDrawable": "androidx/core/graphics/drawable/RoundedBitmapDrawable",
+      "android/support/v4/graphics/drawable/RoundedBitmapDrawable21": "androidx/core/graphics/drawable/RoundedBitmapDrawable21",
+      "android/support/v4/graphics/drawable/RoundedBitmapDrawableFactory": "androidx/core/graphics/drawable/RoundedBitmapDrawableFactory",
+      "android/support/v4/graphics/drawable/TintAwareDrawable": "androidx/core/graphics/drawable/TintAwareDrawable",
+      "android/support/v4/graphics/drawable/WrappedDrawable": "androidx/core/graphics/drawable/WrappedDrawable",
+      "android/support/v4/graphics/drawable/WrappedDrawableApi14": "androidx/core/graphics/drawable/WrappedDrawableApi14",
+      "android/support/v4/graphics/drawable/WrappedDrawableApi21": "androidx/core/graphics/drawable/WrappedDrawableApi21",
+      "android/support/v4/hardware/display/DisplayManagerCompat": "androidx/core/hardware/display/DisplayManagerCompat",
+      "android/support/v4/hardware/fingerprint/FingerprintManagerCompat": "androidx/core/hardware/fingerprint/FingerprintManagerCompat",
+      "android/support/v4/internal/view/SupportMenu": "androidx/core/internal/view/SupportMenu",
+      "android/support/v4/internal/view/SupportMenuItem": "androidx/core/internal/view/SupportMenuItem",
+      "android/support/v4/internal/view/SupportSubMenu": "androidx/core/internal/view/SupportSubMenu",
+      "android/support/v4/math/MathUtils": "androidx/core/math/MathUtils",
+      "android/support/v4/media/AudioAttributesCompat": "androidx/media/AudioAttributesCompat",
+      "android/support/v4/media/AudioAttributesImpl": "android/support/v4/media/AudioAttributesImpl",
+      "android/support/v4/media/AudioAttributesImplApi21": "android/support/v4/media/AudioAttributesImplApi21",
+      "android/support/v4/media/AudioAttributesImplBase": "android/support/v4/media/AudioAttributesImplBase",
+      "android/support/v4/media/MediaBrowserCompat": "android/support/v4/media/MediaBrowserCompat",
+      "android/support/v4/media/MediaBrowserCompatApi21": "android/support/v4/media/MediaBrowserCompatApi21",
+      "android/support/v4/media/MediaBrowserCompatApi23": "android/support/v4/media/MediaBrowserCompatApi23",
+      "android/support/v4/media/MediaBrowserCompatApi26": "android/support/v4/media/MediaBrowserCompatApi26",
+      "android/support/v4/media/MediaBrowserCompatUtils": "androidx/media/MediaBrowserCompatUtils",
+      "android/support/v4/media/MediaBrowserProtocol": "androidx/media/MediaBrowserProtocol",
+      "android/support/v4/media/MediaBrowserServiceCompat": "androidx/media/MediaBrowserServiceCompat",
+      "android/support/v4/media/MediaBrowserServiceCompatApi21": "androidx/media/MediaBrowserServiceCompatApi21",
+      "android/support/v4/media/MediaBrowserServiceCompatApi23": "androidx/media/MediaBrowserServiceCompatApi23",
+      "android/support/v4/media/MediaBrowserServiceCompatApi26": "androidx/media/MediaBrowserServiceCompatApi26",
+      "android/support/v4/media/MediaDescriptionCompat": "android/support/v4/media/MediaDescriptionCompat",
+      "android/support/v4/media/MediaDescriptionCompatApi21": "android/support/v4/media/MediaDescriptionCompatApi21",
+      "android/support/v4/media/MediaDescriptionCompatApi23": "android/support/v4/media/MediaDescriptionCompatApi23",
+      "android/support/v4/media/MediaMetadataCompat": "android/support/v4/media/MediaMetadataCompat",
+      "android/support/v4/media/MediaMetadataCompatApi21": "android/support/v4/media/MediaMetadataCompatApi21",
+      "android/support/v4/media/MediaSessionManager": "android/support/v4/media/MediaSessionManager",
+      "android/support/v4/media/MediaSessionManagerImplApi21": "android/support/v4/media/MediaSessionManagerImplApi21",
+      "android/support/v4/media/MediaSessionManagerImplApi28": "android/support/v4/media/MediaSessionManagerImplApi28",
+      "android/support/v4/media/MediaSessionManagerImplBase": "android/support/v4/media/MediaSessionManagerImplBase",
+      "android/support/v4/media/ParceledListSliceAdapterApi21": "android/support/v4/media/ParceledListSliceAdapterApi21",
+      "android/support/v4/media/RatingCompat": "android/support/v4/media/RatingCompat",
+      "android/support/v4/media/VolumeProviderCompat": "androidx/media/VolumeProviderCompat",
+      "android/support/v4/media/VolumeProviderCompatApi21": "androidx/media/VolumeProviderCompatApi21",
+      "android/support/v4/media/app/NotificationCompat": "androidx/media/app/NotificationCompat",
+      "android/support/v4/media/session/IMediaControllerCallback": "android/support/v4/media/session/IMediaControllerCallback",
+      "android/support/v4/media/session/IMediaSession": "android/support/v4/media/session/IMediaSession",
+      "android/support/v4/media/session/MediaButtonReceiver": "androidx/media/session/MediaButtonReceiver",
+      "android/support/v4/media/session/MediaControllerCompat": "android/support/v4/media/session/MediaControllerCompat",
+      "android/support/v4/media/session/MediaControllerCompatApi21": "android/support/v4/media/session/MediaControllerCompatApi21",
+      "android/support/v4/media/session/MediaControllerCompatApi23": "android/support/v4/media/session/MediaControllerCompatApi23",
+      "android/support/v4/media/session/MediaControllerCompatApi24": "android/support/v4/media/session/MediaControllerCompatApi24",
+      "android/support/v4/media/session/MediaSessionCompat": "android/support/v4/media/session/MediaSessionCompat",
+      "android/support/v4/media/session/MediaSessionCompatApi21": "android/support/v4/media/session/MediaSessionCompatApi21",
+      "android/support/v4/media/session/MediaSessionCompatApi22": "android/support/v4/media/session/MediaSessionCompatApi22",
+      "android/support/v4/media/session/MediaSessionCompatApi23": "android/support/v4/media/session/MediaSessionCompatApi23",
+      "android/support/v4/media/session/MediaSessionCompatApi24": "android/support/v4/media/session/MediaSessionCompatApi24",
+      "android/support/v4/media/session/ParcelableVolumeInfo": "android/support/v4/media/session/ParcelableVolumeInfo",
+      "android/support/v4/media/session/PlaybackStateCompat": "android/support/v4/media/session/PlaybackStateCompat",
+      "android/support/v4/media/session/PlaybackStateCompatApi21": "android/support/v4/media/session/PlaybackStateCompatApi21",
+      "android/support/v4/media/session/PlaybackStateCompatApi22": "android/support/v4/media/session/PlaybackStateCompatApi22",
+      "android/support/v4/net/ConnectivityManagerCompat": "androidx/core/net/ConnectivityManagerCompat",
+      "android/support/v4/net/DatagramSocketWrapper": "androidx/core/net/DatagramSocketWrapper",
+      "android/support/v4/net/TrafficStatsCompat": "androidx/core/net/TrafficStatsCompat",
+      "android/support/v4/os/BuildCompat": "androidx/core/os/BuildCompat",
+      "android/support/v4/os/CancellationSignal": "androidx/core/os/CancellationSignal",
+      "android/support/v4/os/ConfigurationCompat": "androidx/core/os/ConfigurationCompat",
+      "android/support/v4/os/EnvironmentCompat": "androidx/core/os/EnvironmentCompat",
+      "android/support/v4/os/HandlerCompat": "androidx/core/os/HandlerCompat",
+      "android/support/v4/os/IResultReceiver": "androidx/core/os/IResultReceiver",
+      "android/support/v4/os/LocaleHelper": "androidx/core/os/LocaleHelper",
+      "android/support/v4/os/LocaleListCompat": "androidx/core/os/LocaleListCompat",
+      "android/support/v4/os/LocaleListHelper": "androidx/core/os/LocaleListHelper",
+      "android/support/v4/os/LocaleListInterface": "androidx/core/os/LocaleListInterface",
+      "android/support/v4/os/OperationCanceledException": "androidx/core/os/OperationCanceledException",
+      "android/support/v4/os/ParcelCompat": "androidx/core/os/ParcelCompat",
+      "android/support/v4/os/ParcelableCompat": "androidx/core/os/ParcelableCompat",
+      "android/support/v4/os/ParcelableCompatCreatorCallbacks": "androidx/core/os/ParcelableCompatCreatorCallbacks",
+      "android/support/v4/os/TraceCompat": "androidx/core/os/TraceCompat",
+      "android/support/v4/os/UserManagerCompat": "androidx/core/os/UserManagerCompat",
+      "android/support/v4/print/PrintHelper": "androidx/print/PrintHelper",
+      "android/support/v4/provider/DocumentFile": "androidx/documentfile/provider/DocumentFile",
+      "android/support/v4/provider/DocumentsContractApi19": "androidx/documentfile/provider/DocumentsContractApi19",
+      "android/support/v4/provider/FontRequest": "androidx/core/provider/FontRequest",
+      "android/support/v4/provider/FontsContractCompat": "androidx/core/provider/FontsContractCompat",
+      "android/support/v4/provider/RawDocumentFile": "androidx/documentfile/provider/RawDocumentFile",
+      "android/support/v4/provider/SelfDestructiveThread": "androidx/core/provider/SelfDestructiveThread",
+      "android/support/v4/provider/SingleDocumentFile": "androidx/documentfile/provider/SingleDocumentFile",
+      "android/support/v4/provider/TreeDocumentFile": "androidx/documentfile/provider/TreeDocumentFile",
+      "android/support/v4/text/BidiFormatter": "androidx/core/text/BidiFormatter",
+      "android/support/v4/text/HtmlCompat": "androidx/core/text/HtmlCompat",
+      "android/support/v4/text/ICUCompat": "androidx/core/text/ICUCompat",
+      "android/support/v4/text/PrecomputedTextCompat": "androidx/core/text/PrecomputedTextCompat",
+      "android/support/v4/text/TextDirectionHeuristicCompat": "androidx/core/text/TextDirectionHeuristicCompat",
+      "android/support/v4/text/TextDirectionHeuristicsCompat": "androidx/core/text/TextDirectionHeuristicsCompat",
+      "android/support/v4/text/TextUtilsCompat": "androidx/core/text/TextUtilsCompat",
+      "android/support/v4/text/util/FindAddress": "androidx/core/text/util/FindAddress",
+      "android/support/v4/text/util/LinkifyCompat": "androidx/core/text/util/LinkifyCompat",
+      "android/support/v4/util/ArrayMap": "androidx/collection/ArrayMap",
+      "android/support/v4/util/ArraySet": "androidx/collection/ArraySet",
+      "android/support/v4/util/AtomicFile": "androidx/core/util/AtomicFile",
+      "android/support/v4/util/CircularArray": "androidx/collection/CircularArray",
+      "android/support/v4/util/CircularIntArray": "androidx/collection/CircularIntArray",
+      "android/support/v4/util/Consumer": "androidx/core/util/Consumer",
+      "android/support/v4/util/ContainerHelpers": "androidx/collection/ContainerHelpers",
+      "android/support/v4/util/DebugUtils": "androidx/core/util/DebugUtils",
+      "android/support/v4/util/LogWriter": "androidx/core/util/LogWriter",
+      "android/support/v4/util/LongSparseArray": "androidx/collection/LongSparseArray",
+      "android/support/v4/util/LruCache": "androidx/collection/LruCache",
+      "android/support/v4/util/MapCollections": "androidx/collection/MapCollections",
+      "android/support/v4/util/ObjectsCompat": "androidx/core/util/ObjectsCompat",
+      "android/support/v4/util/Pair": "androidx/core/util/Pair",
+      "android/support/v4/util/PatternsCompat": "androidx/core/util/PatternsCompat",
+      "android/support/v4/util/Pools": "androidx/core/util/Pools",
+      "android/support/v4/util/Preconditions": "androidx/core/util/Preconditions",
+      "android/support/v4/util/SimpleArrayMap": "androidx/collection/SimpleArrayMap",
+      "android/support/v4/util/SparseArrayCompat": "androidx/collection/SparseArrayCompat",
+      "android/support/v4/util/TimeUtils": "androidx/core/util/TimeUtils",
+      "android/support/v4/view/AbsSavedState": "androidx/customview/view/AbsSavedState",
+      "android/support/v4/view/AccessibilityDelegateCompat": "androidx/core/view/AccessibilityDelegateCompat",
+      "android/support/v4/view/ActionProvider": "androidx/core/view/ActionProvider",
+      "android/support/v4/view/AsyncLayoutInflater": "androidx/asynclayoutinflater/view/AsyncLayoutInflater",
+      "android/support/v4/view/DisplayCutoutCompat": "androidx/core/view/DisplayCutoutCompat",
+      "android/support/v4/view/GestureDetectorCompat": "androidx/core/view/GestureDetectorCompat",
+      "android/support/v4/view/GravityCompat": "androidx/core/view/GravityCompat",
+      "android/support/v4/view/InputDeviceCompat": "androidx/core/view/InputDeviceCompat",
+      "android/support/v4/view/KeyEventDispatcher": "androidx/core/view/KeyEventDispatcher",
+      "android/support/v4/view/LayoutInflaterCompat": "androidx/core/view/LayoutInflaterCompat",
+      "android/support/v4/view/LayoutInflaterFactory": "androidx/core/view/LayoutInflaterFactory",
+      "android/support/v4/view/MarginLayoutParamsCompat": "androidx/core/view/MarginLayoutParamsCompat",
+      "android/support/v4/view/MenuCompat": "androidx/core/view/MenuCompat",
+      "android/support/v4/view/MenuItemCompat": "androidx/core/view/MenuItemCompat",
+      "android/support/v4/view/MotionEventCompat": "androidx/core/view/MotionEventCompat",
+      "android/support/v4/view/NestedScrollingChild": "androidx/core/view/NestedScrollingChild",
+      "android/support/v4/view/NestedScrollingChild2": "androidx/core/view/NestedScrollingChild2",
+      "android/support/v4/view/NestedScrollingChildHelper": "androidx/core/view/NestedScrollingChildHelper",
+      "android/support/v4/view/NestedScrollingParent": "androidx/core/view/NestedScrollingParent",
+      "android/support/v4/view/NestedScrollingParent2": "androidx/core/view/NestedScrollingParent2",
+      "android/support/v4/view/NestedScrollingParentHelper": "androidx/core/view/NestedScrollingParentHelper",
+      "android/support/v4/view/OnApplyWindowInsetsListener": "androidx/core/view/OnApplyWindowInsetsListener",
+      "android/support/v4/view/PagerAdapter": "androidx/viewpager/widget/PagerAdapter",
+      "android/support/v4/view/PagerTabStrip": "androidx/viewpager/widget/PagerTabStrip",
+      "android/support/v4/view/PagerTitleStrip": "androidx/viewpager/widget/PagerTitleStrip",
+      "android/support/v4/view/PointerIconCompat": "androidx/core/view/PointerIconCompat",
+      "android/support/v4/view/ScaleGestureDetectorCompat": "androidx/core/view/ScaleGestureDetectorCompat",
+      "android/support/v4/view/ScrollingView": "androidx/core/view/ScrollingView",
+      "android/support/v4/view/TintableBackgroundView": "androidx/core/view/TintableBackgroundView",
+      "android/support/v4/view/VelocityTrackerCompat": "androidx/core/view/VelocityTrackerCompat",
+      "android/support/v4/view/ViewCompat": "androidx/core/view/ViewCompat",
+      "android/support/v4/view/ViewConfigurationCompat": "androidx/core/view/ViewConfigurationCompat",
+      "android/support/v4/view/ViewGroupCompat": "androidx/core/view/ViewGroupCompat",
+      "android/support/v4/view/ViewPager": "androidx/viewpager/widget/ViewPager",
+      "android/support/v4/view/ViewParentCompat": "androidx/core/view/ViewParentCompat",
+      "android/support/v4/view/ViewPropertyAnimatorCompat": "androidx/core/view/ViewPropertyAnimatorCompat",
+      "android/support/v4/view/ViewPropertyAnimatorListener": "androidx/core/view/ViewPropertyAnimatorListener",
+      "android/support/v4/view/ViewPropertyAnimatorListenerAdapter": "androidx/core/view/ViewPropertyAnimatorListenerAdapter",
+      "android/support/v4/view/ViewPropertyAnimatorUpdateListener": "androidx/core/view/ViewPropertyAnimatorUpdateListener",
+      "android/support/v4/view/WindowCompat": "androidx/core/view/WindowCompat",
+      "android/support/v4/view/WindowInsetsCompat": "androidx/core/view/WindowInsetsCompat",
+      "android/support/v4/view/accessibility/AccessibilityEventCompat": "androidx/core/view/accessibility/AccessibilityEventCompat",
+      "android/support/v4/view/accessibility/AccessibilityManagerCompat": "androidx/core/view/accessibility/AccessibilityManagerCompat",
+      "android/support/v4/view/accessibility/AccessibilityNodeInfoCompat": "androidx/core/view/accessibility/AccessibilityNodeInfoCompat",
+      "android/support/v4/view/accessibility/AccessibilityNodeProviderCompat": "androidx/core/view/accessibility/AccessibilityNodeProviderCompat",
+      "android/support/v4/view/accessibility/AccessibilityRecordCompat": "androidx/core/view/accessibility/AccessibilityRecordCompat",
+      "android/support/v4/view/accessibility/AccessibilityWindowInfoCompat": "androidx/core/view/accessibility/AccessibilityWindowInfoCompat",
+      "android/support/v4/view/animation/FastOutLinearInInterpolator": "androidx/interpolator/view/animation/FastOutLinearInInterpolator",
+      "android/support/v4/view/animation/FastOutSlowInInterpolator": "androidx/interpolator/view/animation/FastOutSlowInInterpolator",
+      "android/support/v4/view/animation/LinearOutSlowInInterpolator": "androidx/interpolator/view/animation/LinearOutSlowInInterpolator",
+      "android/support/v4/view/animation/LookupTableInterpolator": "androidx/interpolator/view/animation/LookupTableInterpolator",
+      "android/support/v4/view/animation/PathInterpolatorApi14": "androidx/core/view/animation/PathInterpolatorApi14",
+      "android/support/v4/view/animation/PathInterpolatorCompat": "androidx/core/view/animation/PathInterpolatorCompat",
+      "android/support/v4/widget/AutoScrollHelper": "androidx/core/widget/AutoScrollHelper",
+      "android/support/v4/widget/AutoSizeableTextView": "androidx/core/widget/AutoSizeableTextView",
+      "android/support/v4/widget/CircleImageView": "androidx/swiperefreshlayout/widget/CircleImageView",
+      "android/support/v4/widget/CircularProgressDrawable": "androidx/swiperefreshlayout/widget/CircularProgressDrawable",
+      "android/support/v4/widget/CompoundButtonCompat": "androidx/core/widget/CompoundButtonCompat",
+      "android/support/v4/widget/ContentLoadingProgressBar": "androidx/core/widget/ContentLoadingProgressBar",
+      "android/support/v4/widget/CursorAdapter": "androidx/cursoradapter/widget/CursorAdapter",
+      "android/support/v4/widget/CursorFilter": "androidx/cursoradapter/widget/CursorFilter",
+      "android/support/v4/widget/DirectedAcyclicGraph": "androidx/coordinatorlayout/widget/DirectedAcyclicGraph",
+      "android/support/v4/widget/DrawerLayout": "androidx/drawerlayout/widget/DrawerLayout",
+      "android/support/v4/widget/EdgeEffectCompat": "androidx/core/widget/EdgeEffectCompat",
+      "android/support/v4/widget/ExploreByTouchHelper": "androidx/customview/widget/ExploreByTouchHelper",
+      "android/support/v4/widget/FocusStrategy": "androidx/customview/widget/FocusStrategy",
+      "android/support/v4/widget/ImageViewCompat": "androidx/core/widget/ImageViewCompat",
+      "android/support/v4/widget/ListPopupWindowCompat": "androidx/core/widget/ListPopupWindowCompat",
+      "android/support/v4/widget/ListViewAutoScrollHelper": "androidx/core/widget/ListViewAutoScrollHelper",
+      "android/support/v4/widget/ListViewCompat": "androidx/core/widget/ListViewCompat",
+      "android/support/v4/widget/NestedScrollView": "androidx/core/widget/NestedScrollView",
+      "android/support/v4/widget/PopupMenuCompat": "androidx/core/widget/PopupMenuCompat",
+      "android/support/v4/widget/PopupWindowCompat": "androidx/core/widget/PopupWindowCompat",
+      "android/support/v4/widget/ResourceCursorAdapter": "androidx/cursoradapter/widget/ResourceCursorAdapter",
+      "android/support/v4/widget/ScrollerCompat": "androidx/core/widget/ScrollerCompat",
+      "android/support/v4/widget/SimpleCursorAdapter": "androidx/cursoradapter/widget/SimpleCursorAdapter",
+      "android/support/v4/widget/SlidingPaneLayout": "androidx/slidingpanelayout/widget/SlidingPaneLayout",
+      "android/support/v4/widget/Space": "androidx/legacy/widget/Space",
+      "android/support/v4/widget/SwipeRefreshLayout": "androidx/swiperefreshlayout/widget/SwipeRefreshLayout",
+      "android/support/v4/widget/TextViewCompat": "androidx/core/widget/TextViewCompat",
+      "android/support/v4/widget/TintableCompoundButton": "androidx/core/widget/TintableCompoundButton",
+      "android/support/v4/widget/TintableImageSourceView": "androidx/core/widget/TintableImageSourceView",
+      "android/support/v4/widget/ViewDragHelper": "androidx/customview/widget/ViewDragHelper",
+      "android/support/v4/widget/ViewGroupUtils": "androidx/coordinatorlayout/widget/ViewGroupUtils",
+      "android/support/v7/app/ActionBar": "androidx/appcompat/app/ActionBar",
+      "android/support/v7/app/ActionBarDrawerToggle": "androidx/appcompat/app/ActionBarDrawerToggle",
+      "android/support/v7/app/ActionBarDrawerToggleHoneycomb": "androidx/appcompat/app/ActionBarDrawerToggleHoneycomb",
+      "android/support/v7/app/AlertController": "androidx/appcompat/app/AlertController",
+      "android/support/v7/app/AlertDialog": "androidx/appcompat/app/AlertDialog",
+      "android/support/v7/app/AppCompatActivity": "androidx/appcompat/app/AppCompatActivity",
+      "android/support/v7/app/AppCompatCallback": "androidx/appcompat/app/AppCompatCallback",
+      "android/support/v7/app/AppCompatDelegate": "androidx/appcompat/app/AppCompatDelegate",
+      "android/support/v7/app/AppCompatDelegateImpl": "androidx/appcompat/app/AppCompatDelegateImpl",
+      "android/support/v7/app/AppCompatDialog": "androidx/appcompat/app/AppCompatDialog",
+      "android/support/v7/app/AppCompatDialogFragment": "androidx/appcompat/app/AppCompatDialogFragment",
+      "android/support/v7/app/AppCompatViewInflater": "androidx/appcompat/app/AppCompatViewInflater",
+      "android/support/v7/app/MediaRouteActionProvider": "androidx/mediarouter/app/MediaRouteActionProvider",
+      "android/support/v7/app/MediaRouteButton": "androidx/mediarouter/app/MediaRouteButton",
+      "android/support/v7/app/MediaRouteCastDialog": "androidx/mediarouter/app/MediaRouteCastDialog",
+      "android/support/v7/app/MediaRouteChooserDialog": "androidx/mediarouter/app/MediaRouteChooserDialog",
+      "android/support/v7/app/MediaRouteChooserDialogFragment": "androidx/mediarouter/app/MediaRouteChooserDialogFragment",
+      "android/support/v7/app/MediaRouteControllerDialog": "androidx/mediarouter/app/MediaRouteControllerDialog",
+      "android/support/v7/app/MediaRouteControllerDialogFragment": "androidx/mediarouter/app/MediaRouteControllerDialogFragment",
+      "android/support/v7/app/MediaRouteDevicePickerDialog": "androidx/mediarouter/app/MediaRouteDevicePickerDialog",
+      "android/support/v7/app/MediaRouteDialogFactory": "androidx/mediarouter/app/MediaRouteDialogFactory",
+      "android/support/v7/app/MediaRouteDialogHelper": "androidx/mediarouter/app/MediaRouteDialogHelper",
+      "android/support/v7/app/MediaRouteDiscoveryFragment": "androidx/mediarouter/app/MediaRouteDiscoveryFragment",
+      "android/support/v7/app/MediaRouteExpandCollapseButton": "androidx/mediarouter/app/MediaRouteExpandCollapseButton",
+      "android/support/v7/app/MediaRouteVolumeSlider": "androidx/mediarouter/app/MediaRouteVolumeSlider",
+      "android/support/v7/app/MediaRouterThemeHelper": "androidx/mediarouter/app/MediaRouterThemeHelper",
+      "android/support/v7/app/NavItemSelectedListener": "androidx/appcompat/app/NavItemSelectedListener",
+      "android/support/v7/app/OverlayListView": "androidx/mediarouter/app/OverlayListView",
+      "android/support/v7/app/ResourcesFlusher": "androidx/appcompat/app/ResourcesFlusher",
+      "android/support/v7/app/ToolbarActionBar": "androidx/appcompat/app/ToolbarActionBar",
+      "android/support/v7/app/TwilightCalculator": "androidx/appcompat/app/TwilightCalculator",
+      "android/support/v7/app/TwilightManager": "androidx/appcompat/app/TwilightManager",
+      "android/support/v7/app/WindowDecorActionBar": "androidx/appcompat/app/WindowDecorActionBar",
+      #"android/support/v7/appcompat/R": "androidx/appcompat/R",
+      "android/support/v7/cardview/R": "androidx/cardview/R",
+      "android/support/v7/content/res/AppCompatResources": "androidx/appcompat/content/res/AppCompatResources",
+      "android/support/v7/graphics/ColorCutQuantizer": "androidx/palette/graphics/ColorCutQuantizer",
+      "android/support/v7/graphics/Palette": "androidx/palette/graphics/Palette",
+      "android/support/v7/graphics/Target": "androidx/palette/graphics/Target",
+      "android/support/v7/graphics/drawable/AnimatedStateListDrawableCompat": "androidx/appcompat/graphics/drawable/AnimatedStateListDrawableCompat",
+      "android/support/v7/graphics/drawable/DrawableContainer": "androidx/appcompat/graphics/drawable/DrawableContainer",
+      "android/support/v7/graphics/drawable/DrawableWrapper": "androidx/appcompat/graphics/drawable/DrawableWrapper",
+      "android/support/v7/graphics/drawable/DrawerArrowDrawable": "androidx/appcompat/graphics/drawable/DrawerArrowDrawable",
+      "android/support/v7/graphics/drawable/StateListDrawable": "androidx/appcompat/graphics/drawable/StateListDrawable",
+      "android/support/v7/gridlayout/R": "androidx/gridlayout/R",
+      "android/support/v7/internal/widget/PreferenceImageView": "androidx/preference/internal/PreferenceImageView",
+      "android/support/v7/media/MediaControlIntent": "androidx/mediarouter/media/MediaControlIntent",
+      "android/support/v7/media/MediaItemMetadata": "androidx/mediarouter/media/MediaItemMetadata",
+      "android/support/v7/media/MediaItemStatus": "androidx/mediarouter/media/MediaItemStatus",
+      "android/support/v7/media/MediaRouteDescriptor": "androidx/mediarouter/media/MediaRouteDescriptor",
+      "android/support/v7/media/MediaRouteDiscoveryRequest": "androidx/mediarouter/media/MediaRouteDiscoveryRequest",
+      "android/support/v7/media/MediaRouteProvider": "androidx/mediarouter/media/MediaRouteProvider",
+      "android/support/v7/media/MediaRouteProviderDescriptor": "androidx/mediarouter/media/MediaRouteProviderDescriptor",
+      "android/support/v7/media/MediaRouteProviderProtocol": "androidx/mediarouter/media/MediaRouteProviderProtocol",
+      "android/support/v7/media/MediaRouteProviderService": "androidx/mediarouter/media/MediaRouteProviderService",
+      "android/support/v7/media/MediaRouteSelector": "androidx/mediarouter/media/MediaRouteSelector",
+      "android/support/v7/media/MediaRouter": "androidx/mediarouter/media/MediaRouter",
+      "android/support/v7/media/MediaRouterApi24": "androidx/mediarouter/media/MediaRouterApi24",
+      "android/support/v7/media/MediaRouterJellybean": "androidx/mediarouter/media/MediaRouterJellybean",
+      "android/support/v7/media/MediaRouterJellybeanMr1": "androidx/mediarouter/media/MediaRouterJellybeanMr1",
+      "android/support/v7/media/MediaRouterJellybeanMr2": "androidx/mediarouter/media/MediaRouterJellybeanMr2",
+      "android/support/v7/media/MediaSessionStatus": "androidx/mediarouter/media/MediaSessionStatus",
+      "android/support/v7/media/RegisteredMediaRouteProvider": "androidx/mediarouter/media/RegisteredMediaRouteProvider",
+      "android/support/v7/media/RegisteredMediaRouteProviderWatcher": "androidx/mediarouter/media/RegisteredMediaRouteProviderWatcher",
+      "android/support/v7/media/RemoteControlClientCompat": "androidx/mediarouter/media/RemoteControlClientCompat",
+      "android/support/v7/media/RemotePlaybackClient": "androidx/mediarouter/media/RemotePlaybackClient",
+      "android/support/v7/media/RouteMediaPlayerConnector": "androidx/mediarouter/media/RouteMediaPlayerConnector",
+      "android/support/v7/media/SystemMediaRouteProvider": "androidx/mediarouter/media/SystemMediaRouteProvider",
+      "android/support/v7/mediarouter/R": "androidx/mediarouter/R",
+      "android/support/v7/preference/AndroidResources": "androidx/preference/AndroidResources",
+      "android/support/v7/preference/CheckBoxPreference": "androidx/preference/CheckBoxPreference",
+      "android/support/v7/preference/CollapsiblePreferenceGroupController": "androidx/preference/CollapsiblePreferenceGroupController",
+      "android/support/v7/preference/DialogPreference": "androidx/preference/DialogPreference",
+      "android/support/v7/preference/DropDownPreference": "androidx/preference/DropDownPreference",
+      "android/support/v7/preference/EditTextPreference": "androidx/preference/EditTextPreference",
+      "android/support/v7/preference/EditTextPreferenceDialogFragmentCompat": "androidx/preference/EditTextPreferenceDialogFragmentCompat",
+      "android/support/v7/preference/ListPreference": "androidx/preference/ListPreference",
+      "android/support/v7/preference/ListPreferenceDialogFragmentCompat": "androidx/preference/ListPreferenceDialogFragmentCompat",
+      "android/support/v7/preference/MultiSelectListPreferenceDialogFragmentCompat": "androidx/preference/MultiSelectListPreferenceDialogFragmentCompat",
+      "android/support/v7/preference/Preference": "androidx/preference/Preference",
+      "android/support/v7/preference/PreferenceCategory": "androidx/preference/PreferenceCategory",
+      "android/support/v7/preference/PreferenceDataStore": "androidx/preference/PreferenceDataStore",
+      "android/support/v7/preference/PreferenceDialogFragmentCompat": "androidx/preference/PreferenceDialogFragmentCompat",
+      "android/support/v7/preference/PreferenceFragmentCompat": "androidx/preference/PreferenceFragmentCompat",
+      "android/support/v7/preference/PreferenceGroup": "androidx/preference/PreferenceGroup",
+      "android/support/v7/preference/PreferenceGroupAdapter": "androidx/preference/PreferenceGroupAdapter",
+      "android/support/v7/preference/PreferenceInflater": "androidx/preference/PreferenceInflater",
+      "android/support/v7/preference/PreferenceManager": "androidx/preference/PreferenceManager",
+      "android/support/v7/preference/PreferenceRecyclerViewAccessibilityDelegate": "androidx/preference/PreferenceRecyclerViewAccessibilityDelegate",
+      "android/support/v7/preference/PreferenceScreen": "androidx/preference/PreferenceScreen",
+      "android/support/v7/preference/PreferenceViewHolder": "androidx/preference/PreferenceViewHolder",
+      #"android/support/v7/preference/R": "androidx/preference/R",
+      "android/support/v7/preference/SeekBarPreference": "androidx/preference/SeekBarPreference",
+      "android/support/v7/preference/SwitchPreferenceCompat": "androidx/preference/SwitchPreferenceCompat",
+      "android/support/v7/preference/TwoStatePreference": "androidx/preference/TwoStatePreference",
+      "android/support/v7/preference/UnPressableLinearLayout": "androidx/preference/UnPressableLinearLayout",
+      "android/support/v7/preference/internal/AbstractMultiSelectListPreference": "androidx/preference/internal/AbstractMultiSelectListPreference",
+      #"android/support/v7/recyclerview/R": "androidx/recyclerview/R",
+      "android/support/v7/recyclerview/extensions/AsyncDifferConfig": "androidx/recyclerview/widget/AsyncDifferConfig",
+      "android/support/v7/recyclerview/extensions/AsyncListDiffer": "androidx/recyclerview/widget/AsyncListDiffer",
+      "android/support/v7/recyclerview/extensions/ListAdapter": "androidx/recyclerview/widget/ListAdapter",
+      "android/support/v7/text/AllCapsTransformationMethod": "androidx/appcompat/text/AllCapsTransformationMethod",
+      "android/support/v7/util/AdapterListUpdateCallback": "androidx/recyclerview/widget/AdapterListUpdateCallback",
+      "android/support/v7/util/AsyncListUtil": "androidx/recyclerview/widget/AsyncListUtil",
+      "android/support/v7/util/BatchingListUpdateCallback": "androidx/recyclerview/widget/BatchingListUpdateCallback",
+      "android/support/v7/util/DiffUtil": "androidx/recyclerview/widget/DiffUtil",
+      "android/support/v7/util/ListUpdateCallback": "androidx/recyclerview/widget/ListUpdateCallback",
+      "android/support/v7/util/MessageThreadUtil": "androidx/recyclerview/widget/MessageThreadUtil",
+      "android/support/v7/util/SortedList": "androidx/recyclerview/widget/SortedList",
+      "android/support/v7/util/ThreadUtil": "androidx/recyclerview/widget/ThreadUtil",
+      "android/support/v7/util/TileList": "androidx/recyclerview/widget/TileList",
+      "android/support/v7/view/ActionBarPolicy": "androidx/appcompat/view/ActionBarPolicy",
+      "android/support/v7/view/ActionMode": "androidx/appcompat/view/ActionMode",
+      "android/support/v7/view/CollapsibleActionView": "androidx/appcompat/view/CollapsibleActionView",
+      "android/support/v7/view/ContextThemeWrapper": "androidx/appcompat/view/ContextThemeWrapper",
+      "android/support/v7/view/StandaloneActionMode": "androidx/appcompat/view/StandaloneActionMode",
+      "android/support/v7/view/SupportActionModeWrapper": "androidx/appcompat/view/SupportActionModeWrapper",
+      "android/support/v7/view/SupportMenuInflater": "androidx/appcompat/view/SupportMenuInflater",
+      "android/support/v7/view/ViewPropertyAnimatorCompatSet": "androidx/appcompat/view/ViewPropertyAnimatorCompatSet",
+      "android/support/v7/view/WindowCallbackWrapper": "androidx/appcompat/view/WindowCallbackWrapper",
+      "android/support/v7/view/menu/ActionMenuItem": "androidx/appcompat/view/menu/ActionMenuItem",
+      "android/support/v7/view/menu/ActionMenuItemView": "androidx/appcompat/view/menu/ActionMenuItemView",
+      "android/support/v7/view/menu/BaseMenuPresenter": "androidx/appcompat/view/menu/BaseMenuPresenter",
+      "android/support/v7/view/menu/BaseMenuWrapper": "androidx/appcompat/view/menu/BaseMenuWrapper",
+      "android/support/v7/view/menu/BaseWrapper": "androidx/appcompat/view/menu/BaseWrapper",
+      "android/support/v7/view/menu/CascadingMenuPopup": "androidx/appcompat/view/menu/CascadingMenuPopup",
+      "android/support/v7/view/menu/ExpandedMenuView": "androidx/appcompat/view/menu/ExpandedMenuView",
+      "android/support/v7/view/menu/ListMenuItemView": "androidx/appcompat/view/menu/ListMenuItemView",
+      "android/support/v7/view/menu/ListMenuPresenter": "androidx/appcompat/view/menu/ListMenuPresenter",
+      "android/support/v7/view/menu/MenuAdapter": "androidx/appcompat/view/menu/MenuAdapter",
+      "android/support/v7/view/menu/MenuBuilder": "androidx/appcompat/view/menu/MenuBuilder",
+      "android/support/v7/view/menu/MenuDialogHelper": "androidx/appcompat/view/menu/MenuDialogHelper",
+      "android/support/v7/view/menu/MenuHelper": "androidx/appcompat/view/menu/MenuHelper",
+      "android/support/v7/view/menu/MenuItemImpl": "androidx/appcompat/view/menu/MenuItemImpl",
+      "android/support/v7/view/menu/MenuItemWrapperICS": "androidx/appcompat/view/menu/MenuItemWrapperICS",
+      "android/support/v7/view/menu/MenuItemWrapperJB": "androidx/appcompat/view/menu/MenuItemWrapperJB",
+      "android/support/v7/view/menu/MenuPopup": "androidx/appcompat/view/menu/MenuPopup",
+      "android/support/v7/view/menu/MenuPopupHelper": "androidx/appcompat/view/menu/MenuPopupHelper",
+      "android/support/v7/view/menu/MenuPresenter": "androidx/appcompat/view/menu/MenuPresenter",
+      "android/support/v7/view/menu/MenuView": "androidx/appcompat/view/menu/MenuView",
+      "android/support/v7/view/menu/MenuWrapperFactory": "androidx/appcompat/view/menu/MenuWrapperFactory",
+      "android/support/v7/view/menu/MenuWrapperICS": "androidx/appcompat/view/menu/MenuWrapperICS",
+      "android/support/v7/view/menu/ShowableListMenu": "androidx/appcompat/view/menu/ShowableListMenu",
+      "android/support/v7/view/menu/StandardMenuPopup": "androidx/appcompat/view/menu/StandardMenuPopup",
+      "android/support/v7/view/menu/SubMenuBuilder": "androidx/appcompat/view/menu/SubMenuBuilder",
+      "android/support/v7/view/menu/SubMenuWrapperICS": "androidx/appcompat/view/menu/SubMenuWrapperICS",
+      "android/support/v7/widget/AbsActionBarView": "androidx/appcompat/widget/AbsActionBarView",
+      "android/support/v7/widget/ActionBarBackgroundDrawable": "androidx/appcompat/widget/ActionBarBackgroundDrawable",
+      "android/support/v7/widget/ActionBarContainer": "androidx/appcompat/widget/ActionBarContainer",
+      "android/support/v7/widget/ActionBarContextView": "androidx/appcompat/widget/ActionBarContextView",
+      "android/support/v7/widget/ActionBarOverlayLayout": "androidx/appcompat/widget/ActionBarOverlayLayout",
+      "android/support/v7/widget/ActionMenuPresenter": "androidx/appcompat/widget/ActionMenuPresenter",
+      "android/support/v7/widget/ActionMenuView": "androidx/appcompat/widget/ActionMenuView",
+      "android/support/v7/widget/ActivityChooserModel": "androidx/appcompat/widget/ActivityChooserModel",
+      "android/support/v7/widget/ActivityChooserView": "androidx/appcompat/widget/ActivityChooserView",
+      "android/support/v7/widget/AdapterHelper": "androidx/recyclerview/widget/AdapterHelper",
+      "android/support/v7/widget/AlertDialogLayout": "androidx/appcompat/widget/AlertDialogLayout",
+      "android/support/v7/widget/AppCompatAutoCompleteTextView": "androidx/appcompat/widget/AppCompatAutoCompleteTextView",
+      "android/support/v7/widget/AppCompatBackgroundHelper": "androidx/appcompat/widget/AppCompatBackgroundHelper",
+      "android/support/v7/widget/AppCompatButton": "androidx/appcompat/widget/AppCompatButton",
+      "android/support/v7/widget/AppCompatCheckBox": "androidx/appcompat/widget/AppCompatCheckBox",
+      "android/support/v7/widget/AppCompatCheckedTextView": "androidx/appcompat/widget/AppCompatCheckedTextView",
+      "android/support/v7/widget/AppCompatCompoundButtonHelper": "androidx/appcompat/widget/AppCompatCompoundButtonHelper",
+      "android/support/v7/widget/AppCompatDrawableManager": "androidx/appcompat/widget/AppCompatDrawableManager",
+      "android/support/v7/widget/AppCompatEditText": "androidx/appcompat/widget/AppCompatEditText",
+      "android/support/v7/widget/AppCompatHintHelper": "androidx/appcompat/widget/AppCompatHintHelper",
+      "android/support/v7/widget/AppCompatImageButton": "androidx/appcompat/widget/AppCompatImageButton",
+      "android/support/v7/widget/AppCompatImageHelper": "androidx/appcompat/widget/AppCompatImageHelper",
+      "android/support/v7/widget/AppCompatImageView": "androidx/appcompat/widget/AppCompatImageView",
+      "android/support/v7/widget/AppCompatMultiAutoCompleteTextView": "androidx/appcompat/widget/AppCompatMultiAutoCompleteTextView",
+      "android/support/v7/widget/AppCompatPopupWindow": "androidx/appcompat/widget/AppCompatPopupWindow",
+      "android/support/v7/widget/AppCompatProgressBarHelper": "androidx/appcompat/widget/AppCompatProgressBarHelper",
+      "android/support/v7/widget/AppCompatRadioButton": "androidx/appcompat/widget/AppCompatRadioButton",
+      "android/support/v7/widget/AppCompatRatingBar": "androidx/appcompat/widget/AppCompatRatingBar",
+      "android/support/v7/widget/AppCompatSeekBar": "androidx/appcompat/widget/AppCompatSeekBar",
+      "android/support/v7/widget/AppCompatSeekBarHelper": "androidx/appcompat/widget/AppCompatSeekBarHelper",
+      "android/support/v7/widget/AppCompatSpinner": "androidx/appcompat/widget/AppCompatSpinner",
+      "android/support/v7/widget/AppCompatTextHelper": "androidx/appcompat/widget/AppCompatTextHelper",
+      "android/support/v7/widget/AppCompatTextView": "androidx/appcompat/widget/AppCompatTextView",
+      "android/support/v7/widget/AppCompatTextViewAutoSizeHelper": "androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper",
+      "android/support/v7/widget/ButtonBarLayout": "androidx/appcompat/widget/ButtonBarLayout",
+      "android/support/v7/widget/CardView": "androidx/cardview/widget/CardView",
+      "android/support/v7/widget/CardViewApi17Impl": "androidx/cardview/widget/CardViewApi17Impl",
+      "android/support/v7/widget/CardViewApi21Impl": "androidx/cardview/widget/CardViewApi21Impl",
+      "android/support/v7/widget/CardViewBaseImpl": "androidx/cardview/widget/CardViewBaseImpl",
+      "android/support/v7/widget/CardViewDelegate": "androidx/cardview/widget/CardViewDelegate",
+      "android/support/v7/widget/CardViewImpl": "androidx/cardview/widget/CardViewImpl",
+      "android/support/v7/widget/ChildHelper": "androidx/recyclerview/widget/ChildHelper",
+      "android/support/v7/widget/ContentFrameLayout": "androidx/appcompat/widget/ContentFrameLayout",
+      "android/support/v7/widget/DecorContentParent": "androidx/appcompat/widget/DecorContentParent",
+      "android/support/v7/widget/DecorToolbar": "androidx/appcompat/widget/DecorToolbar",
+      "android/support/v7/widget/DefaultItemAnimator": "androidx/recyclerview/widget/DefaultItemAnimator",
+      "android/support/v7/widget/DialogTitle": "androidx/appcompat/widget/DialogTitle",
+      "android/support/v7/widget/DividerItemDecoration": "androidx/recyclerview/widget/DividerItemDecoration",
+      "android/support/v7/widget/DrawableUtils": "androidx/appcompat/widget/DrawableUtils",
+      "android/support/v7/widget/DropDownListView": "androidx/appcompat/widget/DropDownListView",
+      "android/support/v7/widget/FastScroller": "androidx/recyclerview/widget/FastScroller",
+      "android/support/v7/widget/FitWindowsFrameLayout": "androidx/appcompat/widget/FitWindowsFrameLayout",
+      "android/support/v7/widget/FitWindowsLinearLayout": "androidx/appcompat/widget/FitWindowsLinearLayout",
+      "android/support/v7/widget/FitWindowsViewGroup": "androidx/appcompat/widget/FitWindowsViewGroup",
+      "android/support/v7/widget/ForwardingListener": "androidx/appcompat/widget/ForwardingListener",
+      "android/support/v7/widget/GapWorker": "androidx/recyclerview/widget/GapWorker",
+      "android/support/v7/widget/GridLayout": "androidx/gridlayout/widget/GridLayout",
+      "android/support/v7/widget/GridLayoutManager": "androidx/recyclerview/widget/GridLayoutManager",
+      "android/support/v7/widget/LayoutState": "androidx/recyclerview/widget/LayoutState",
+      "android/support/v7/widget/LinearLayoutCompat": "androidx/appcompat/widget/LinearLayoutCompat",
+      "android/support/v7/widget/LinearLayoutManager": "androidx/recyclerview/widget/LinearLayoutManager",
+      "android/support/v7/widget/LinearSmoothScroller": "androidx/recyclerview/widget/LinearSmoothScroller",
+      "android/support/v7/widget/LinearSnapHelper": "androidx/recyclerview/widget/LinearSnapHelper",
+      "android/support/v7/widget/ListPopupWindow": "androidx/appcompat/widget/ListPopupWindow",
+      "android/support/v7/widget/MenuItemHoverListener": "androidx/appcompat/widget/MenuItemHoverListener",
+      "android/support/v7/widget/MenuPopupWindow": "androidx/appcompat/widget/MenuPopupWindow",
+      "android/support/v7/widget/OpReorderer": "androidx/recyclerview/widget/OpReorderer",
+      "android/support/v7/widget/OrientationHelper": "androidx/recyclerview/widget/OrientationHelper",
+      "android/support/v7/widget/PagerSnapHelper": "androidx/recyclerview/widget/PagerSnapHelper",
+      "android/support/v7/widget/PopupMenu": "androidx/appcompat/widget/PopupMenu",
+      "android/support/v7/widget/RecyclerView": "androidx/recyclerview/widget/RecyclerView",
+      "android/support/v7/widget/RecyclerViewAccessibilityDelegate": "androidx/recyclerview/widget/RecyclerViewAccessibilityDelegate",
+      "android/support/v7/widget/ResourcesWrapper": "androidx/appcompat/widget/ResourcesWrapper",
+      "android/support/v7/widget/RoundRectDrawable": "androidx/cardview/widget/RoundRectDrawable",
+      "android/support/v7/widget/RoundRectDrawableWithShadow": "androidx/cardview/widget/RoundRectDrawableWithShadow",
+      "android/support/v7/widget/RtlSpacingHelper": "androidx/appcompat/widget/RtlSpacingHelper",
+      "android/support/v7/widget/ScrollbarHelper": "androidx/recyclerview/widget/ScrollbarHelper",
+      "android/support/v7/widget/ScrollingTabContainerView": "androidx/appcompat/widget/ScrollingTabContainerView",
+      "android/support/v7/widget/SearchView": "androidx/appcompat/widget/SearchView",
+      "android/support/v7/widget/ShareActionProvider": "androidx/appcompat/widget/ShareActionProvider",
+      "android/support/v7/widget/SimpleItemAnimator": "androidx/recyclerview/widget/SimpleItemAnimator",
+      "android/support/v7/widget/SnapHelper": "androidx/recyclerview/widget/SnapHelper",
+      "android/support/v7/widget/StaggeredGridLayoutManager": "androidx/recyclerview/widget/StaggeredGridLayoutManager",
+      "android/support/v7/widget/SuggestionsAdapter": "androidx/appcompat/widget/SuggestionsAdapter",
+      "android/support/v7/widget/SwitchCompat": "androidx/appcompat/widget/SwitchCompat",
+      "android/support/v7/widget/ThemeUtils": "androidx/appcompat/widget/ThemeUtils",
+      "android/support/v7/widget/ThemedSpinnerAdapter": "androidx/appcompat/widget/ThemedSpinnerAdapter",
+      "android/support/v7/widget/TintContextWrapper": "androidx/appcompat/widget/TintContextWrapper",
+      "android/support/v7/widget/TintInfo": "androidx/appcompat/widget/TintInfo",
+      "android/support/v7/widget/TintResources": "androidx/appcompat/widget/TintResources",
+      "android/support/v7/widget/TintTypedArray": "androidx/appcompat/widget/TintTypedArray",
+      "android/support/v7/widget/Toolbar": "androidx/appcompat/widget/Toolbar",
+      "android/support/v7/widget/ToolbarWidgetWrapper": "androidx/appcompat/widget/ToolbarWidgetWrapper",
+      "android/support/v7/widget/TooltipCompat": "androidx/appcompat/widget/TooltipCompat",
+      "android/support/v7/widget/TooltipCompatHandler": "androidx/appcompat/widget/TooltipCompatHandler",
+      "android/support/v7/widget/TooltipPopup": "androidx/appcompat/widget/TooltipPopup",
+      "android/support/v7/widget/VectorEnabledTintResources": "androidx/appcompat/widget/VectorEnabledTintResources",
+      "android/support/v7/widget/ViewBoundsCheck": "androidx/recyclerview/widget/ViewBoundsCheck",
+      "android/support/v7/widget/ViewInfoStore": "androidx/recyclerview/widget/ViewInfoStore",
+      "android/support/v7/widget/ViewStubCompat": "androidx/appcompat/widget/ViewStubCompat",
+      "android/support/v7/widget/ViewUtils": "androidx/appcompat/widget/ViewUtils",
+      "android/support/v7/widget/WithHint": "androidx/appcompat/widget/WithHint",
+      "android/support/v7/widget/helper/ItemTouchHelper": "androidx/recyclerview/widget/ItemTouchHelper",
+      "android/support/v7/widget/helper/ItemTouchUIUtil": "androidx/recyclerview/widget/ItemTouchUIUtil",
+      "android/support/v7/widget/helper/ItemTouchUIUtilImpl": "androidx/recyclerview/widget/ItemTouchUIUtilImpl",
+      "android/support/v7/widget/util/SortedListAdapterCallback": "androidx/recyclerview/widget/SortedListAdapterCallback",
+      "android/support/wear/R": "androidx/wear/R",
+      "android/support/wear/activity/ConfirmationActivity": "androidx/wear/activity/ConfirmationActivity",
+      "android/support/wear/ambient/AmbientDelegate": "androidx/wear/ambient/AmbientDelegate",
+      "android/support/wear/ambient/AmbientMode": "androidx/wear/ambient/AmbientMode",
+      "android/support/wear/ambient/AmbientModeSupport": "androidx/wear/ambient/AmbientModeSupport",
+      "android/support/wear/ambient/SharedLibraryVersion": "androidx/wear/ambient/SharedLibraryVersion",
+      "android/support/wear/ambient/WearableControllerProvider": "androidx/wear/ambient/WearableControllerProvider",
+      "android/support/wear/internal/widget/ResourcesUtil": "androidx/wear/internal/widget/ResourcesUtil",
+      "android/support/wear/internal/widget/drawer/MultiPagePresenter": "androidx/wear/internal/widget/drawer/MultiPagePresenter",
+      "android/support/wear/internal/widget/drawer/MultiPageUi": "androidx/wear/internal/widget/drawer/MultiPageUi",
+      "android/support/wear/internal/widget/drawer/SinglePagePresenter": "androidx/wear/internal/widget/drawer/SinglePagePresenter",
+      "android/support/wear/internal/widget/drawer/SinglePageUi": "androidx/wear/internal/widget/drawer/SinglePageUi",
+      "android/support/wear/internal/widget/drawer/WearableNavigationDrawerPresenter": "androidx/wear/internal/widget/drawer/WearableNavigationDrawerPresenter",
+      "android/support/wear/utils/MetadataConstants": "androidx/wear/utils/MetadataConstants",
+      "android/support/wear/widget/BezierSCurveInterpolator": "androidx/wear/widget/BezierSCurveInterpolator",
+      "android/support/wear/widget/BoxInsetLayout": "androidx/wear/widget/BoxInsetLayout",
+      "android/support/wear/widget/CircledImageView": "androidx/wear/widget/CircledImageView",
+      "android/support/wear/widget/CircularProgressLayout": "androidx/wear/widget/CircularProgressLayout",
+      "android/support/wear/widget/CircularProgressLayoutController": "androidx/wear/widget/CircularProgressLayoutController",
+      "android/support/wear/widget/ConfirmationOverlay": "androidx/wear/widget/ConfirmationOverlay",
+      "android/support/wear/widget/CurvingLayoutCallback": "androidx/wear/widget/CurvingLayoutCallback",
+      "android/support/wear/widget/ProgressDrawable": "androidx/wear/widget/ProgressDrawable",
+      "android/support/wear/widget/ResourcesUtil": "androidx/wear/widget/ResourcesUtil",
+      "android/support/wear/widget/RoundedDrawable": "androidx/wear/widget/RoundedDrawable",
+      "android/support/wear/widget/ScrollManager": "androidx/wear/widget/ScrollManager",
+      "android/support/wear/widget/SimpleAnimatorListener": "androidx/wear/widget/SimpleAnimatorListener",
+      "android/support/wear/widget/SwipeDismissFrameLayout": "androidx/wear/widget/SwipeDismissFrameLayout",
+      "android/support/wear/widget/SwipeDismissLayout": "androidx/wear/widget/SwipeDismissLayout",
+      "android/support/wear/widget/WearableLinearLayoutManager": "androidx/wear/widget/WearableLinearLayoutManager",
+      "android/support/wear/widget/WearableRecyclerView": "androidx/wear/widget/WearableRecyclerView",
+      "android/support/wear/widget/drawer/AbsListViewFlingWatcher": "androidx/wear/widget/drawer/AbsListViewFlingWatcher",
+      "android/support/wear/widget/drawer/FlingWatcherFactory": "androidx/wear/widget/drawer/FlingWatcherFactory",
+      "android/support/wear/widget/drawer/NestedScrollViewFlingWatcher": "androidx/wear/widget/drawer/NestedScrollViewFlingWatcher",
+      "android/support/wear/widget/drawer/PageIndicatorView": "androidx/wear/widget/drawer/PageIndicatorView",
+      "android/support/wear/widget/drawer/RecyclerViewFlingWatcher": "androidx/wear/widget/drawer/RecyclerViewFlingWatcher",
+      "android/support/wear/widget/drawer/ScrollViewFlingWatcher": "androidx/wear/widget/drawer/ScrollViewFlingWatcher",
+      "android/support/wear/widget/drawer/WearableActionDrawerMenu": "androidx/wear/widget/drawer/WearableActionDrawerMenu",
+      "android/support/wear/widget/drawer/WearableActionDrawerView": "androidx/wear/widget/drawer/WearableActionDrawerView",
+      "android/support/wear/widget/drawer/WearableDrawerController": "androidx/wear/widget/drawer/WearableDrawerController",
+      "android/support/wear/widget/drawer/WearableDrawerLayout": "androidx/wear/widget/drawer/WearableDrawerLayout",
+      "android/support/wear/widget/drawer/WearableDrawerView": "androidx/wear/widget/drawer/WearableDrawerView",
+      "android/support/wear/widget/drawer/WearableNavigationDrawerView": "androidx/wear/widget/drawer/WearableNavigationDrawerView",
+      "com/android/databinding/library/baseAdapters/DataBinderMapperImpl": "androidx/databinding/library/baseAdapters/DataBinderMapperImpl",
+      "com/android/databinding/library/baseAdapters/R": "androidx/databinding/library/baseAdapters/R"
+    }
+  },
+  "proGuardMap": {
+    "rules": {
+      "androidx/{any}Parcelizer": [
+        "androidx/{any}Parcelizer"
+      ],
+      "android/support/{any}": [
+        "android/support/{any}",
+        "androidx/{any}"
+      ],
+      "android/support{any}": [
+        "android/support{any}",
+        "androidx{any}"
+      ],
+      "android/support/v*/{any}": [
+        "android/support/**",
+        "androidx/{any}"
+      ],
+      "android/support/v4/{any}": [
+        "android/support/v4/{any}",
+        "androidx/{any}"
+      ],
+      "android/support/v4/view/{any}": [
+        "androidx/customview/view/{any}",
+        "androidx/core/view/{any}",
+        "androidx/asynclayoutinflater/{any}",
+        "androidx/viewpager/{any}",
+        "androidx/interpolator/{any}"
+      ],
+      "android/support/v4/media/{any}": [
+        "androidx/media/{any}",
+        "android/support/v4/{any}"
+      ],
+      "android/support/v7/{any}": [
+        "androidx/appcompat/{any}",
+        "androidx/mediarouter/{any}",
+        "androidx/cardview/{any}",
+        "androidx/palette/{any}",
+        "androidx/gridlayout/{any}",
+        "androidx/preference/{any}"
+      ],
+      "android/support/v7/widget/{any}": [
+        "androidx/appcompat/widget/{any}",
+        "androidx/recyclerview/widget/{any}",
+        "androidx/cardview/widget/{any}"
+      ],
+      "android/support/v7/preference/{any}": [
+        "androidx/preference/{any}"
+      ],
+      "android/support/v14/preference/{any}": [
+        "androidx/preference/{any}"
+      ],
+      "android/support/v17/preference/{any}": [
+        "androidx/leanback/preference/{any}"
+      ],
+      "android/support/v17/leanback/{any}": [
+        "androidx/leanback/{any}"
+      ],
+      "android/support/design/widget/{any}": [
+        "androidx/coordinatorlayout/widget/{any}",
+        "com/google/android/material/**"
+      ],
+      "android/support/design/{any}": [
+        "androidx/coordinatorlayout/**",
+        "com/google/android/material/**"
+      ],
+      "android/support/design/internal/{any}": [
+        "com/google/android/material/{any}"
+      ],
+      "android/support/car/{any}": [
+        "androidx/car/{any}"
+      ],
+      "android/arch/persistence/room/paging/{any}": [
+        "androidx/room/paging/{any}"
+      ],
+      "android/support/v7/internal/widget/ActionBarView${any}": [
+        "androidx/appcompat/widget/AbsActionBarView${any}"
+      ],
+      "android/support/v4/view/MenuItemCompat/*": [
+        "androidx/core/view/MenuItemCompat/*"
+      ],
+      "Android{any}": [
+        "Android{any}"
+      ]
+    }
+  },
+  "stringsMap": {
+    "types": {
+      "android/support/v13/view/inputmethod/EditorInfoCompat/CONTENT_MIME_TYPES": "android/support/v13/view/inputmethod/EditorInfoCompat/CONTENT_MIME_TYPES",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/COMMIT_CONTENT": "android/support/v13/view/inputmethod/InputConnectionCompat/COMMIT_CONTENT",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_DESCRIPTION": "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_DESCRIPTION",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_FLAGS": "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_FLAGS",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_LINK_URI": "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_LINK_URI",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_OPTS": "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_OPTS",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_RESULT_RECEIVER": "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_RESULT_RECEIVER",
+      "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_URI": "android/support/v13/view/inputmethod/InputConnectionCompat/CONTENT_URI",
+      "android/support/v4/app/EXTRA_CALLING_ACTIVITY": "android/support/v4/app/EXTRA_CALLING_ACTIVITY",
+      "android/support/v4/app/EXTRA_CALLING_PACKAGE": "android/support/v4/app/EXTRA_CALLING_PACKAGE",
+      "androidx/contentpager/content/wakelockid": "androidx/contentpager/content/wakelockid",
+      "androidx/core/app/EXTRA_CALLING_ACTIVITY": "androidx/core/app/EXTRA_CALLING_ACTIVITY",
+      "androidx/core/app/EXTRA_CALLING_PACKAGE": "androidx/core/app/EXTRA_CALLING_PACKAGE",
+      "androidx/core/view/inputmethod/EditorInfoCompat/CONTENT_MIME_TYPES": "androidx/core/view/inputmethod/EditorInfoCompat/CONTENT_MIME_TYPES",
+      "androidx/support/content/wakelockid": "androidx/support/content/wakelockid"
+    }
+  }
+}
+
diff --git a/third_party/jetifier_standalone/lib/jetifier-standalone.jar b/third_party/jetifier_standalone/lib/jetifier-standalone.jar
new file mode 100644
index 0000000..99f39168e
--- /dev/null
+++ b/third_party/jetifier_standalone/lib/jetifier-standalone.jar
Binary files differ
diff --git a/third_party/libvpx/README.chromium b/third_party/libvpx/README.chromium
index df006b2..8bc5dcf 100644
--- a/third_party/libvpx/README.chromium
+++ b/third_party/libvpx/README.chromium
@@ -5,9 +5,9 @@
 License File: source/libvpx/LICENSE
 Security Critical: yes
 
-Date: Thursday December 19 2019
+Date: Wednesday January 22 2020
 Branch: master
-Commit: 50d1a4aa725fbc78ee89ffde5e83b4ee4fe4893e
+Commit: 7763c888e0c0a0c7b0a25746b11fdc3d53da4f70
 
 Description:
 Contains the sources used to compile libvpx binaries used by Google Chrome and
diff --git a/third_party/libvpx/libvpx_srcs.gni b/third_party/libvpx/libvpx_srcs.gni
index c2d8c198..d09274d 100644
--- a/third_party/libvpx/libvpx_srcs.gni
+++ b/third_party/libvpx/libvpx_srcs.gni
@@ -338,6 +338,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -810,6 +811,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -1268,6 +1270,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -1667,6 +1670,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -2033,6 +2037,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -2508,6 +2513,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -2923,6 +2929,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -3361,6 +3368,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -3698,6 +3706,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -4034,6 +4043,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
@@ -4370,6 +4380,7 @@
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/mem_ops_aligned.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/msvc.h",
+  "//third_party/libvpx/source/libvpx/vpx_ports/static_assert.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/system_state.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_once.h",
   "//third_party/libvpx/source/libvpx/vpx_ports/vpx_timer.h",
diff --git a/third_party/libvpx/source/config/vpx_version.h b/third_party/libvpx/source/config/vpx_version.h
index fe9ad9e..80a3f5f 100644
--- a/third_party/libvpx/source/config/vpx_version.h
+++ b/third_party/libvpx/source/config/vpx_version.h
@@ -2,8 +2,8 @@
 #define VERSION_MAJOR 1
 #define VERSION_MINOR 8
 #define VERSION_PATCH 2
-#define VERSION_EXTRA "23-g50d1a4aa7"
+#define VERSION_EXTRA "44-g7763c888e"
 #define VERSION_PACKED \
   ((VERSION_MAJOR << 16) | (VERSION_MINOR << 8) | (VERSION_PATCH))
-#define VERSION_STRING_NOSP "v1.8.2-23-g50d1a4aa7"
-#define VERSION_STRING " v1.8.2-23-g50d1a4aa7"
+#define VERSION_STRING_NOSP "v1.8.2-44-g7763c888e"
+#define VERSION_STRING " v1.8.2-44-g7763c888e"
diff --git a/third_party/ow2_asm/BUILD.gn b/third_party/ow2_asm/BUILD.gn
index b687d58..b7a552b 100644
--- a/third_party/ow2_asm/BUILD.gn
+++ b/third_party/ow2_asm/BUILD.gn
@@ -14,32 +14,24 @@
   # Not "testonly" because //build/android/bytecode:java_bytecode_rewriter
   # depends on it.
   jar_path = "lib/asm-tree.jar"
-  deps = [
-    ":asm_java",
-  ]
+  deps = [ ":asm_java" ]
 }
 
 java_prebuilt("asm_analysis_java") {
   testonly = true
   jar_path = "lib/asm-analysis.jar"
-  deps = [
-    ":asm_tree_java",
-  ]
+  deps = [ ":asm_tree_java" ]
 }
 
 java_prebuilt("asm_commons_java") {
-  testonly = true
+  # Not "testonly" because of com_android_tools_build_jetifier_jetifier_processor
   jar_path = "lib/asm-commons.jar"
-  deps = [
-    ":asm_tree_java",
-  ]
+  deps = [ ":asm_tree_java" ]
 }
 
 java_prebuilt("asm_util_java") {
   # Not "testonly" because //build/android/bytecode:java_bytecode_rewriter
   # depends on it.
   jar_path = "lib/asm-util.jar"
-  deps = [
-    ":asm_tree_java",
-  ]
+  deps = [ ":asm_tree_java" ]
 }
diff --git a/tools/android/avd/proto/generic_android23.textpb b/tools/android/avd/proto/generic_android23.textpb
index 42934c6..8d3c2ca6 100644
--- a/tools/android/avd/proto/generic_android23.textpb
+++ b/tools/android/avd/proto/generic_android23.textpb
@@ -12,7 +12,7 @@
 
 system_image_package {
   package_name: "chromium/third_party/android_sdk/public/system-images/android-23/google_apis/x86"
-  version: "npuCAATVbhmywZwGhI3tMoECTrBBzzyJLpjAPXqtmYYC"
+  version: "Pum5ZEuBD0Xk8kVS2iM_UXCwIYqNs-d6i8cvNDN0ShIC"
   dest_path: ".emulator_sdk"
 }
 system_image_name: "system-images;android-23;google_apis;x86"
diff --git a/tools/android/avd/proto/generic_android28.textpb b/tools/android/avd/proto/generic_android28.textpb
index c07688c..63a81a6 100644
--- a/tools/android/avd/proto/generic_android28.textpb
+++ b/tools/android/avd/proto/generic_android28.textpb
@@ -19,7 +19,7 @@
 
 avd_package {
   package_name: "chromium/third_party/android_sdk/public/avds/android-28/google_apis/x86"
-  version: "7IDZ921RpMVq_skfseSe9xXeHKIEOpKYyXHGfrhhEogC"
+  version: "GyC-UP9Z4qNvUXo0_FVhYLQws2939BYUXVb1QEsiOUYC"
   dest_path: ".android"
 }
 avd_name: "android_28_google_apis_x86"
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index a39d6f4..1b6ce1f 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -2971,7 +2971,7 @@
   </summary>
   <int value="0" label="Closed by user"/>
   <int value="1" label="Notification's body clicked"/>
-  <int value="2" label="Notification's button clicked"/>
+  <int value="2" label="(Obsolete) Notification's button clicked"/>
 </enum>
 
 <enum name="AshGestureActionType">
@@ -12440,6 +12440,12 @@
   <int value="3" label="UserPaused"/>
 </enum>
 
+<enum name="CrossOriginCreativeStatus">
+  <int value="0" label="Ad Creative Origin indeterminable"/>
+  <int value="1" label="Main Frame Origin same as Ad Creative"/>
+  <int value="2" label="Main Frame Origin differs from Ad Creative"/>
+</enum>
+
 <enum name="CrossOriginProtectionDecision">
   <int value="0" label="kAllow"/>
   <int value="1" label="kBlock"/>
@@ -57778,35 +57784,6 @@
   <int value="6" label="PRIVACY_SECURITY_KEYS"/>
   <int value="7" label="PRIVACY_SITE_SETTINGS"/>
   <int value="8" label="PRIVACY_CLEAR_BROWSING_DATA"/>
-  <int value="9" label="PRIVACY_SAFE_BROWSING"/>
-  <int value="10" label="PRIVACY_PASSWORD_CHECK"/>
-  <int value="11" label="PRIVACY_IMPROVE_SECUITRY"/>
-  <int value="12" label="PRIVACY_SITE_SETTINGS_COOKIES"/>
-  <int value="13" label="PRIVACY_SITE_SETTINGS_LOCATION"/>
-  <int value="14" label="PRIVACY_SITE_SETTINGS_CAMERA"/>
-  <int value="15" label="PRIVACY_SITE_SETTINGS_MICROPHONE"/>
-  <int value="16" label="PRIVACY_SITE_SETTINGS_SENSORS"/>
-  <int value="17" label="PRIVACY_SITE_SETTINGS_NOTIFICATIONS"/>
-  <int value="18" label="PRIVACY_SITE_SETTINGS_JAVASCRIPT"/>
-  <int value="19" label="PRIVACY_SITE_SETTINGS_FLASH"/>
-  <int value="20" label="PRIVACY_SITE_SETTINGS_IMAGES"/>
-  <int value="21" label="PRIVACY_SITE_SETTINGS_POPUPS"/>
-  <int value="22" label="PRIVACY_SITE_SETTINGS_ADS"/>
-  <int value="23" label="PRIVACY_SITE_SETTINGS_BACKGROUND_SYNC"/>
-  <int value="24" label="PRIVACY_SITE_SETTINGS_SOUND"/>
-  <int value="25" label="PRIVACY_SITE_SETTINGS_AUTOMATIC_DOWNLOADS"/>
-  <int value="26" label="PRIVACY_SITE_SETTINGS_UNSANDBOXED_PLUGINS"/>
-  <int value="27" label="PRIVACY_SITE_SETTINGS_HANDLERS"/>
-  <int value="28" label="PRIVACY_SITE_SETTINGS_MIDI_DEVICES"/>
-  <int value="29" label="PRIVACY_SITE_SETTINGS_ZOOM_LEVELS"/>
-  <int value="30" label="PRIVACY_SITE_SETTINGS_USB_DEVICES"/>
-  <int value="31" label="PRIVACY_SITE_SETTINGS_SERIAL_PORTS"/>
-  <int value="32" label="PRIVACY_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE"/>
-  <int value="33" label="PRIVACY_SITE_SETTINGS_PDF_DOCUMENTS"/>
-  <int value="34" label="PRIVACY_SITE_SETTINGS_PROTECTED_CONTENT"/>
-  <int value="35" label="PRIVACY_SITE_SETTINGS_CLIPBOARD"/>
-  <int value="36" label="PRIVACY_SITE_SETTINGS_PAYMENT_HANDLER"/>
-  <int value="37" label="PRIVACY_SITE_SETTINGS_MIXEDSCRIPT"/>
 </enum>
 
 <enum name="SettingsResetPromptConfigError">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 45e87bbc..9412c2f8 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -11922,6 +11922,18 @@
   </summary>
 </histogram>
 
+<histogram name="Autofill.BetterAuth.UserVerifiabilityCheckDuration" units="ms"
+    expires_after="2020-08-31">
+  <owner>jsaul@google.com</owner>
+  <owner>manasverma@google.com</owner>
+  <owner>autofill-auth-team@google.com</owner>
+  <summary>
+    Tracks how long it takes to check that the user is verifiable through
+    WebAuthn's IsUserVerifiablePlatformAuthenticatorAvailable() call. This check
+    is done before deciding to make a GetDetailsForGetRealPan call to Payments.
+  </summary>
+</histogram>
+
 <histogram base="true" name="Autofill.BetterAuth.WebauthnResult"
     enum="AutofillCreditCardWebauthnResultMetric" expires_after="2020-12-15">
   <owner>jsaul@google.com</owner>
@@ -26105,6 +26117,10 @@
 
 <histogram name="ContentSuggestions.Feed.ManageInterestsOpened" units="index"
     expires_after="2020-10-01">
+  <obsolete>
+    This implementation is incorrect and we are now using
+    NewTabPage.ActionAndroid2 instead. Marked obsolete in 01-2020
+  </obsolete>
   <owner>carlosk@chromium.org</owner>
   <owner>freedjm@chromium.org</owner>
   <owner>feed@chromium.org</owner>
@@ -38556,6 +38572,9 @@
 
 <histogram name="Download.DangerousDownloadValidated"
     enum="DownloadItem.DangerType" expires_after="M81">
+  <obsolete>
+    Removed in 01/2020.
+  </obsolete>
   <owner>dtrainor@chromium.org</owner>
   <owner>felt@chromium.org</owner>
   <summary>
@@ -38566,6 +38585,9 @@
 
 <histogram name="Download.DangerousFile.DangerousDownloadValidated"
     enum="DownloadItem.DangerousFileType" expires_after="M81">
+  <obsolete>
+    Removed in 01/2020.
+  </obsolete>
   <owner>dtrainor@chromium.org</owner>
   <owner>felt@chromium.org</owner>
   <summary>
@@ -70329,6 +70351,18 @@
   </summary>
 </histogram>
 
+<histogram name="Media.PlatformVideoDecoding.Decode" units="ms"
+    expires_after="never">
+<!-- expires-never: used by ChromeOS test infrastructure -->
+
+  <owner>mcasas@chromium.org</owner>
+  <owner>chromeos-gfx@chromium.org</owner>
+  <summary>
+    Time for the platform-specific (set of) video decode acceleration command(s)
+    to be executed. Output once per decode request submit.
+  </summary>
+</histogram>
+
 <histogram name="Media.PlaybackPower.BatteryDelta"
     enum="MediaPlaybackPowerTypes" expires_after="2020-05-31">
   <owner>liberato@chromium.org</owner>
@@ -104977,6 +105011,22 @@
   </summary>
 </histogram>
 
+<histogram
+    name="PageLoad.Clients.Ads.FrameCounts.AdFrames.PerFrame.CreativeOriginStatus"
+    enum="CrossOriginCreativeStatus" expires_after="2020-06-30">
+  <owner>cammie@chromium.org</owner>
+  <owner>jkarlin@chromium.org</owner>
+  <summary>
+    For each identified ad frame, whether the origin of the ad creative frame
+    matches or differs from the origin of the main frame.
+
+    The ad creative frame is heuristically determined, from among an identified
+    ad frame and all of its children, as the first of these frames to record a
+    First Contentful Paint. If no FCP is recorded, the creative origin status is
+    marked as indeterminate.
+  </summary>
+</histogram>
+
 <histogram name="PageLoad.Clients.Ads.FrameCounts.AdFrames.PerFrame.Visibility"
     enum="AdFrameVisibility" expires_after="2020-01-23">
   <obsolete>
diff --git a/tools/perf/cli_tools/update_wpr/update_wpr.py b/tools/perf/cli_tools/update_wpr/update_wpr.py
index a6cf876..ca01fd5 100644
--- a/tools/perf/cli_tools/update_wpr/update_wpr.py
+++ b/tools/perf/cli_tools/update_wpr/update_wpr.py
@@ -280,12 +280,11 @@
 
 
     args.extend([
-      '--output-format=html', '--show-stdout',
-      '--reset-results', '--story-filter={story}',
-      '--browser-logging-verbosity=verbose',
-      '--pageset-repeat=%s' % self.repeat,
-      '--output-dir', self.output_dir,
-      '--also-run-disabled-tests'])
+        '--output-format=html', '--show-stdout', '--reset-results',
+        '--story-filter={story}', '--browser-logging-verbosity=verbose',
+        '--pageset-repeat=%s' % self.repeat, '--output-dir', self.output_dir,
+        '--also-run-disabled-tests', '--legacy-json-trace-format'
+    ])
     if live:
       args.append('--use-live-sites')
     out_file = self._CheckLog(args, log_name=log_name)
diff --git a/tools/perf/cli_tools/update_wpr/update_wpr_unittest.py b/tools/perf/cli_tools/update_wpr/update_wpr_unittest.py
index ff16af34..4ff7f58 100644
--- a/tools/perf/cli_tools/update_wpr/update_wpr_unittest.py
+++ b/tools/perf/cli_tools/update_wpr/update_wpr_unittest.py
@@ -181,12 +181,12 @@
     # Check correct arguments when running benchmark.
     self._check_log.assert_called_once_with(
         [
-          '.../run_benchmark', 'run', '--browser=system',
-          'system_health.memory_desktop', '--output-format=html',
-          '--show-stdout', '--reset-results', '--story-filter=^\\<story\\>$',
-          '--browser-logging-verbosity=verbose', '--pageset-repeat=1',
-          '--output-dir', '/tmp/dir', '--also-run-disabled-tests',
-          '--use-live-sites'
+            '.../run_benchmark', 'run', '--browser=system',
+            'system_health.memory_desktop', '--output-format=html',
+            '--show-stdout', '--reset-results', '--story-filter=^\\<story\\>$',
+            '--browser-logging-verbosity=verbose', '--pageset-repeat=1',
+            '--output-dir', '/tmp/dir', '--also-run-disabled-tests',
+            '--legacy-json-trace-format', '--use-live-sites'
         ],
         env={'LC_ALL': 'en_US.UTF-8'},
         log_path='/tmp/dir/<log_name>_<tstamp>')
diff --git a/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java b/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
index da962b3..fbed317 100644
--- a/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
+++ b/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
@@ -137,7 +137,7 @@
     /**
      * @return current orientation in degrees. One of the values 0, 90, 180, 270.
      */
-    /* package */ int getRotationDegrees() {
+    public int getRotationDegrees() {
         switch (getRotation()) {
             case Surface.ROTATION_0:
                 return 0;
diff --git a/ui/chromeos/events/event_rewriter_chromeos.cc b/ui/chromeos/events/event_rewriter_chromeos.cc
index 0d66947a..49e0316 100644
--- a/ui/chromeos/events/event_rewriter_chromeos.cc
+++ b/ui/chromeos/events/event_rewriter_chromeos.cc
@@ -1157,8 +1157,9 @@
   }
 
   const bool search_is_pressed = (state->flags & ui::EF_COMMAND_DOWN) != 0;
-  if (layout == kKbdTopRowLayoutWilco) {
-    if (RewriteTopRowKeysForLayoutWilco(key_event, search_is_pressed, state)) {
+  if (layout == kKbdTopRowLayoutWilco || layout == kKbdTopRowLayoutDrallion) {
+    if (RewriteTopRowKeysForLayoutWilco(key_event, search_is_pressed, state,
+                                        layout)) {
       return;
     }
   } else if ((state->key_code >= ui::VKEY_F1) &&
@@ -1480,7 +1481,8 @@
 bool EventRewriterChromeOS::RewriteTopRowKeysForLayoutWilco(
     const ui::KeyEvent& key_event,
     bool search_is_pressed,
-    ui::EventRewriterChromeOS::MutableKeyState* state) {
+    ui::EventRewriterChromeOS::MutableKeyState* state,
+    KeyboardTopRowLayout layout) {
   // When the kernel issues an function key (Fn modifier help down) and the
   // search key is pressed, the function key needs to be mapped to its
   // corresponding action key. This table defines those function-to-action
@@ -1556,6 +1558,9 @@
        {ui::EF_NONE, ui::DomCode::F12, ui::DomKey::F12, ui::VKEY_F12}},
       {{ui::EF_NONE, ui::VKEY_MEDIA_LAUNCH_APP2},
        {ui::EF_NONE, ui::DomCode::F3, ui::DomKey::F3, ui::VKEY_F3}},
+      // VKEY_PRIVACY_SCREEN_TOGGLE shares a key with F12 on Drallion.
+      {{ui::EF_NONE, ui::VKEY_PRIVACY_SCREEN_TOGGLE},
+       {ui::EF_NONE, ui::DomCode::F12, ui::DomKey::F12, ui::VKEY_F12}},
   };
 
   ui::EventRewriterChromeOS::MutableKeyState incoming_without_command = *state;
@@ -1565,6 +1570,16 @@
     // Incoming key code is a Fn key. Check if it needs to be mapped back to its
     // corresponding action key.
     if (search_is_pressed) {
+      // On Drallion, F12 shares a key with privacy screen toggle. Account for
+      // this before rewriting for Wilco 1.0 layout.
+      if (layout == kKbdTopRowLayoutDrallion &&
+          state->key_code == ui::VKEY_F12) {
+        state->key_code = ui::VKEY_PRIVACY_SCREEN_TOGGLE;
+        state->code = DomCode::PRIVACY_SCREEN_TOGGLE;
+        // Clear command flag before returning
+        state->flags = (state->flags & ~ui::EF_COMMAND_DOWN);
+        return true;
+      }
       return RewriteWithKeyboardRemappings(kFnkeysToActionKeys,
                                            base::size(kFnkeysToActionKeys),
                                            incoming_without_command, state);
@@ -1575,11 +1590,18 @@
     // Incoming key code is an action key. Check if it needs to be mapped back
     // to its corresponding function key.
     if (search_is_pressed != ForceTopRowAsFunctionKeys()) {
+      // On Drallion, mirror mode toggle is on its own key so don't remap it.
+      if (layout == kKbdTopRowLayoutDrallion &&
+          MatchKeyboardRemapping(
+              *state, {ui::EF_CONTROL_DOWN, ui::VKEY_MEDIA_LAUNCH_APP2})) {
+        // Clear command flag before returning
+        state->flags = (state->flags & ~ui::EF_COMMAND_DOWN);
+        return true;
+      }
       return RewriteWithKeyboardRemappings(kActionToFnKeys,
                                            base::size(kActionToFnKeys),
                                            incoming_without_command, state);
     }
-
     // At this point we know search_is_pressed == ForceTopRowAsFunctionKeys().
     // If they're both true, they cancel each other. Thus we can clear the
     // search-key modifier flag.
diff --git a/ui/chromeos/events/event_rewriter_chromeos.h b/ui/chromeos/events/event_rewriter_chromeos.h
index 9613b928..98b8d9e 100644
--- a/ui/chromeos/events/event_rewriter_chromeos.h
+++ b/ui/chromeos/events/event_rewriter_chromeos.h
@@ -61,10 +61,11 @@
     kKbdTopRowLayout2 = 2,
     // Keyboard layout and handling for Wilco.
     kKbdTopRowLayoutWilco = 3,
+    kKbdTopRowLayoutDrallion = 4,
 
     kKbdTopRowLayoutDefault = kKbdTopRowLayout1,
     kKbdTopRowLayoutMin = kKbdTopRowLayout1,
-    kKbdTopRowLayoutMax = kKbdTopRowLayoutWilco
+    kKbdTopRowLayoutMax = kKbdTopRowLayoutDrallion
   };
 
   // Things that keyboard-related rewriter phases can change about an Event.
@@ -248,7 +249,8 @@
   bool RewriteTopRowKeysForLayoutWilco(
       const ui::KeyEvent& key_event,
       bool search_is_pressed,
-      ui::EventRewriterChromeOS::MutableKeyState* state);
+      ui::EventRewriterChromeOS::MutableKeyState* state,
+      KeyboardTopRowLayout layout);
 
   // Take the keys being pressed into consideration, in contrast to
   // RewriteKeyEvent which computes the rewritten event and event rewrite
diff --git a/ui/display/fake/fake_display_snapshot.cc b/ui/display/fake/fake_display_snapshot.cc
index 16d62cd..2251ad2 100644
--- a/ui/display/fake/fake_display_snapshot.cc
+++ b/ui/display/fake/fake_display_snapshot.cc
@@ -161,7 +161,7 @@
 
   return std::make_unique<FakeDisplaySnapshot>(
       id_, origin_, physical_size, type_, is_aspect_preserving_scaling_,
-      has_overscan_, has_privacy_screen_, has_color_correction_matrix_,
+      has_overscan_, privacy_screen_state_, has_color_correction_matrix_,
       color_correction_in_linear_space_, name_, std::move(modes_),
       current_mode_, native_mode_, product_code_, maximum_cursor_size_);
 }
@@ -285,28 +285,29 @@
   return modes_.back().get();
 }
 
-FakeDisplaySnapshot::FakeDisplaySnapshot(int64_t display_id,
-                                         const gfx::Point& origin,
-                                         const gfx::Size& physical_size,
-                                         DisplayConnectionType type,
-                                         bool is_aspect_preserving_scaling,
-                                         bool has_overscan,
-                                         bool has_privacy_screen,
-                                         bool has_color_correction_matrix,
-                                         bool color_correction_in_linear_space,
-                                         std::string display_name,
-                                         DisplayModeList modes,
-                                         const DisplayMode* current_mode,
-                                         const DisplayMode* native_mode,
-                                         int64_t product_code,
-                                         const gfx::Size& maximum_cursor_size)
+FakeDisplaySnapshot::FakeDisplaySnapshot(
+    int64_t display_id,
+    const gfx::Point& origin,
+    const gfx::Size& physical_size,
+    DisplayConnectionType type,
+    bool is_aspect_preserving_scaling,
+    bool has_overscan,
+    PrivacyScreenState privacy_screen_state,
+    bool has_color_correction_matrix,
+    bool color_correction_in_linear_space,
+    std::string display_name,
+    DisplayModeList modes,
+    const DisplayMode* current_mode,
+    const DisplayMode* native_mode,
+    int64_t product_code,
+    const gfx::Size& maximum_cursor_size)
     : DisplaySnapshot(display_id,
                       origin,
                       physical_size,
                       type,
                       is_aspect_preserving_scaling,
                       has_overscan,
-                      has_privacy_screen,
+                      privacy_screen_state,
                       has_color_correction_matrix,
                       color_correction_in_linear_space,
                       gfx::ColorSpace(),
diff --git a/ui/display/fake/fake_display_snapshot.h b/ui/display/fake/fake_display_snapshot.h
index f409ce11..8352b95 100644
--- a/ui/display/fake/fake_display_snapshot.h
+++ b/ui/display/fake/fake_display_snapshot.h
@@ -84,7 +84,7 @@
     DisplayConnectionType type_ = DISPLAY_CONNECTION_TYPE_UNKNOWN;
     bool is_aspect_preserving_scaling_ = false;
     bool has_overscan_ = false;
-    bool has_privacy_screen_ = false;
+    PrivacyScreenState privacy_screen_state_ = kNotSupported;
     bool has_color_correction_matrix_ = false;
     bool color_correction_in_linear_space_ = false;
     std::string name_;
@@ -103,7 +103,7 @@
                       DisplayConnectionType type,
                       bool is_aspect_preserving_scaling,
                       bool has_overscan,
-                      bool has_privacy_screen,
+                      PrivacyScreenState privacy_screen_state,
                       bool has_color_correction_matrix,
                       bool color_correction_in_linear_space,
                       std::string display_name,
diff --git a/ui/display/manager/display_change_observer_unittest.cc b/ui/display/manager/display_change_observer_unittest.cc
index f55301d..da83365 100644
--- a/ui/display/manager/display_change_observer_unittest.cc
+++ b/ui/display/manager/display_change_observer_unittest.cc
@@ -172,8 +172,8 @@
 TEST_P(DisplayChangeObserverTest, GetEmptyExternalManagedDisplayModeList) {
   FakeDisplaySnapshot display_snapshot(
       123, gfx::Point(), gfx::Size(), DISPLAY_CONNECTION_TYPE_UNKNOWN, false,
-      false, false, false, false, std::string(), {}, nullptr, nullptr, 0,
-      gfx::Size());
+      false, PrivacyScreenState::kNotSupported, false, false, std::string(), {},
+      nullptr, nullptr, 0, gfx::Size());
 
   ManagedDisplayInfo::ManagedDisplayModeList display_modes =
       DisplayChangeObserver::GetExternalManagedDisplayModeList(
diff --git a/ui/display/mojom/display_constants.mojom b/ui/display/mojom/display_constants.mojom
index 224265d1..d51c92d2 100644
--- a/ui/display/mojom/display_constants.mojom
+++ b/ui/display/mojom/display_constants.mojom
@@ -31,3 +31,9 @@
   RIGHT_UP = 3
 };
 
+// Corresponds to display::PrivacyScreenState
+enum PrivacyScreenState {
+  DISABLED = 0,
+  ENABLED = 1,
+  NOT_SUPPORTED = 2
+};
diff --git a/ui/display/mojom/display_constants.typemap b/ui/display/mojom/display_constants.typemap
index f0e5ef6..c7a3db17 100644
--- a/ui/display/mojom/display_constants.typemap
+++ b/ui/display/mojom/display_constants.typemap
@@ -14,4 +14,5 @@
 type_mappings = [
   "display.mojom.DisplayConnectionType=::display::DisplayConnectionType",
   "display.mojom.HDCPState=::display::HDCPState",
+  "display.mojom.PrivacyScreenState=::display::PrivacyScreenState",
 ]
diff --git a/ui/display/mojom/display_constants_mojom_traits.cc b/ui/display/mojom/display_constants_mojom_traits.cc
index c8a00b12..7fd508b 100644
--- a/ui/display/mojom/display_constants_mojom_traits.cc
+++ b/ui/display/mojom/display_constants_mojom_traits.cc
@@ -147,4 +147,39 @@
   return false;
 }
 
+// static
+display::mojom::PrivacyScreenState EnumTraits<
+    display::mojom::PrivacyScreenState,
+    display::PrivacyScreenState>::ToMojom(display::PrivacyScreenState state) {
+  switch (state) {
+    case display::PrivacyScreenState::kDisabled:
+      return display::mojom::PrivacyScreenState::DISABLED;
+    case display::PrivacyScreenState::kEnabled:
+      return display::mojom::PrivacyScreenState::ENABLED;
+    case display::PrivacyScreenState::kNotSupported:
+      return display::mojom::PrivacyScreenState::NOT_SUPPORTED;
+  }
+  NOTREACHED();
+  return display::mojom::PrivacyScreenState::NOT_SUPPORTED;
+}
+
+// static
+bool EnumTraits<display::mojom::PrivacyScreenState,
+                display::PrivacyScreenState>::
+    FromMojom(display::mojom::PrivacyScreenState state,
+              display::PrivacyScreenState* out) {
+  switch (state) {
+    case display::mojom::PrivacyScreenState::DISABLED:
+      *out = display::PrivacyScreenState::kDisabled;
+      return true;
+    case display::mojom::PrivacyScreenState::ENABLED:
+      *out = display::PrivacyScreenState::kEnabled;
+      return true;
+    case display::mojom::PrivacyScreenState::NOT_SUPPORTED:
+      *out = display::PrivacyScreenState::kNotSupported;
+      return true;
+  }
+  return false;
+}
+
 }  // namespace mojo
diff --git a/ui/display/mojom/display_constants_mojom_traits.h b/ui/display/mojom/display_constants_mojom_traits.h
index 0fcf084..17d4015 100644
--- a/ui/display/mojom/display_constants_mojom_traits.h
+++ b/ui/display/mojom/display_constants_mojom_traits.h
@@ -34,6 +34,15 @@
                         display::PanelOrientation* out);
 };
 
+template <>
+struct EnumTraits<display::mojom::PrivacyScreenState,
+                  display::PrivacyScreenState> {
+  static display::mojom::PrivacyScreenState ToMojom(
+      display::PrivacyScreenState type);
+  static bool FromMojom(display::mojom::PrivacyScreenState type,
+                        display::PrivacyScreenState* out);
+};
+
 }  // namespace mojo
 
 #endif  // UI_DISPLAY_MOJOM_DISPLAY_CONSTANTS_MOJOM_TRAITS_H_
diff --git a/ui/display/mojom/display_mojom_traits_unittest.cc b/ui/display/mojom/display_mojom_traits_unittest.cc
index 921fcdc3..5b2f092 100644
--- a/ui/display/mojom/display_mojom_traits_unittest.cc
+++ b/ui/display/mojom/display_mojom_traits_unittest.cc
@@ -82,7 +82,7 @@
   EXPECT_EQ(input.is_aspect_preserving_scaling(),
             output.is_aspect_preserving_scaling());
   EXPECT_EQ(input.has_overscan(), output.has_overscan());
-  EXPECT_EQ(input.has_privacy_screen(), output.has_privacy_screen());
+  EXPECT_EQ(input.privacy_screen_state(), output.privacy_screen_state());
   EXPECT_EQ(input.has_color_correction_matrix(),
             output.has_color_correction_matrix());
   EXPECT_EQ(input.color_correction_in_linear_space(),
@@ -256,7 +256,7 @@
   const DisplayConnectionType type = DISPLAY_CONNECTION_TYPE_DISPLAYPORT;
   const bool is_aspect_preserving_scaling = true;
   const bool has_overscan = true;
-  const bool has_privacy_screen = true;
+  const PrivacyScreenState privacy_screen_state = kEnabled;
   const bool has_color_correction_matrix = true;
   const bool color_correction_in_linear_space = true;
   const gfx::ColorSpace display_color_space = gfx::ColorSpace::CreateREC709();
@@ -277,7 +277,7 @@
 
   std::unique_ptr<DisplaySnapshot> input = std::make_unique<DisplaySnapshot>(
       display_id, origin, physical_size, type, is_aspect_preserving_scaling,
-      has_overscan, has_privacy_screen, has_color_correction_matrix,
+      has_overscan, privacy_screen_state, has_color_correction_matrix,
       color_correction_in_linear_space, display_color_space, bits_per_channel,
       display_name, sys_path, std::move(modes), PanelOrientation::kNormal, edid,
       current_mode, native_mode, product_code, year_of_manufacture,
@@ -299,7 +299,7 @@
   const DisplayConnectionType type = DISPLAY_CONNECTION_TYPE_VGA;
   const bool is_aspect_preserving_scaling = true;
   const bool has_overscan = true;
-  const bool has_privacy_screen = true;
+  const PrivacyScreenState privacy_screen_state = kEnabled;
   const bool has_color_correction_matrix = true;
   const bool color_correction_in_linear_space = true;
   const gfx::ColorSpace display_color_space = gfx::ColorSpace::CreateREC709();
@@ -320,7 +320,7 @@
 
   std::unique_ptr<DisplaySnapshot> input = std::make_unique<DisplaySnapshot>(
       display_id, origin, physical_size, type, is_aspect_preserving_scaling,
-      has_overscan, has_privacy_screen, has_color_correction_matrix,
+      has_overscan, privacy_screen_state, has_color_correction_matrix,
       color_correction_in_linear_space, display_color_space, bits_per_channel,
       display_name, sys_path, std::move(modes), PanelOrientation::kNormal, edid,
       current_mode, native_mode, product_code, year_of_manufacture,
@@ -342,7 +342,7 @@
   const DisplayConnectionType type = DISPLAY_CONNECTION_TYPE_HDMI;
   const bool is_aspect_preserving_scaling = false;
   const bool has_overscan = false;
-  const bool has_privacy_screen = false;
+  const PrivacyScreenState privacy_screen_state = kDisabled;
   const bool has_color_correction_matrix = false;
   const bool color_correction_in_linear_space = false;
   const std::string display_name("HP Z24i");
@@ -367,7 +367,7 @@
 
   std::unique_ptr<DisplaySnapshot> input = std::make_unique<DisplaySnapshot>(
       display_id, origin, physical_size, type, is_aspect_preserving_scaling,
-      has_overscan, has_privacy_screen, has_color_correction_matrix,
+      has_overscan, privacy_screen_state, has_color_correction_matrix,
       color_correction_in_linear_space, display_color_space, bits_per_channel,
       display_name, sys_path, std::move(modes), PanelOrientation::kLeftUp, edid,
       current_mode, native_mode, product_code, year_of_manufacture,
@@ -388,7 +388,7 @@
   const DisplayConnectionType type = DISPLAY_CONNECTION_TYPE_INTERNAL;
   const bool is_aspect_preserving_scaling = true;
   const bool has_overscan = false;
-  const bool has_privacy_screen = false;
+  const PrivacyScreenState privacy_screen_state = kNotSupported;
   const bool has_color_correction_matrix = false;
   const bool color_correction_in_linear_space = false;
   const gfx::ColorSpace display_color_space =
@@ -410,7 +410,7 @@
 
   std::unique_ptr<DisplaySnapshot> input = std::make_unique<DisplaySnapshot>(
       display_id, origin, physical_size, type, is_aspect_preserving_scaling,
-      has_overscan, has_privacy_screen, has_color_correction_matrix,
+      has_overscan, privacy_screen_state, has_color_correction_matrix,
       color_correction_in_linear_space, display_color_space, bits_per_channel,
       display_name, sys_path, std::move(modes), PanelOrientation::kRightUp,
       edid, current_mode, native_mode, product_code, year_of_manufacture,
diff --git a/ui/display/mojom/display_snapshot.mojom b/ui/display/mojom/display_snapshot.mojom
index b1978db..e540e3cd 100644
--- a/ui/display/mojom/display_snapshot.mojom
+++ b/ui/display/mojom/display_snapshot.mojom
@@ -18,7 +18,7 @@
   display.mojom.DisplayConnectionType type;
   bool is_aspect_preserving_scaling;
   bool has_overscan;
-  bool has_privacy_screen;
+  display.mojom.PrivacyScreenState privacy_screen_state;
   bool has_color_correction_matrix;
   bool color_correction_in_linear_space;
   gfx.mojom.ColorSpace color_space;
diff --git a/ui/display/mojom/display_snapshot_mojom_traits.cc b/ui/display/mojom/display_snapshot_mojom_traits.cc
index 41dfa3dc0..56662c0 100644
--- a/ui/display/mojom/display_snapshot_mojom_traits.cc
+++ b/ui/display/mojom/display_snapshot_mojom_traits.cc
@@ -81,6 +81,10 @@
   if (!data.ReadType(&type))
     return false;
 
+  display::PrivacyScreenState privacy_screen_state;
+  if (!data.ReadPrivacyScreenState(&privacy_screen_state))
+    return false;
+
   display::PanelOrientation panel_orientation;
   if (!data.ReadPanelOrientation(&panel_orientation))
     return false;
@@ -136,7 +140,7 @@
   *out = std::make_unique<display::DisplaySnapshot>(
       data.display_id(), origin, physical_size, type,
       data.is_aspect_preserving_scaling(), data.has_overscan(),
-      data.has_privacy_screen(), data.has_color_correction_matrix(),
+      privacy_screen_state, data.has_color_correction_matrix(),
       data.color_correction_in_linear_space(), color_space,
       data.bits_per_channel(), display_name, file_path, std::move(modes),
       panel_orientation, std::move(edid), current_mode, native_mode,
diff --git a/ui/display/mojom/display_snapshot_mojom_traits.h b/ui/display/mojom/display_snapshot_mojom_traits.h
index 9108947..8745cd2b 100644
--- a/ui/display/mojom/display_snapshot_mojom_traits.h
+++ b/ui/display/mojom/display_snapshot_mojom_traits.h
@@ -54,9 +54,9 @@
     return snapshot->has_overscan();
   }
 
-  static bool has_privacy_screen(
+  static display::PrivacyScreenState privacy_screen_state(
       const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
-    return snapshot->has_privacy_screen();
+    return snapshot->privacy_screen_state();
   }
 
   static bool has_color_correction_matrix(
diff --git a/ui/display/types/display_constants.h b/ui/display/types/display_constants.h
index a6f046d..48eee73 100644
--- a/ui/display/types/display_constants.h
+++ b/ui/display/types/display_constants.h
@@ -72,6 +72,14 @@
   kLast = kRightUp
 };
 
+// The existence, or lack thereof, and state of an ePrivacy screen.
+enum PrivacyScreenState {
+  kDisabled = 0,
+  kEnabled = 1,
+  kNotSupported = 2,
+  kPrivacyScreenStateLast = kNotSupported,
+};
+
 // Defines the float values closest to repeating decimal scale factors.
 constexpr float kDsf_1_777 = 1.77777779102325439453125f;
 constexpr float kDsf_2_252 = 2.2522523403167724609375f;
diff --git a/ui/display/types/display_snapshot.cc b/ui/display/types/display_snapshot.cc
index 1bcea85..a4c556f 100644
--- a/ui/display/types/display_snapshot.cc
+++ b/ui/display/types/display_snapshot.cc
@@ -66,7 +66,7 @@
                                  DisplayConnectionType type,
                                  bool is_aspect_preserving_scaling,
                                  bool has_overscan,
-                                 bool has_privacy_screen,
+                                 PrivacyScreenState privacy_screen_state,
                                  bool has_color_correction_matrix,
                                  bool color_correction_in_linear_space,
                                  const gfx::ColorSpace& color_space,
@@ -87,7 +87,7 @@
       type_(type),
       is_aspect_preserving_scaling_(is_aspect_preserving_scaling),
       has_overscan_(has_overscan),
-      has_privacy_screen_(has_privacy_screen),
+      privacy_screen_state_(privacy_screen_state),
       has_color_correction_matrix_(has_color_correction_matrix),
       color_correction_in_linear_space_(color_correction_in_linear_space),
       color_space_(color_space),
@@ -129,7 +129,7 @@
 
   return std::make_unique<DisplaySnapshot>(
       display_id_, origin_, physical_size_, type_,
-      is_aspect_preserving_scaling_, has_overscan_, has_privacy_screen_,
+      is_aspect_preserving_scaling_, has_overscan_, privacy_screen_state_,
       has_color_correction_matrix_, color_correction_in_linear_space_,
       color_space_, bits_per_channel_, display_name_, sys_path_,
       std::move(clone_modes), panel_orientation_, edid_, cloned_current_mode,
diff --git a/ui/display/types/display_snapshot.h b/ui/display/types/display_snapshot.h
index 93afcc7..22c567a 100644
--- a/ui/display/types/display_snapshot.h
+++ b/ui/display/types/display_snapshot.h
@@ -35,7 +35,7 @@
                   DisplayConnectionType type,
                   bool is_aspect_preserving_scaling,
                   bool has_overscan,
-                  bool has_privacy_screen,
+                  PrivacyScreenState privacy_screen_state,
                   bool has_color_correction_matrix,
                   bool color_correction_in_linear_space,
                   const gfx::ColorSpace& color_space,
@@ -61,7 +61,9 @@
     return is_aspect_preserving_scaling_;
   }
   bool has_overscan() const { return has_overscan_; }
-  bool has_privacy_screen() const { return has_privacy_screen_; }
+  PrivacyScreenState privacy_screen_state() const {
+    return privacy_screen_state_;
+  }
   bool has_color_correction_matrix() const {
     return has_color_correction_matrix_;
   }
@@ -112,7 +114,7 @@
 
   const bool has_overscan_;
 
-  const bool has_privacy_screen_;
+  const PrivacyScreenState privacy_screen_state_;
 
   // Whether this display has advanced color correction available.
   const bool has_color_correction_matrix_;
diff --git a/ui/file_manager/file_manager/common/js/util.js b/ui/file_manager/file_manager/common/js/util.js
index 5eebbe3b..771bba8 100644
--- a/ui/file_manager/file_manager/common/js/util.js
+++ b/ui/file_manager/file_manager/common/js/util.js
@@ -1376,14 +1376,6 @@
 };
 
 /**
- * Examines whether the feedback panel mode is enabled.
- * @return {boolean} True if the feedback panel UI mode is enabled.
- */
-util.isFeedbackPanelEnabled = () => {
-  return loadTimeData.getBoolean('FEEDBACK_PANEL_ENABLED');
-};
-
-/**
  * Returns true when FilesNG is enabled.
  * @return {boolean}
  */
diff --git a/ui/file_manager/file_manager/foreground/js/actions_controller.js b/ui/file_manager/file_manager/foreground/js/actions_controller.js
index a93572a9..ba0d342 100644
--- a/ui/file_manager/file_manager/foreground/js/actions_controller.js
+++ b/ui/file_manager/file_manager/foreground/js/actions_controller.js
@@ -233,7 +233,7 @@
     }
 
     // If it's still initializing, return the cached promise.
-    let promise = this.initializingdModels_.get(key);
+    const promise = this.initializingdModels_.get(key);
     if (promise) {
       return promise;
     }
diff --git a/ui/file_manager/file_manager/foreground/js/directory_contents.js b/ui/file_manager/file_manager/foreground/js/directory_contents.js
index 53693108..954ee631 100644
--- a/ui/file_manager/file_manager/foreground/js/directory_contents.js
+++ b/ui/file_manager/file_manager/foreground/js/directory_contents.js
@@ -796,7 +796,7 @@
     }
 
     const addedList = [];
-    for (let url in updatedMap) {
+    for (const url in updatedMap) {
       addedList.push(updatedMap[url]);
     }
 
diff --git a/ui/file_manager/file_manager/foreground/js/directory_model.js b/ui/file_manager/file_manager/foreground/js/directory_model.js
index 9bf54a7..17b9514 100644
--- a/ui/file_manager/file_manager/foreground/js/directory_model.js
+++ b/ui/file_manager/file_manager/foreground/js/directory_model.js
@@ -599,7 +599,7 @@
     // Clear metadata information for the old (no longer visible) items in the
     // file list.
     const fileList = this.getFileList();
-    let removedUrls = [];
+    const removedUrls = [];
     for (let i = 0; i < fileList.length; i++) {
       removedUrls.push(fileList.item(i).toURL());
     }
@@ -1212,7 +1212,7 @@
     // its contents.
     const currentDir = this.getCurrentDirEntry();
     const affectedVolumes = event.added.concat(event.removed);
-    for (let volume of affectedVolumes) {
+    for (const volume of affectedVolumes) {
       if (util.isSameEntry(currentDir, volume.prefixEntry)) {
         this.rescan(false);
         break;
diff --git a/ui/file_manager/file_manager/foreground/js/file_list_model_unittest.js b/ui/file_manager/file_manager/foreground/js/file_list_model_unittest.js
index 8909f42..23be6d9 100644
--- a/ui/file_manager/file_manager/foreground/js/file_list_model_unittest.js
+++ b/ui/file_manager/file_manager/foreground/js/file_list_model_unittest.js
@@ -49,9 +49,9 @@
 function createFakeMetadataModel(data) {
   return /** @type {!MetadataModel} */ ({
     getCache: (entries, names) => {
-      let result = [];
+      const result = [];
       for (let i = 0; i < entries.length; i++) {
-        let metadata = {};
+        const metadata = {};
         if (!entries[i].isDirectory && data[entries[i].name]) {
           for (let j = 0; j < names.length; j++) {
             metadata[names[j]] = data[entries[i].name][names[j]];
diff --git a/ui/file_manager/file_manager/foreground/js/file_tasks.js b/ui/file_manager/file_manager/foreground/js/file_tasks.js
index cb64882b..00e8b620 100644
--- a/ui/file_manager/file_manager/foreground/js/file_tasks.js
+++ b/ui/file_manager/file_manager/foreground/js/file_tasks.js
@@ -913,11 +913,11 @@
    * @param {!Array<!chrome.fileManagerPrivate.FileTask>} tasks
    */
   updateShareMenuButton_(shareMenuButton, tasks) {
-    let driveShareCommand =
+    const driveShareCommand =
         shareMenuButton.menu.querySelector('cr-menu-item[command="#share"]');
-    let driveShareCommandSeparator =
+    const driveShareCommandSeparator =
         shareMenuButton.menu.querySelector('#drive-share-separator');
-    let moreActionsSeparator =
+    const moreActionsSeparator =
         shareMenuButton.menu.querySelector('#more-actions-separator');
 
     // Update share command.
@@ -938,7 +938,7 @@
     // Temporarily remove the more actions item while the rest of the menu
     // items are being cleared out so we don't lose it and make it hidden for
     // now
-    let moreActions = shareMenuButton.menu.querySelector(
+    const moreActions = shareMenuButton.menu.querySelector(
         'cr-menu-item[command="#show-submenu"]');
     moreActions.remove();
     moreActions.setAttribute('hidden', '');
diff --git a/ui/file_manager/file_manager/foreground/js/import_controller.js b/ui/file_manager/file_manager/foreground/js/import_controller.js
index dcbb058..04a91489 100644
--- a/ui/file_manager/file_manager/foreground/js/import_controller.js
+++ b/ui/file_manager/file_manager/foreground/js/import_controller.js
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 // Namespace
+// eslint-disable-next-line
 var importer = importer || {};
 
 /** @private @enum {string} */
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/exif_parser_unittest.js b/ui/file_manager/file_manager/foreground/js/metadata/exif_parser_unittest.js
index 1c2b4bda..90adb75 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/exif_parser_unittest.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/exif_parser_unittest.js
@@ -12,7 +12,7 @@
   assertEquals(2, tag.format);
   assertTrue(tag.componentCount > 4);
 
-  let byteWriter = new ByteWriter(bytes.buffer, 0);
+  const byteWriter = new ByteWriter(bytes.buffer, 0);
   byteWriter.writeScalar(1, 2);  // Number of fields.
 
   byteWriter.writeScalar(tag.id, 2);
@@ -59,8 +59,8 @@
 function parseExifData_(bytes) {
   const exifParser = new ExifParser(new ConsoleLogger());
 
-  let tags = {};
-  let byteReader = new ByteReader(bytes.buffer);
+  const tags = {};
+  const byteReader = new ByteReader(bytes.buffer);
   assertEquals(0, exifParser.readDirectory(byteReader, tags));
   return tags;
 }
@@ -70,7 +70,7 @@
  */
 function testWithoutNullCharacterTermination() {
   // Create exif with a value that does not end with null character.
-  let data = new Uint8Array(0x10000);
+  const data = new Uint8Array(0x10000);
   writeDirectory_(data, /** @type {!ExifEntry} */ ({
                     id: 0x10f,          // Manufacturer Id.
                     format: 2,          // String format.
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/image_parsers.js b/ui/file_manager/file_manager/foreground/js/metadata/image_parsers.js
index 68b44eb..a1e83ec6 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/image_parsers.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/image_parsers.js
@@ -177,9 +177,11 @@
           throw new Error(
               'Invalid VP8 lossy bitstream signature: ' + lossySignature);
         }
-        var dimensionBits = br.readScalar(4);
-        metadata.width = dimensionBits & 0x3fff;
-        metadata.height = (dimensionBits >> 16) & 0x3fff;
+        {
+          const dimensionBits = br.readScalar(4);
+          metadata.width = dimensionBits & 0x3fff;
+          metadata.height = (dimensionBits >> 16) & 0x3fff;
+        }
         break;
 
       // VP8 lossless bitstream format.
@@ -190,9 +192,11 @@
           throw new Error(
               'Invalid VP8 lossless bitstream signature: ' + losslessSignature);
         }
-        var dimensionBits = br.readScalar(4);
-        metadata.width = (dimensionBits & 0x3fff) + 1;
-        metadata.height = ((dimensionBits >> 14) & 0x3fff) + 1;
+        {
+          const dimensionBits = br.readScalar(4);
+          metadata.width = (dimensionBits & 0x3fff) + 1;
+          metadata.height = ((dimensionBits >> 14) & 0x3fff) + 1;
+        }
         break;
 
       // VP8 extended file format.
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item.js b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item.js
index 6ee67f4..665e6a76 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item.js
@@ -62,12 +62,12 @@
   storeProperties(requestId, typedObject) {
     let changed = false;
     const object = /** @type {!Object} */ (typedObject);
-    for (let name in object) {
+    for (const name in object) {
       if (/.Error$/.test(name) && object[name]) {
         object[name.substr(0, name.length - 5)] = undefined;
       }
     }
-    for (let name in object) {
+    for (const name in object) {
       if (/.Error$/.test(name)) {
         continue;
       }
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item_unittest.js b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item_unittest.js
index 76623ec..405feda 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item_unittest.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_item_unittest.js
@@ -5,7 +5,7 @@
 /**
  * @type {!MetadataItem}
  */
-let metadataA = new MetadataItem();
+const metadataA = new MetadataItem();
 metadataA.contentMimeType = 'value';
 
 
@@ -50,7 +50,7 @@
   item.startRequests(1, item.createRequests(['contentMimeType']));
   item.startRequests(2, item.createRequests(['contentMimeType']));
 
-  let metadataB = new MetadataItem();
+  const metadataB = new MetadataItem();
   metadataB.contentMimeType = 'value2';
 
   assertTrue(item.storeProperties(2, metadataB));
@@ -81,7 +81,7 @@
   item.startRequests(
       1, item.createRequests(['contentMimeType', 'externalFileUrl']));
 
-  let metadata = new MetadataItem();
+  const metadata = new MetadataItem();
   metadata.contentMimeType = 'mime';
   metadata.externalFileUrl = 'url';
 
@@ -102,7 +102,7 @@
   item.startRequests(1, item.createRequests(['contentMimeType']));
   item.storeProperties(1, metadataA);
 
-  let metadataB = new MetadataItem();
+  const metadataB = new MetadataItem();
   metadataB.contentMimeType = 'value2';
 
   item.storeProperties(2, metadataB);
@@ -113,11 +113,11 @@
   const item = new MetadataCacheItem();
   item.startRequests(1, item.createRequests(['contentThumbnailUrl']));
 
-  let metadataWithError = new MetadataItem();
+  const metadataWithError = new MetadataItem();
   metadataWithError.contentThumbnailUrlError = new Error('Error');
 
   item.storeProperties(1, metadataWithError);
-  let property = item.get(['contentThumbnailUrl']);
+  const property = item.get(['contentThumbnailUrl']);
   assertEquals(undefined, property.contentThumbnailUrl);
   assertEquals('Error', property.contentThumbnailUrlError.message);
 }
@@ -126,7 +126,7 @@
   const item = new MetadataCacheItem();
   item.startRequests(1, item.createRequests(['contentThumbnailUrl']));
 
-  let metadataWithError = new MetadataItem();
+  const metadataWithError = new MetadataItem();
   metadataWithError.contentThumbnailUrlError = new Error('Error');
 
   item.storeProperties(1, metadataWithError);
diff --git a/ui/file_manager/file_manager/foreground/js/navigation_list_model.js b/ui/file_manager/file_manager/foreground/js/navigation_list_model.js
index 7efc11c..bbb527e 100644
--- a/ui/file_manager/file_manager/foreground/js/navigation_list_model.js
+++ b/ui/file_manager/file_manager/foreground/js/navigation_list_model.js
@@ -530,7 +530,7 @@
       for (const removable of removableVolumes) {
         // Partitions on the same physical device share device path and drive
         // label. Create keys using these two identifiers.
-        let key = removable.volumeInfo.devicePath + '/' +
+        const key = removable.volumeInfo.devicePath + '/' +
             removable.volumeInfo.driveLabel;
         if (!removableGroups.has(key)) {
           // New key, so create a new array to hold partitions.
diff --git a/ui/file_manager/file_manager/foreground/js/providers_model_unittest.js b/ui/file_manager/file_manager/foreground/js/providers_model_unittest.js
index f2ae84e..d1fb7f3d 100644
--- a/ui/file_manager/file_manager/foreground/js/providers_model_unittest.js
+++ b/ui/file_manager/file_manager/foreground/js/providers_model_unittest.js
@@ -104,10 +104,10 @@
 };
 
 function addProvidedVolume(volumeManager, providerId, volumeId) {
-  let fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId);
+  const fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId);
   fileSystem.entries['/'] = MockDirectoryEntry.create(fileSystem, '');
 
-  let volumeInfo = new VolumeInfoImpl(
+  const volumeInfo = new VolumeInfoImpl(
       VolumeManagerCommon.VolumeType.PROVIDED, volumeId, fileSystem,
       '',                                          // error
       '',                                          // deviceType
@@ -133,7 +133,7 @@
 
   // Create and install a mock fileManagerPrivate API for fetching the list of
   // providers. TODO(mtomasz): Add some native (non-extension) providers.
-  let mockChrome = {
+  const mockChrome = {
     fileManagerPrivate: {
       getProviders: function(callback) {
         callback([
@@ -152,7 +152,7 @@
   new MockCommandLinePrivate();
 
   // Create and install a volume manager.
-  let volumeManager = new MockVolumeManager();
+  const volumeManager = new MockVolumeManager();
   MockVolumeManager.installMockSingleton(volumeManager);
 
   // Add provided test volumes.
@@ -166,7 +166,7 @@
   reportPromise(
       volumeManagerFactory.getInstance()
           .then(volumeManager => {
-            let model = new ProvidersModel(volumeManager);
+            const model = new ProvidersModel(volumeManager);
             return model.getInstalledProviders();
           })
           .then(providers => {
@@ -224,7 +224,7 @@
   reportPromise(
       volumeManagerFactory.getInstance()
           .then(volumeManager => {
-            let model = new ProvidersModel(volumeManager);
+            const model = new ProvidersModel(volumeManager);
             return model.getMountableProviders();
           })
           .then(providers => {
diff --git a/ui/file_manager/file_manager/foreground/js/ui/directory_tree_unittest.js b/ui/file_manager/file_manager/foreground/js/ui/directory_tree_unittest.js
index 253c22187..9dca508 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/directory_tree_unittest.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/directory_tree_unittest.js
@@ -87,8 +87,8 @@
  * @return {!HTMLElement}
  */
 function createElements() {
-  let parent = document.createElement('div');
-  let tree = document.createElement('div');
+  const parent = document.createElement('div');
+  const tree = document.createElement('div');
   parent.appendChild(tree);
   return /** @type {!HTMLElement} */ (tree);
 }
@@ -117,8 +117,8 @@
  * @return {!Array<string>} Array of label strings.
  */
 function getDirectoryTreeItemLabels(directoryTree) {
-  let labels = [];
-  for (let item of directoryTree.items) {
+  const labels = [];
+  for (const item of directoryTree.items) {
     labels.push(item.label);
   }
   return labels;
@@ -616,11 +616,11 @@
           .then(() => {
             fakeFileSystemURLEntries['filesystem:drive/team_drives/a'] =
                 MockDirectoryEntry.create(driveFileSystem, '/team_drives/a');
-            let event = {
+            const event = {
               entry: fakeFileSystemURLEntries['filesystem:drive/team_drives'],
               eventType: 'changed',
             };
-            for (let listener of directoryChangedListeners) {
+            for (const listener of directoryChangedListeners) {
               listener(event);
             }
           })
@@ -677,11 +677,11 @@
             });
           })
           .then(() => {
-            let event = {
+            const event = {
               entry: fakeFileSystemURLEntries['filesystem:drive/team_drives'],
               eventType: 'changed',
             };
-            for (let listener of directoryChangedListeners) {
+            for (const listener of directoryChangedListeners) {
               listener(event);
             }
           })
@@ -723,7 +723,7 @@
   directoryTree = /** @type {!DirectoryTree} */ (directoryTree);
   directoryTree.redraw(true);
 
-  let driveItem = directoryTree.items[0];
+  const driveItem = directoryTree.items[0];
 
   // Test that we initially do not have a Computers item under Drive, and that
   // adding a filesystem "/Computers/a" results in the Computers item being
@@ -736,11 +736,11 @@
           .then(() => {
             fakeFileSystemURLEntries['filesystem:drive/Computers/a'] =
                 MockDirectoryEntry.create(driveFileSystem, '/Computers/a');
-            let event = {
+            const event = {
               entry: fakeFileSystemURLEntries['filesystem:drive/Computers'],
               eventType: 'changed',
             };
-            for (let listener of directoryChangedListeners) {
+            for (const listener of directoryChangedListeners) {
               listener(event);
             }
           })
@@ -798,11 +798,11 @@
             });
           })
           .then(() => {
-            let event = {
+            const event = {
               entry: fakeFileSystemURLEntries['filesystem:drive/Computers'],
               eventType: 'changed',
             };
-            for (let listener of directoryChangedListeners) {
+            for (const listener of directoryChangedListeners) {
               listener(event);
             }
           })
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_grid.js b/ui/file_manager/file_manager/foreground/js/ui/file_grid.js
index 82bcfec..56f6bd10 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/file_grid.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/file_grid.js
@@ -119,7 +119,7 @@
     self.a11y = a11y;
 
     // Force the list's ending spacer to be tall enough to allow overscroll.
-    let endSpacer = self.querySelector('.spacer:last-child');
+    const endSpacer = self.querySelector('.spacer:last-child');
     if (endSpacer) {
       endSpacer.classList.add('signals-overscroll');
     }
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_table.js b/ui/file_manager/file_manager/foreground/js/ui/file_table.js
index 10ee62ec..6b945122 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/file_table.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/file_table.js
@@ -128,7 +128,8 @@
    *     hitPosition where the horizontal position is hit in the column.
    */
   getHitColumn(x) {
-    for (var i = 0; x >= this.columns_[i].width; i++) {
+    let i = 0;
+    for (; x >= this.columns_[i].width; i++) {
       x -= this.columns_[i].width;
     }
     if (i >= this.columns_.length) {
@@ -395,7 +396,7 @@
     self.a11y = a11y;
 
     // Force the list's ending spacer to be tall enough to allow overscroll.
-    let endSpacer = self.querySelector('.spacer:last-child');
+    const endSpacer = self.querySelector('.spacer:last-child');
     if (endSpacer) {
       endSpacer.classList.add('signals-overscroll');
     }
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_tap_handler.js b/ui/file_manager/file_manager/foreground/js/ui/file_tap_handler.js
index a5bc1376..35ab509 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/file_tap_handler.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/file_tap_handler.js
@@ -91,7 +91,7 @@
    */
   handleTouchEvents(event, index, callback) {
     switch (event.type) {
-      case 'touchstart':
+      case 'touchstart': {
         // Only track the position of the single touch. However, we detect a
         // two-finger tap for opening a context menu of the target.
         if (event.touches.length == 2) {
@@ -108,7 +108,7 @@
         // can reset this.activeTouchId_ to undefined.
         // if (this.activeTouchId_ !== undefined)
         //   return;
-        var touch = event.targetTouches[0];
+        const touch = event.targetTouches[0];
         this.activeTouchId_ = touch.identifier;
         this.startTouchX_ = this.lastTouchX_ = touch.clientX;
         this.startTouchY_ = this.lastTouchY_ = touch.clientY;
@@ -130,13 +130,13 @@
             this.hasLongPressProcessed_ = true;
           }
         }, FileTapHandler.LONG_PRESS_THRESHOLD_MILLISECONDS);
-        break;
+      } break;
 
-      case 'touchmove':
+      case 'touchmove': {
         if (this.activeTouchId_ === undefined) {
           break;
         }
-        var touch = this.findActiveTouch_(event.changedTouches);
+        const touch = this.findActiveTouch_(event.changedTouches);
         if (!touch) {
           break;
         }
@@ -161,7 +161,7 @@
         }
         this.lastMoveX_ = moveX;
         this.lastMoveY_ = moveY;
-        break;
+      } break;
 
       case 'touchend':
         if (!this.tapStarted_) {
diff --git a/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js b/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js
index 3ae6d0ab..bdcd2a3 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js
@@ -494,28 +494,7 @@
 
     // Update an open view item.
     const newItem = targetGroup.getItem(item.id);
-    if (util.isFeedbackPanelEnabled()) {
-      this.updateFeedbackPanelItem(item, newItem);
-    } else {
-      let itemElement = this.getItemElement_(item.id);
-      if (newItem) {
-        if (!itemElement) {
-          itemElement =
-              new ProgressCenterItemElement(this.element_.ownerDocument);
-          // Find quiet node and insert the item before the quiet node.
-          this.openView_.insertBefore(
-              itemElement, this.openView_.querySelector('.quiet'));
-        }
-        itemElement.update(newItem, targetGroup.isAnimated(item.id));
-      } else {
-        if (itemElement) {
-          itemElement.parentNode.removeChild(itemElement);
-        }
-      }
-
-      // Update the close view.
-      this.updateCloseView_();
-    }
+    this.updateFeedbackPanelItem(item, newItem);
   }
 
   /**
@@ -534,17 +513,9 @@
     } else {
       const itemId = event.target.getAttribute('data-progress-id');
       targetGroup.completeItemAnimation(itemId);
-      if (util.isFeedbackPanelEnabled()) {
-        const panelItem = this.feedbackHost_.findPanelItemById(itemId);
-        if (panelItem) {
-          this.feedbackHost_.removePanelItem(panelItem);
-        }
-      } else {
-        const newItem = targetGroup.getItem(itemId);
-        const itemElement = this.getItemElement_(itemId);
-        if (!newItem && itemElement) {
-          itemElement.parentNode.removeChild(itemElement);
-        }
+      const panelItem = this.feedbackHost_.findPanelItemById(itemId);
+      if (panelItem) {
+        this.feedbackHost_.removePanelItem(panelItem);
       }
     }
     this.updateCloseView_();
diff --git a/ui/file_manager/file_manager/test/crostini_tasks.js b/ui/file_manager/file_manager/test/crostini_tasks.js
index 3cfd8af..32067dc 100644
--- a/ui/file_manager/file_manager/test/crostini_tasks.js
+++ b/ui/file_manager/file_manager/test/crostini_tasks.js
@@ -11,7 +11,7 @@
 
   // Save old fmp.getFileTasks and replace with version that returns
   // the internal linux package install handler
-  let oldGetFileTasks = chrome.fileManagerPrivate.getFileTasks;
+  const oldGetFileTasks = chrome.fileManagerPrivate.getFileTasks;
   chrome.fileManagerPrivate.getFileTasks = (entries, callback) => {
     setTimeout(
         callback, 0, [{
@@ -24,7 +24,7 @@
 
   // Save old fmp.getLinuxPackageInfo and replace with version that saves the
   // callback to manually call later
-  let oldGetLinuxPackageInfo = chrome.fileManagerPrivate.getLinuxPackageInfo;
+  const oldGetLinuxPackageInfo = chrome.fileManagerPrivate.getLinuxPackageInfo;
   let packageInfoCallback = null;
   chrome.fileManagerPrivate.getLinuxPackageInfo = (entry, callback) => {
     packageInfoCallback = callback;
diff --git a/ui/file_manager/file_manager/test/js/chrome_api_test_impl.js b/ui/file_manager/file_manager/test/js/chrome_api_test_impl.js
index d6cf407..f780073 100644
--- a/ui/file_manager/file_manager/test/js/chrome_api_test_impl.js
+++ b/ui/file_manager/file_manager/test/js/chrome_api_test_impl.js
@@ -10,6 +10,7 @@
  */
 
 // All testing functions in namespace 'test'.
+// eslint-disable-next-line
 var test = test || {};
 
 test.Event = class {
@@ -30,7 +31,7 @@
   /** @param {...*} args */
   dispatchEvent(...args) {
     setTimeout(() => {
-      for (let listener of this.listeners_) {
+      for (const listener of this.listeners_) {
         listener(...args);
       }
     }, 0);
@@ -149,9 +150,9 @@
     state_: {},
     local: {
       get: (keys, callback) => {
-        var keys = keys instanceof Array ? keys : [keys];
-        var result = {};
-        keys.forEach(key => {
+        const inKeys = keys instanceof Array ? keys : [keys];
+        const result = {};
+        inKeys.forEach(key => {
           if (key in chrome.storage.state_) {
             result[key] = chrome.storage.state_[key];
           }
@@ -159,7 +160,7 @@
         setTimeout(callback, 0, result);
       },
       set: (items, opt_callback) => {
-        for (var key in items) {
+        for (const key in items) {
           chrome.storage.state_[key] = items[key];
         }
         if (opt_callback) {
diff --git a/ui/file_manager/file_manager/test/js/chrome_file_manager_private_test_impl.js b/ui/file_manager/file_manager/test/js/chrome_file_manager_private_test_impl.js
index 424f800f..bbb008e8 100644
--- a/ui/file_manager/file_manager/test/js/chrome_file_manager_private_test_impl.js
+++ b/ui/file_manager/file_manager/test/js/chrome_file_manager_private_test_impl.js
@@ -79,9 +79,9 @@
   },
   getEntryProperties: (entries, names, callback) => {
     // Returns chrome.fileManagerPrivate.EntryProperties[].
-    var results = [];
+    const results = [];
     entries.forEach(entry => {
-      var props = {};
+      const props = {};
       names.forEach(name => {
         props[name] = entry.metadata[name];
       });
@@ -91,7 +91,7 @@
   },
   getFileTasks: (entries, callback) => {
     // Returns chrome.fileManagerPrivate.FileTask[].
-    var results = [];
+    const results = [];
     // Support for view-in-browser on single text file used by QuickView.
     if (entries.length == 1 && entries[0].metadata &&
         entries[0].metadata.contentMimeType == 'text/plain') {
@@ -142,8 +142,8 @@
     setTimeout(callback, 0, loadTimeData.data_);
   },
   getVolumeMetadataList: (callback) => {
-    var list = [];
-    for (var i = 0; i < mockVolumeManager.volumeInfoList.length; i++) {
+    const list = [];
+    for (let i = 0; i < mockVolumeManager.volumeInfoList.length; i++) {
       list.push(mockVolumeManager.volumeInfoList.item(i));
     }
     setTimeout(callback, 0, list);
@@ -205,7 +205,7 @@
   nextCopyId_: 0,
   startCopy: (entry, parentEntry, newName, callback) => {
     // Returns copyId immediately.
-    var copyId = chrome.fileManagerPrivate.nextCopyId_++;
+    const copyId = chrome.fileManagerPrivate.nextCopyId_++;
     callback(copyId);
     chrome.fileManagerPrivate.onCopyProgress.listeners_.forEach(l => {
       l(copyId, {type: 'begin_copy_entry', sourceUrl: entry.toURL()});
@@ -280,16 +280,17 @@
  * @param {function(!MockEntry)} successCallback Success callback.
  * @param {function(!Error)} errorCallback Error callback.
  */
+// eslint-disable-next-line
 var webkitResolveLocalFileSystemURL = (url, successCallback, errorCallback) => {
-  var match = url.match(/^filesystem:(\w+)(\/.*)/);
+  const match = url.match(/^filesystem:(\w+)(\/.*)/);
   if (match) {
-    var volumeType = /** @type {VolumeManagerCommon.VolumeType} */ (match[1]);
-    var path = match[2];
-    var volume = mockVolumeManager.getCurrentProfileVolumeInfo(volumeType);
+    const volumeType = /** @type {VolumeManagerCommon.VolumeType} */ (match[1]);
+    let path = match[2];
+    const volume = mockVolumeManager.getCurrentProfileVolumeInfo(volumeType);
     if (volume) {
       // Decode URI in file paths.
       path = path.split('/').map(decodeURIComponent).join('/');
-      var entry = volume.fileSystem.entries[path];
+      const entry = volume.fileSystem.entries[path];
       if (entry) {
         setTimeout(successCallback, 0, entry);
         return;
diff --git a/ui/file_manager/file_manager/test/js/test_util.js b/ui/file_manager/file_manager/test/js/test_util.js
index 3fe057d40..f22b913 100644
--- a/ui/file_manager/file_manager/test/js/test_util.js
+++ b/ui/file_manager/file_manager/test/js/test_util.js
@@ -5,6 +5,7 @@
 'use strict';
 
 // All testing functions in namespace 'test'.
+// eslint-disable-next-line
 var test = test || {};
 
 // Update paths for testing.
@@ -31,7 +32,7 @@
 test.loadData = function() {
   return Promise.all(Object.keys(test.DATA).map(filename => {
     return new Promise(resolve => {
-      var req = new XMLHttpRequest();
+      const req = new XMLHttpRequest();
       req.responseType = 'blob';
       req.onload = () => {
         test.DATA[filename] = req.response;
@@ -342,10 +343,10 @@
  *     pending.
  */
 test.pending = function(message, var_args) {
-  var index = 1;
-  var args = arguments;
-  var formattedMessage = message.replace(/%[sdj]/g, function(pattern) {
-    var arg = args[index++];
+  let index = 1;
+  const args = arguments;
+  const formattedMessage = message.replace(/%[sdj]/g, function(pattern) {
+    const arg = args[index++];
     switch (pattern) {
       case '%s':
         return String(arg);
@@ -357,7 +358,7 @@
         return pattern;
     }
   });
-  var pendingMarker = Object.create(test.pending.prototype);
+  const pendingMarker = Object.create(test.pending.prototype);
   pendingMarker.message = formattedMessage;
   return pendingMarker;
 };
@@ -371,9 +372,9 @@
  *     marker.
  */
 test.repeatUntil = function(checkFunction) {
-  var logTime = Date.now() + test.REPEAT_UNTIL_LOG_INTERVAL;
-  var loopCount = 0;
-  var step = function() {
+  let logTime = Date.now() + test.REPEAT_UNTIL_LOG_INTERVAL;
+  let loopCount = 0;
+  const step = function() {
     loopCount++;
     return Promise.resolve(checkFunction()).then(function(result) {
       if (!(result instanceof test.pending)) {
@@ -384,7 +385,7 @@
         logTime += test.REPEAT_UNTIL_LOG_INTERVAL;
       }
       // Repeat immediately for the first few, then wait between repeats.
-      var interval = loopCount <= test.REPEAT_UNTIL_IMMEDIATE_COUNT ?
+      const interval = loopCount <= test.REPEAT_UNTIL_IMMEDIATE_COUNT ?
           0 :
           test.REPEAT_UNTIL_INTERVAL;
       return new Promise(resolve => {
@@ -403,7 +404,7 @@
  */
 test.waitForElement = function(query) {
   return test.repeatUntil(() => {
-    let element = document.querySelector(query);
+    const element = document.querySelector(query);
     if (element) {
       return element;
     }
@@ -418,7 +419,7 @@
  */
 test.waitForElementLost = function(query) {
   return test.repeatUntil(() => {
-    var element = document.querySelector(query);
+    const element = document.querySelector(query);
     if (element) {
       return test.pending('Elements %s still exists.', query);
     }
@@ -528,10 +529,10 @@
  *     given contents.
  */
 test.waitForFiles = function(expected, opt_options) {
-  var options = opt_options || {};
-  var nextLog = Date.now() + test.REPEAT_UNTIL_LOG_INTERVAL;
+  const options = opt_options || {};
+  let nextLog = Date.now() + test.REPEAT_UNTIL_LOG_INTERVAL;
   return test.repeatUntil(function() {
-    var files = test.getFileList();
+    const files = test.getFileList();
     if (Date.now() > nextLog) {
       console.debug('waitForFiles', expected, files);
       nextLog = Date.now() + test.REPEAT_UNTIL_LOG_INTERVAL;
@@ -545,7 +546,7 @@
           if (a.length != b.length) {
             return false;
           }
-          for (var i = 0; i < files.length; i++) {
+          for (let i = 0; i < files.length; i++) {
             // Each row is [name, size, type, date].
             if ((!options.ignoreName && a[i][0] != b[i][0]) ||
                 (!options.ignoreSize && a[i][1] != b[i][1]) ||
diff --git a/ui/file_manager/file_manager/test/progress_center.js b/ui/file_manager/file_manager/test/progress_center.js
index bd8248c1..dcb6ec4b 100644
--- a/ui/file_manager/file_manager/test/progress_center.js
+++ b/ui/file_manager/file_manager/test/progress_center.js
@@ -10,7 +10,7 @@
  * @return {!ProgressCenterItem}
  */
 progressCenter.createItem = function(id, message) {
-  let item = new ProgressCenterItem();
+  const item = new ProgressCenterItem();
   item.id = id;
   item.message = message;
   return item;
diff --git a/ui/ozone/common/gpu/ozone_gpu_message_params.h b/ui/ozone/common/gpu/ozone_gpu_message_params.h
index 0797733..128252e 100644
--- a/ui/ozone/common/gpu/ozone_gpu_message_params.h
+++ b/ui/ozone/common/gpu/ozone_gpu_message_params.h
@@ -39,7 +39,8 @@
   display::DisplayConnectionType type = display::DISPLAY_CONNECTION_TYPE_NONE;
   bool is_aspect_preserving_scaling = false;
   bool has_overscan = false;
-  bool has_privacy_screen = false;
+  display::PrivacyScreenState privacy_screen_state =
+      display::PrivacyScreenState::kNotSupported;
   bool has_color_correction_matrix = false;
   bool color_correction_in_linear_space = false;
   gfx::ColorSpace color_space;
diff --git a/ui/ozone/common/gpu/ozone_gpu_messages.h b/ui/ozone/common/gpu/ozone_gpu_messages.h
index c16be207..67d5874d 100644
--- a/ui/ozone/common/gpu/ozone_gpu_messages.h
+++ b/ui/ozone/common/gpu/ozone_gpu_messages.h
@@ -39,6 +39,9 @@
 IPC_ENUM_TRAITS_MAX_VALUE(display::PanelOrientation,
                           display::PanelOrientation::kLast)
 
+IPC_ENUM_TRAITS_MAX_VALUE(display::PrivacyScreenState,
+                          display::PrivacyScreenState::kPrivacyScreenStateLast)
+
 // clang-format off
 IPC_STRUCT_TRAITS_BEGIN(ui::DisplayMode_Params)
   IPC_STRUCT_TRAITS_MEMBER(size)
@@ -53,7 +56,7 @@
   IPC_STRUCT_TRAITS_MEMBER(type)
   IPC_STRUCT_TRAITS_MEMBER(is_aspect_preserving_scaling)
   IPC_STRUCT_TRAITS_MEMBER(has_overscan)
-  IPC_STRUCT_TRAITS_MEMBER(has_privacy_screen)
+  IPC_STRUCT_TRAITS_MEMBER(privacy_screen_state)
   IPC_STRUCT_TRAITS_MEMBER(has_color_correction_matrix)
   IPC_STRUCT_TRAITS_MEMBER(color_correction_in_linear_space)
   IPC_STRUCT_TRAITS_MEMBER(color_space)
diff --git a/ui/ozone/platform/drm/common/drm_util.cc b/ui/ozone/platform/drm/common/drm_util.cc
index 427bb2584..34b1786 100644
--- a/ui/ozone/platform/drm/common/drm_util.cc
+++ b/ui/ozone/platform/drm/common/drm_util.cc
@@ -151,9 +151,24 @@
   return nullptr;
 }
 
-bool HasPrivacyScreen(int fd, drmModeConnector* connector) {
+display::PrivacyScreenState GetPrivacyScreenState(int fd,
+                                                  drmModeConnector* connector) {
   ScopedDrmPropertyPtr property;
-  return GetDrmProperty(fd, connector, "privacy-screen", &property) >= 0;
+  int index = GetDrmProperty(fd, connector, "privacy-screen", &property);
+  if (index < 0)
+    return display::PrivacyScreenState::kNotSupported;
+
+  DCHECK_LT(connector->prop_values[index],
+            display::PrivacyScreenState::kPrivacyScreenStateLast);
+  if (connector->prop_values[index] >=
+      display::PrivacyScreenState::kPrivacyScreenStateLast) {
+    LOG(ERROR) << "Invalid privacy-screen property value: Expected < "
+               << display::PrivacyScreenState::kPrivacyScreenStateLast
+               << ", but got: " << connector->prop_values[index];
+  }
+
+  return static_cast<display::PrivacyScreenState>(
+      connector->prop_values[index]);
 }
 
 bool IsAspectPreserving(int fd, drmModeConnector* connector) {
@@ -445,7 +460,8 @@
       IsAspectPreserving(fd, info->connector());
   const display::PanelOrientation panel_orientation =
       GetPanelOrientation(fd, info->connector());
-  const bool has_privacy_screen = HasPrivacyScreen(fd, info->connector());
+  const display::PrivacyScreenState privacy_screen_state =
+      GetPrivacyScreenState(fd, info->connector());
   const bool has_color_correction_matrix =
       HasColorCorrectionMatrix(fd, info->crtc()) ||
       HasPerPlaneColorCorrectionMatrix(fd, info->crtc());
@@ -501,7 +517,7 @@
 
   return std::make_unique<display::DisplaySnapshot>(
       display_id, origin, physical_size, type, is_aspect_preserving_scaling,
-      has_overscan, has_privacy_screen, has_color_correction_matrix,
+      has_overscan, privacy_screen_state, has_color_correction_matrix,
       color_correction_in_linear_space, display_color_space, bits_per_channel,
       display_name, sys_path, std::move(modes), panel_orientation, edid,
       current_mode, native_mode, product_code, year_of_manufacture,
@@ -521,7 +537,7 @@
     p.type = d->type();
     p.is_aspect_preserving_scaling = d->is_aspect_preserving_scaling();
     p.has_overscan = d->has_overscan();
-    p.has_privacy_screen = d->has_privacy_screen();
+    p.privacy_screen_state = d->privacy_screen_state();
     p.has_color_correction_matrix = d->has_color_correction_matrix();
     p.color_correction_in_linear_space = d->color_correction_in_linear_space();
     p.color_space = d->color_space();
@@ -570,7 +586,7 @@
   return std::make_unique<display::DisplaySnapshot>(
       params.display_id, params.origin, params.physical_size, params.type,
       params.is_aspect_preserving_scaling, params.has_overscan,
-      params.has_privacy_screen, params.has_color_correction_matrix,
+      params.privacy_screen_state, params.has_color_correction_matrix,
       params.color_correction_in_linear_space, params.color_space,
       params.bits_per_channel, params.display_name, params.sys_path,
       std::move(modes), params.panel_orientation, params.edid, current_mode,
diff --git a/ui/views/animation/ink_drop_host_view.h b/ui/views/animation/ink_drop_host_view.h
index 2b6056a..846a4a7f 100644
--- a/ui/views/animation/ink_drop_host_view.h
+++ b/ui/views/animation/ink_drop_host_view.h
@@ -77,9 +77,9 @@
   virtual std::unique_ptr<InkDropHighlight> CreateInkDropHighlight() const;
 
   // Subclasses can override to return a mask for the ink drop. By default,
-  // returns nullptr (i.e no mask).
-  // TODO(bruthig): InkDropMasks do not currently work on Windows. See
-  // https://crbug.com/713359.
+  // this generates a mask based on HighlightPathGenerator.
+  // TODO(pbos): Replace overrides with HighlightPathGenerator usage and remove
+  // this function.
   virtual std::unique_ptr<views::InkDropMask> CreateInkDropMask() const;
 
   // Returns the base color for the ink drop.
diff --git a/ui/views/controls/button/menu_button_controller.cc b/ui/views/controls/button/menu_button_controller.cc
index 0175b60..a64fec6 100644
--- a/ui/views/controls/button/menu_button_controller.cc
+++ b/ui/views/controls/button/menu_button_controller.cc
@@ -89,12 +89,22 @@
 MenuButtonController::~MenuButtonController() = default;
 
 bool MenuButtonController::OnMousePressed(const ui::MouseEvent& event) {
+  // Sets true if the amount of time since the last |menu_closed_time_| is
+  // large enough for the current event to be considered an intentionally
+  // different event.
+  is_intentional_menu_trigger_ =
+      (TimeTicks::Now() - menu_closed_time_) >= kMinimumTimeBetweenButtonClicks;
+
   if (button()->request_focus_on_press())
     button()->RequestFocus();
   if (button()->state() != Button::STATE_DISABLED &&
       button()->HitTestPoint(event.location()) && IsTriggerableEvent(event)) {
     return Activate(&event);
   }
+
+  // If this is an unintentional trigger do not display the inkdrop.
+  if (!is_intentional_menu_trigger_)
+    button()->AnimateInkDrop(InkDropState::HIDDEN, &event);
   return true;
 }
 
@@ -184,7 +194,7 @@
 
 bool MenuButtonController::IsTriggerableEvent(const ui::Event& event) {
   return ButtonController::IsTriggerableEvent(event) &&
-         IsTriggerableEventType(event) && IsIntentionalMenuTrigger();
+         IsTriggerableEventType(event) && is_intentional_menu_trigger_;
 }
 
 void MenuButtonController::OnGestureEvent(ui::GestureEvent* event) {
@@ -290,11 +300,6 @@
   return event.type() == ui::ET_GESTURE_TAP;
 }
 
-bool MenuButtonController::IsIntentionalMenuTrigger() const {
-  return (TimeTicks::Now() - menu_closed_time_) >=
-         kMinimumTimeBetweenButtonClicks;
-}
-
 void MenuButtonController::IncrementPressedLocked(
     bool snap_ink_drop_to_activated,
     const ui::LocatedEvent* event) {
diff --git a/ui/views/controls/button/menu_button_controller.h b/ui/views/controls/button/menu_button_controller.h
index d8d8f64..35b8bf30 100644
--- a/ui/views/controls/button/menu_button_controller.h
+++ b/ui/views/controls/button/menu_button_controller.h
@@ -77,10 +77,6 @@
   // menu, this is distinct from IsTriggerableEvent().
   bool IsTriggerableEventType(const ui::Event& event);
 
-  // Returns true if the amount of time since the last menu_closed_time_ is
-  // large enough to be considered an intentionally different event.
-  bool IsIntentionalMenuTrigger() const;
-
  private:
   // Increment/decrement the number of "pressed" locks this button has, and
   // set the state accordingly. The ink drop is snapped to the final ACTIVATED
@@ -103,6 +99,9 @@
   // Windows, the button is not part of the displayed menu.
   base::TimeTicks menu_closed_time_;
 
+  // Tracks if the current triggering event should open a menu.
+  bool is_intentional_menu_trigger_ = true;
+
   // The current number of "pressed" locks this button has.
   int pressed_lock_count_ = 0;