diff --git a/DEPS b/DEPS
index 6132c5ef..b505803 100644
--- a/DEPS
+++ b/DEPS
@@ -310,19 +310,19 @@
   # 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': '6f86d51c4f64695958fc3e4d576675a830251cf6',
+  'skia_revision': 'eecb5bde7c87eaeeb26ed29996f9bd8cb3e36424',
   # 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': '67598a209f116653ca6f288adf71d882bded996d',
+  'v8_revision': '8a49dfc5d8f0d4608a90b20d3c162af622b63c6f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '0c7bf62731823e241fb618b2a98998677656285d',
+  'angle_revision': '1c472132494b1bea80ddef6b5885b6383018742a',
   # 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': '84c3e65304cf599d20a93b5132e4fe39421a2b10',
+  'swiftshader_revision': '9848662280318a13ebdb559fd4e82b6c2007be80',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -425,7 +425,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '30f51b94da225f8cbffb18ee8a9f176f6df469d0',
+  'dawn_revision': 'eb7e66147cba19dca8e2d0feced7f7f2fd85148f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -453,7 +453,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling nearby
   # and whatever else without interference from each other.
-  'nearby_revision': '9f9b3d26d1030f91aa8bfcb84aa745f4f1a0f2a3',
+  'nearby_revision': '756501bf3fc6b4c3266d1ff6ebcf04e39500f28c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling securemessage
   # and whatever else without interference from each other.
@@ -493,7 +493,7 @@
 
   # If you change this, also update the libc++ revision in
   # //buildtools/deps_revisions.gni.
-  'libcxx_revision':       'd128f2b2f6a166db6b367a30086e3104d44ef602',
+  'libcxx_revision':       'cec1dd0bf658dd8ddae22213787da36cedd1e8fb',
 
   # GN CIPD package version.
   'gn_version': 'git_revision:cc28efe62ef0c2fb32455f414a29c4a55bb7fbc4',
@@ -807,7 +807,7 @@
     Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248',
 
   'src/docs/website': {
-    'url': Var('chromium_git') + '/website.git' + '@' + '38ee55ec5843ff5cdea44485874000c2ababb711',
+    'url': Var('chromium_git') + '/website.git' + '@' + '27733dbd192542ac45ba7654206d73ddd7c263ff',
   },
 
   'src/ios/third_party/earl_grey2/src': {
@@ -1052,7 +1052,7 @@
       'packages': [
           {
                'package': 'chromium/third_party/android_build_tools/lint',
-               'version': 'JpRGSVY_dRFR9MLSN_235CfYK4S9jovg0yqlX98htXIC',
+               'version': '5VEarWAn_3EKCg2sfWwuJwgimmh4wV86NgyCEVR-1GYC',
           },
       ],
       'condition': 'checkout_android',
@@ -1063,7 +1063,7 @@
       'packages': [
           {
                'package': 'chromium/third_party/android_build_tools/manifest_merger',
-               'version': 'tAZpJUnwhFBJmu1ctEKYMLJp7l3qJufDu7ByW6waq3QC',
+               'version': 'XhGZiPc3z6aGVUr2C_t4rtWPdqtON_KEjj1eAl4ubgAC',
           },
       ],
       'condition': 'checkout_android',
@@ -1808,7 +1808,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'e77a9f259c7e08893b11a1296c3a0b2d7821db42',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'c69188d15a7228c2fb7997df4b8788f34cb0853f',
+    Var('webrtc_git') + '/src.git' + '@' + 'a3253e35b13483684870a86d09534bbd582924ad',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1881,7 +1881,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@240891d929def6068790267e1ff607c2420e1036',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@6bc737d8e533a3e9e26922bc4b1f2500b2c4e287',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/browser/aw_feature_list_creator.cc b/android_webview/browser/aw_feature_list_creator.cc
index 550de57..8066df81 100644
--- a/android_webview/browser/aw_feature_list_creator.cc
+++ b/android_webview/browser/aw_feature_list_creator.cc
@@ -250,20 +250,20 @@
   auto* metrics_client = AwMetricsServiceClient::GetInstance();
   const base::CommandLine* command_line =
       base::CommandLine::ForCurrentProcess();
-  // Populate FieldTrialList. Since |low_entropy_provider| is null, it will fall
-  // back to the provider we previously gave to FieldTrialList, which is a low
-  // entropy provider. The X-Client-Data header is not reported on WebView, so
-  // we pass an empty object as the |low_entropy_source_value|.
+
+  // Populate FieldTrialList.
   // If you update this, consider whether "WebViewEnvironment" in
   // components/variations/variations_seed_processor_unittest.cc needs updates.
+  // Passing null low_entropy_source_value to suppress adding the VariationsId
+  // for it. TODO(b/183955043): Re-evaluate if this is necessary.
   variations_field_trial_creator_->SetUpFieldTrials(
       variation_ids,
       command_line->GetSwitchValueASCII(
           variations::switches::kForceVariationIds),
       GetSwitchDependentFeatureOverrides(*command_line),
-      /*low_entropy_provider=*/nullptr, std::move(feature_list),
-      metrics_client->metrics_state_manager(), aw_field_trials_.get(),
-      &ignored_safe_seed_manager, /*low_entropy_source_value=*/absl::nullopt);
+      std::move(feature_list), metrics_client->metrics_state_manager(),
+      aw_field_trials_.get(), &ignored_safe_seed_manager,
+      /*low_entropy_source_value=*/absl::nullopt);
 }
 
 }  // namespace android_webview
diff --git a/ash/frame/caption_buttons/frame_caption_button_container_view_unittest.cc b/ash/frame/caption_buttons/frame_caption_button_container_view_unittest.cc
index 76f50318..89f9736 100644
--- a/ash/frame/caption_buttons/frame_caption_button_container_view_unittest.cc
+++ b/ash/frame/caption_buttons/frame_caption_button_container_view_unittest.cc
@@ -16,6 +16,7 @@
 #include "chromeos/ui/base/window_state_type.h"
 #include "chromeos/ui/vector_icons/vector_icons.h"
 #include "chromeos/ui/wm/features.h"
+#include "ui/aura/client/aura_constants.h"
 #include "ui/events/test/event_generator.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/views/test/test_views.h"
@@ -372,6 +373,8 @@
 TEST_F(WindowFloatButtonTest, TestFloatButtonBehavior) {
   auto* widget = CreateTestWidget(MAXIMIZE_ALLOWED, MINIMIZE_ALLOWED,
                                   CLOSE_BUTTON_VISIBLE);
+  widget->GetNativeWindow()->SetProperty(
+      aura::client::kAppType, static_cast<int>(ash::AppType::BROWSER));
   widget->Show();
 
   FrameCaptionButtonContainerView container(widget);
diff --git a/ash/frame/caption_buttons/frame_size_button_unittest.cc b/ash/frame/caption_buttons/frame_size_button_unittest.cc
index e4f3387..75528f63 100644
--- a/ash/frame/caption_buttons/frame_size_button_unittest.cc
+++ b/ash/frame/caption_buttons/frame_size_button_unittest.cc
@@ -24,6 +24,7 @@
 #include "chromeos/ui/frame/multitask_menu/split_button_view.h"
 #include "chromeos/ui/vector_icons/vector_icons.h"
 #include "chromeos/ui/wm/features.h"
+#include "ui/aura/client/aura_constants.h"
 #include "ui/aura/window.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
@@ -158,6 +159,8 @@
 
     widget_delegate_ = new TestWidgetDelegate(resizable_);
     widget_ = CreateWidget(widget_delegate_);
+    widget_->GetNativeWindow()->SetProperty(aura::client::kAppType,
+                                            static_cast<int>(AppType::BROWSER));
     window_state_ = WindowState::Get(widget_->GetNativeWindow());
 
     FrameCaptionButtonContainerView::TestApi test(
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn
index fe3e333b..eb938fe 100644
--- a/ash/resources/vector_icons/BUILD.gn
+++ b/ash/resources/vector_icons/BUILD.gn
@@ -65,8 +65,10 @@
     "check.icon",
     "check_circle.icon",
     "chevron_down.icon",
-    "chevron_right.icon",
+    "chevron_down_small.icon",
+    "chevron_right_small.icon",
     "chevron_up.icon",
+    "chevron_up_small.icon",
     "clipboard.icon",
     "clipboard_empty.icon",
     "clipboard_launcher_inner.icon",
diff --git a/ash/resources/vector_icons/chevron_down_small.icon b/ash/resources/vector_icons/chevron_down_small.icon
new file mode 100644
index 0000000..f4444975
--- /dev/null
+++ b/ash/resources/vector_icons/chevron_down_small.icon
@@ -0,0 +1,13 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 20,
+R_MOVE_TO, 13.83f, 6.67f,
+R_LINE_TO, -3.82f, 4.12f,
+R_LINE_TO, -3.82f, -4.12f,
+R_LINE_TO, -1.17f, 1.27f,
+R_LINE_TO, 5, 5.4f,
+R_LINE_TO, 5, -5.4f,
+R_LINE_TO, -1.17f, -1.27f,
+CLOSE
diff --git a/ash/resources/vector_icons/chevron_right.icon b/ash/resources/vector_icons/chevron_right_small.icon
similarity index 71%
rename from ash/resources/vector_icons/chevron_right.icon
rename to ash/resources/vector_icons/chevron_right_small.icon
index 4d7ec94..b9d4fc3 100644
--- a/ash/resources/vector_icons/chevron_right.icon
+++ b/ash/resources/vector_icons/chevron_right_small.icon
@@ -5,9 +5,9 @@
 CANVAS_DIMENSIONS, 20,
 MOVE_TO, 6.67f, 13.83f,
 LINE_TO, 10.79f, 10,
-LINE_TO, 6.67f, 6.18f,
+R_LINE_TO, -4.12f, -3.82f,
 LINE_TO, 7.94f, 5,
-LINE_TO, 13.33f, 10,
-LINE_TO, 7.94f, 15,
-LINE_TO, 6.67f, 13.83f,
+R_LINE_TO, 5.4f, 5,
+R_LINE_TO, -5.4f, 5,
+R_LINE_TO, -1.27f, -1.17f,
 CLOSE
diff --git a/ash/resources/vector_icons/chevron_up_small.icon b/ash/resources/vector_icons/chevron_up_small.icon
new file mode 100644
index 0000000..e8c2e61
--- /dev/null
+++ b/ash/resources/vector_icons/chevron_up_small.icon
@@ -0,0 +1,13 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 20,
+MOVE_TO, 13.83f, 13.33f,
+LINE_TO, 10, 9.21f,
+R_LINE_TO, -3.82f, 4.12f,
+LINE_TO, 5, 12.07f,
+R_LINE_TO, 5, -5.4f,
+R_LINE_TO, 5, 5.4f,
+R_LINE_TO, -1.17f, 1.27f,
+CLOSE
diff --git a/ash/system/eche/eche_tray.cc b/ash/system/eche/eche_tray.cc
index 4805e44..0f348b6 100644
--- a/ash/system/eche/eche_tray.cc
+++ b/ash/system/eche/eche_tray.cc
@@ -348,13 +348,13 @@
 void EcheTray::OnKeyboardUIDestroyed() {
   if (!IsBubbleVisible())
     return;
-  UpdateBubbleBounds();
+  UpdateEcheSizeAndBubbleBounds();
 }
 
 void EcheTray::OnKeyboardHidden(bool is_temporary_hide) {
   if (!IsBubbleVisible())
     return;
-  UpdateBubbleBounds();
+  UpdateEcheSizeAndBubbleBounds();
 }
 
 void EcheTray::SetUrl(const GURL& url) {
@@ -675,22 +675,21 @@
   return phone_hub_tray->eche_loading_indicator();
 }
 
-void EcheTray::UpdateBubbleBounds() {
+void EcheTray::UpdateEcheSizeAndBubbleBounds() {
   if (!bubble_ || !bubble_->GetBubbleView())
     return;
+  gfx::Size eche_size = CalculateSizeForEche();
+  bubble_->GetBubbleView()->SetPreferredWidth(eche_size.width());
+  web_view_->SetPreferredSize(eche_size);
   bubble_->GetBubbleView()->ChangeAnchorRect(GetAnchor());
 }
 
 void EcheTray::OnDisplayConfigurationChanged() {
-  UpdateBubbleBounds();
+  UpdateEcheSizeAndBubbleBounds();
 }
 
 void EcheTray::OnAutoHideStateChanged(ShelfAutoHideState state) {
-  UpdateBubbleBounds();
-}
-
-void EcheTray::OnShelfIconPositionsChanged() {
-  UpdateBubbleBounds();
+  UpdateEcheSizeAndBubbleBounds();
 }
 
 void EcheTray::OnTabletModeStarted() {
@@ -706,11 +705,11 @@
 }
 
 void EcheTray::OnTabletModeEnded() {
-  UpdateBubbleBounds();
+  UpdateEcheSizeAndBubbleBounds();
 }
 void EcheTray::OnShelfAlignmentChanged(aura::Window* root_window,
                                        ShelfAlignment old_alignment) {
-  UpdateBubbleBounds();
+  UpdateEcheSizeAndBubbleBounds();
 }
 
 gfx::Rect EcheTray::GetAnchor() {
diff --git a/ash/system/eche/eche_tray.h b/ash/system/eche/eche_tray.h
index da18358..e919fae 100644
--- a/ash/system/eche/eche_tray.h
+++ b/ash/system/eche/eche_tray.h
@@ -179,6 +179,9 @@
 
  private:
   FRIEND_TEST_ALL_PREFIXES(EcheTrayTest, EcheTrayCreatesBubbleButHideFirst);
+  FRIEND_TEST_ALL_PREFIXES(EcheTrayTest, EcheTrayOnDisplayConfigurationChanged);
+  FRIEND_TEST_ALL_PREFIXES(EcheTrayTest,
+                           EcheTrayKeyboardShowHideUpdateBubbleBounds);
 
   // Intercepts all the events targeted to the internal webview in order to
   // process the accelerator keys.
@@ -217,15 +220,14 @@
   PhoneHubTray* GetPhoneHubTray();
   EcheIconLoadingIndicatorView* GetLoadingIndicator();
 
-  // Updates the bubble's position based on the movements of the shelf.
-  void UpdateBubbleBounds();
+  // Resize Eche size and update the bubble's position.
+  void UpdateEcheSizeAndBubbleBounds();
 
   // ScreenLayoutObserver:
   void OnDisplayConfigurationChanged() override;
 
   // ShelfObserver:
   void OnAutoHideStateChanged(ShelfAutoHideState new_state) override;
-  void OnShelfIconPositionsChanged() override;
 
   // TabletModeObserver:
   void OnTabletModeStarted() override;
diff --git a/ash/system/eche/eche_tray_unittest.cc b/ash/system/eche/eche_tray_unittest.cc
index 0831e6f..c946ed4 100644
--- a/ash/system/eche/eche_tray_unittest.cc
+++ b/ash/system/eche/eche_tray_unittest.cc
@@ -7,6 +7,10 @@
 #include <memory>
 #include <string>
 
+#include "ash/bubble/bubble_constants.h"
+#include "ash/keyboard/ui/keyboard_ui_controller.h"
+#include "ash/keyboard/ui/test/keyboard_test_util.h"
+#include "ash/public/cpp/keyboard/keyboard_switches.h"
 #include "ash/public/cpp/system/toast_manager.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
@@ -77,6 +81,9 @@
 
     DCHECK(test_web_view_factory_.get());
 
+    base::CommandLine::ForCurrentProcess()->AppendSwitch(
+        keyboard::switches::kEnableVirtualKeyboard);
+
     AshTestBase::SetUp();
 
     eche_tray_ = StatusAreaWidgetTestHelper::GetStatusAreaWidget()->eche_tray();
@@ -471,4 +478,59 @@
   EXPECT_TRUE(is_web_content_unloaded_);
 }
 
+TEST_F(EcheTrayTest, EcheTrayOnDisplayConfigurationChanged) {
+  UpdateDisplay("800x600");
+  gfx::Size expected_eche_size = eche_tray()->CalculateSizeForEche();
+  eche_tray()->LoadBubble(GURL("http://google.com"), CreateTestImage(),
+                          u"app 1");
+  eche_tray()->ShowBubble();
+
+  EXPECT_EQ(expected_eche_size.width(),
+            eche_tray()->get_bubble_wrapper_for_test()->bubble_view()->width());
+  EXPECT_EQ(
+      expected_eche_size.height(),
+      eche_tray()->get_web_view_for_test()->height() + kBubbleMenuPadding * 2);
+
+  UpdateDisplay("1024x786");
+  expected_eche_size = eche_tray()->CalculateSizeForEche();
+
+  eche_tray()->OnDisplayConfigurationChanged();
+
+  EXPECT_EQ(expected_eche_size.width(),
+            eche_tray()->get_bubble_wrapper_for_test()->bubble_view()->width());
+  EXPECT_EQ(
+      expected_eche_size.height(),
+      eche_tray()->get_web_view_for_test()->height() + kBubbleMenuPadding * 2);
+}
+
+TEST_F(EcheTrayTest, EcheTrayKeyboardShowHideUpdateBubbleBounds) {
+  gfx::Size expected_eche_size = eche_tray()->CalculateSizeForEche();
+  eche_tray()->LoadBubble(GURL("http://google.com"), CreateTestImage(),
+                          u"app 1");
+  eche_tray()->ShowBubble();
+
+  EXPECT_EQ(expected_eche_size.width(),
+            eche_tray()->get_bubble_wrapper_for_test()->bubble_view()->width());
+  EXPECT_EQ(
+      expected_eche_size.height(),
+      eche_tray()->get_web_view_for_test()->height() + kBubbleMenuPadding * 2);
+
+  // Place a keyboard window.
+  auto* keyboard_controller = keyboard::KeyboardUIController::Get();
+  keyboard_controller->ShowKeyboard(/*lock=*/true);
+  ASSERT_TRUE(keyboard::WaitUntilShown());
+
+  EXPECT_EQ(expected_eche_size.width(),
+            eche_tray()->get_bubble_wrapper_for_test()->bubble_view()->width());
+
+  // Hide the keyboard
+  keyboard_controller->HideKeyboardByUser();
+
+  EXPECT_EQ(expected_eche_size.width(),
+            eche_tray()->get_bubble_wrapper_for_test()->bubble_view()->width());
+  EXPECT_EQ(
+      expected_eche_size.height(),
+      eche_tray()->get_web_view_for_test()->height() + kBubbleMenuPadding * 2);
+}
+
 }  // namespace ash
diff --git a/ash/system/holding_space/downloads_section.cc b/ash/system/holding_space/downloads_section.cc
index ef1da8d7..c9be161 100644
--- a/ash/system/holding_space/downloads_section.cc
+++ b/ash/system/holding_space/downloads_section.cc
@@ -89,7 +89,7 @@
 
     // Chevron.
     chevron_->SetImage(gfx::CreateVectorIcon(
-        kChevronRightIcon, kHoldingSpaceSectionChevronIconSize,
+        kChevronRightSmallIcon, kHoldingSpaceSectionChevronIconSize,
         ash_color_provider->GetContentLayerColor(
             AshColorProvider::ContentLayerType::kIconColorPrimary)));
   }
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc
index 7bbebe1..5f72e85a 100644
--- a/ash/system/holding_space/holding_space_tray_unittest.cc
+++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -52,9 +52,7 @@
 #include "ui/compositor/test/layer_animation_stopped_waiter.h"
 #include "ui/events/base_event_utils.h"
 #include "ui/gfx/geometry/transform_util.h"
-#include "ui/gfx/image/image_skia_operations.h"
 #include "ui/gfx/paint_vector_icon.h"
-#include "ui/gfx/skbitmap_operations.h"
 #include "ui/gfx/skia_util.h"
 #include "ui/views/controls/image_view.h"
 #include "ui/views/controls/menu/menu_controller.h"
@@ -538,14 +536,11 @@
     auto* prefs = GetSessionControllerClient()->GetUserPrefService(account_id);
     ASSERT_TRUE(prefs);
 
-    const auto expected_chevron_skia =
-        gfx::ImageSkiaOperations::CreateRotatedImage(
-            gfx::CreateVectorIcon(
-                kChevronRightIcon, kHoldingSpaceSectionChevronIconSize,
-                AshColorProvider::Get()->GetContentLayerColor(
-                    AshColorProvider::ContentLayerType::kIconColorSecondary)),
-            expanded ? SkBitmapOperations::ROTATION_270_CW
-                     : SkBitmapOperations::ROTATION_90_CW);
+    const auto expected_chevron_skia = gfx::CreateVectorIcon(
+        expanded ? kChevronUpSmallIcon : kChevronDownSmallIcon,
+        kHoldingSpaceSectionChevronIconSize,
+        AshColorProvider::Get()->GetContentLayerColor(
+            AshColorProvider::ContentLayerType::kIconColorSecondary));
 
     // Changes to the section's expanded state should be stored persistently.
     EXPECT_EQ(holding_space_prefs::IsSuggestionsExpanded(prefs), expanded);
diff --git a/ash/system/holding_space/suggestions_section.cc b/ash/system/holding_space/suggestions_section.cc
index 3bbe50be..86115f8 100644
--- a/ash/system/holding_space/suggestions_section.cc
+++ b/ash/system/holding_space/suggestions_section.cc
@@ -25,9 +25,7 @@
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/rect_f.h"
 #include "ui/gfx/geometry/rrect_f.h"
-#include "ui/gfx/image/image_skia_operations.h"
 #include "ui/gfx/paint_vector_icon.h"
-#include "ui/gfx/skbitmap_operations.h"
 #include "ui/gfx/text_constants.h"
 #include "ui/views/controls/button/button.h"
 #include "ui/views/controls/focus_ring.h"
@@ -123,18 +121,13 @@
   // orientation (based on whether the `section_` is `expanded_`).
   void UpdateChevron() {
     auto* prefs = Shell::Get()->session_controller()->GetActivePrefService();
-    chevron_->SetImage(gfx::ImageSkiaOperations::CreateRotatedImage(
-        gfx::CreateVectorIcon(
-            kChevronRightIcon, kHoldingSpaceSectionChevronIconSize,
-            AshColorProvider::Get()->GetContentLayerColor(
-                AshColorProvider::ContentLayerType::kIconColorSecondary)),
-        // Rotate `kChevronRightIcon` to the correct orientation rather than use
-        // `kChevronUpIcon` or `kChevronDownIcon`, which both have different
-        // internal padding and therefore appear as a different size than the
-        // downloads section's chevron.
+    chevron_->SetImage(gfx::CreateVectorIcon(
         holding_space_prefs::IsSuggestionsExpanded(prefs)
-            ? SkBitmapOperations::ROTATION_270_CW
-            : SkBitmapOperations::ROTATION_90_CW));
+            ? kChevronUpSmallIcon
+            : kChevronDownSmallIcon,
+        kHoldingSpaceSectionChevronIconSize,
+        AshColorProvider::Get()->GetContentLayerColor(
+            AshColorProvider::ContentLayerType::kIconColorSecondary)));
   }
 
   // Owned by view hierarchy.
diff --git a/ash/system/phonehub/phone_hub_tray.cc b/ash/system/phonehub/phone_hub_tray.cc
index 157a927e..61cc42d 100644
--- a/ash/system/phonehub/phone_hub_tray.cc
+++ b/ash/system/phonehub/phone_hub_tray.cc
@@ -80,6 +80,7 @@
   }
   auto icon = std::make_unique<views::ImageButton>(base::BindRepeating(
       &PhoneHubTray::PhoneHubIconActivated, weak_factory_.GetWeakPtr()));
+  icon->SetFocusBehavior(FocusBehavior::NEVER);
   icon->SetTooltipText(
       l10n_util::GetStringUTF16(IDS_ASH_PHONE_HUB_TRAY_ACCESSIBLE_NAME));
   icon->SetImageVerticalAlignment(
diff --git a/ash/webui/os_feedback_ui/resources/help_content.html b/ash/webui/os_feedback_ui/resources/help_content.html
index d12a0a0..187add2 100644
--- a/ash/webui/os_feedback_ui/resources/help_content.html
+++ b/ash/webui/os_feedback_ui/resources/help_content.html
@@ -10,6 +10,7 @@
   .help-item {
     display: flex;
     margin:  12px 0 0;
+    padding: 0 4px 0 4px;
   }
 
   .help-item a {
@@ -25,6 +26,10 @@
     white-space: nowrap;
   }
 
+  .help-item a:focus {
+    outline: 2px solid var(--cros-focus-ring-color);
+  }
+
   .help-item-icon {
     --iron-icon-fill-color: var(--cros-text-color-secondary);
     --iron-icon-height: 20px;
@@ -58,7 +63,7 @@
   }
 
   #helpContentContainer {
-    overflow: hidden;
+    overflow: visible;
   }
 </style>
 <iron-media-query query="(prefers-color-scheme: dark)"
diff --git a/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html b/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
index 4c1e895..f12b143 100644
--- a/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
+++ b/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
@@ -173,5 +173,20 @@
       height: 20px;
       width: 20px;
     }
+
+    paper-tooltip::part(tooltip) {
+      border-radius: 2px;
+      font-family: var(--feedback-roboto-font-family);
+      font-size: 12px;
+      font-weight: var(--feedback-regular-font-weight);
+      line-height: 18px;
+      margin: auto 6px 0 6px;
+      padding: 3px 8px;
+    }
+
+    paper-tooltip {
+      --paper-tooltip-background: var(--cros-tooltip-background-color);
+      --paper-tooltip-text-color: var(--cros-tooltip-label-color);
+    }
   </style>
 </template>
diff --git a/ash/wm/float/float_controller_unittest.cc b/ash/wm/float/float_controller_unittest.cc
index 3c6b29f..84c3d44 100644
--- a/ash/wm/float/float_controller_unittest.cc
+++ b/ash/wm/float/float_controller_unittest.cc
@@ -90,18 +90,11 @@
 
 // Test float/unfloat window.
 TEST_F(WindowFloatTest, WindowFloatingSwitch) {
-  std::unique_ptr<aura::Window> window_1(CreateTestWindow());
-  std::unique_ptr<aura::Window> window_2(CreateTestWindow());
-
   // Activate `window_1` and perform floating.
-  wm::ActivateWindow(window_1.get());
-  PressAndReleaseKey(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN);
-  EXPECT_TRUE(WindowState::Get(window_1.get())->IsFloated());
+  std::unique_ptr<aura::Window> window_1(CreateFloatedWindow());
 
   // Activate `window_2` and perform floating.
-  wm::ActivateWindow(window_2.get());
-  PressAndReleaseKey(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN);
-  EXPECT_TRUE(WindowState::Get(window_2.get())->IsFloated());
+  std::unique_ptr<aura::Window> window_2(CreateFloatedWindow());
 
   // Only one floated window is allowed so when a different window is floated,
   // the previously floated window will be unfloated.
@@ -133,7 +126,7 @@
 // Tests that a floated window animates to and from overview.
 TEST_F(WindowFloatTest, FloatWindowAnimatesInOverview) {
   std::unique_ptr<aura::Window> floated_window = CreateFloatedWindow();
-  std::unique_ptr<aura::Window> maximized_window = CreateTestWindow();
+  std::unique_ptr<aura::Window> maximized_window = CreateAppWindow();
 
   const WMEvent maximize_event(WM_EVENT_MAXIMIZE);
   WindowState::Get(maximized_window.get())->OnWMEvent(&maximize_event);
@@ -272,19 +265,16 @@
   auto* desks_controller = DesksController::Get();
   NewDesk();
   ASSERT_EQ(2u, desks_controller->desks().size());
-  std::unique_ptr<aura::Window> window_1(CreateTestWindow());
 
   // Test creating floating window on different desk.
   // Float `window_1`.
-  PressAndReleaseKey(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN);
-  EXPECT_TRUE(WindowState::Get(window_1.get())->IsFloated());
+  std::unique_ptr<aura::Window> window_1(CreateFloatedWindow());
   // Move to desk 2.
   auto* desk_2 = desks_controller->desks()[1].get();
   ActivateDesk(desk_2);
   // `window_1` should not be visible since it's a different desk.
   EXPECT_FALSE(window_1->IsVisible());
-  std::unique_ptr<aura::Window> window_2(CreateTestWindow());
-  PressAndReleaseKey(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN);
+  std::unique_ptr<aura::Window> window_2(CreateFloatedWindow());
   // Both `window_1` and `window_2` should be floated since we allow one float
   // window per desk.
   EXPECT_TRUE(desk_2->is_active());
@@ -298,9 +288,7 @@
   NewDesk();
   auto* desk_1 = desks_controller->desks()[0].get();
   auto* desk_2 = desks_controller->desks()[1].get();
-  std::unique_ptr<aura::Window> window_1(CreateTestWindow());
-  // Float `window_1` at `desk_1`.
-  PressAndReleaseKey(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN);
+  std::unique_ptr<aura::Window> window_1(CreateFloatedWindow());
   // Move to `desk 2`.
   ActivateDesk(desk_2);
   // Float `window_2` at `desk_2`.
@@ -427,7 +415,6 @@
 
 TEST_F(TabletWindowFloatTest, TabletClamshellTransition) {
   auto window1 = CreateFloatedWindow();
-  ASSERT_TRUE(WindowState::Get(window1.get())->IsFloated());
 
   // Test that on entering tablet mode, we maintain float state.
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
@@ -437,7 +424,6 @@
   // floated window.
   auto window2 = CreateFloatedWindow();
   EXPECT_FALSE(WindowState::Get(window1.get())->IsFloated());
-  EXPECT_TRUE(WindowState::Get(window2.get())->IsFloated());
 
   // Test that on exiting tablet mode, we maintain float state.
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(false);
@@ -452,6 +438,8 @@
   aura::test::TestWindowDelegate window_delegate;
   std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate(
       &window_delegate, /*id=*/-1, gfx::Rect(300, 300)));
+  window->SetProperty(aura::client::kAppType,
+                      static_cast<int>(AppType::BROWSER));
   wm::ActivateWindow(window.get());
 
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
@@ -476,6 +464,8 @@
   std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate(
       &window_delegate, /*id=*/-1, gfx::Rect(850, 850)));
   window_delegate.set_minimum_size(gfx::Size(500, 500));
+  window->SetProperty(aura::client::kAppType,
+                      static_cast<int>(ash::AppType::BROWSER));
   wm::ActivateWindow(window.get());
 
   PressAndReleaseKey(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN);
@@ -494,6 +484,8 @@
   std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate(
       &window_delegate, /*id=*/-1, gfx::Rect(300, 300)));
   window_delegate.set_minimum_size(gfx::Size(400, 400));
+  window->SetProperty(aura::client::kAppType,
+                      static_cast<int>(ash::AppType::BROWSER));
   wm::ActivateWindow(window.get());
 
   // Enter tablet mode and float `window`.
diff --git a/ash/wm/tablet_mode/tablet_mode_multitask_menu_event_handler_unittest.cc b/ash/wm/tablet_mode/tablet_mode_multitask_menu_event_handler_unittest.cc
index ebbde3f7..e668c67 100644
--- a/ash/wm/tablet_mode/tablet_mode_multitask_menu_event_handler_unittest.cc
+++ b/ash/wm/tablet_mode/tablet_mode_multitask_menu_event_handler_unittest.cc
@@ -184,7 +184,7 @@
 // Tests that a scroll down gesture from the top center activates the
 // multitask menu.
 TEST_F(TabletModeMultitaskMenuEventHandlerTest, ShowMultitaskMenu) {
-  auto window = CreateTestWindow();
+  auto window = CreateAppWindow();
 
   ShowMultitaskMenu(*window);
 
diff --git a/base/allocator/partition_allocator/PartitionAlloc.md b/base/allocator/partition_allocator/PartitionAlloc.md
index 88b911b..4cc3a48 100644
--- a/base/allocator/partition_allocator/PartitionAlloc.md
+++ b/base/allocator/partition_allocator/PartitionAlloc.md
@@ -12,6 +12,10 @@
 * [Build Config](./build_config.md): Pertinent GN args, buildflags, and
   macros.
 
+* [Chrome-External Builds](./external_builds.md): Further considerations
+  for standalone PartitionAlloc, plus an embedder's guide for some extra
+  GN args.
+
 ## Overview
 
 PartitionAlloc is a memory allocator optimized for space efficiency,
diff --git a/base/strings/string_util.h b/base/strings/string_util.h
index 23e794eb..33d4eae 100644
--- a/base/strings/string_util.h
+++ b/base/strings/string_util.h
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <initializer_list>
+#include <sstream>
 #include <string>
 #include <type_traits>
 #include <vector>
@@ -110,6 +111,14 @@
   return MakeBasicStringPiece<wchar_t>(begin, end);
 }
 
+// Convert a type with defined `operator<<` into a string.
+template <typename... Streamable>
+std::string StreamableToString(const Streamable&... values) {
+  std::ostringstream ss;
+  (ss << ... << values);
+  return ss.str();
+}
+
 // ASCII-specific tolower.  The standard library's tolower is locale sensitive,
 // so we don't want to use it here.
 template <typename CharT,
diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc
index fa4e99de..d0926fda 100644
--- a/base/strings/string_util_unittest.cc
+++ b/base/strings/string_util_unittest.cc
@@ -1327,6 +1327,28 @@
   EXPECT_TRUE(MakeWStringPiece(baz.end(), baz.end()).empty());
 }
 
+enum class StreamableTestEnum { kGreeting, kLocation };
+
+std::ostream& operator<<(std::ostream& os, const StreamableTestEnum& value) {
+  switch (value) {
+    case StreamableTestEnum::kGreeting:
+      return os << "hello";
+    case StreamableTestEnum::kLocation:
+      return os << "world";
+  }
+}
+
+TEST(StringUtilTest, StreamableToString) {
+  EXPECT_EQ(StreamableToString("foo"), "foo");
+  EXPECT_EQ(StreamableToString(123), "123");
+  EXPECT_EQ(StreamableToString(StreamableTestEnum::kGreeting), "hello");
+  EXPECT_EQ(StreamableToString(StreamableTestEnum::kGreeting, " ",
+                               StreamableTestEnum::kLocation),
+            "hello world");
+  EXPECT_EQ(StreamableToString("42 in hex is ", std::hex, 42),
+            "42 in hex is 2a");
+}
+
 TEST(StringUtilTest, RemoveChars) {
   const char kRemoveChars[] = "-/+*";
   std::string input = "A-+bc/d!*";
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1
index 0262d858..a2c3f1d 100644
--- a/build/fuchsia/linux_internal.sdk.sha1
+++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@
-9.20220909.2.1
+9.20220920.3.1
diff --git a/buildtools/deps_revisions.gni b/buildtools/deps_revisions.gni
index 80c8a46..d34a3ee 100644
--- a/buildtools/deps_revisions.gni
+++ b/buildtools/deps_revisions.gni
@@ -5,5 +5,5 @@
 declare_args() {
   # Used to cause full rebuilds on libc++ rolls. This should be kept in sync
   # with the libcxx_revision vars in //DEPS.
-  libcxx_revision = "d128f2b2f6a166db6b367a30086e3104d44ef602"
+  libcxx_revision = "cec1dd0bf658dd8ddae22213787da36cedd1e8fb"
 }
diff --git a/cc/animation/animation_host.cc b/cc/animation/animation_host.cc
index e477a0a..f4c9ab84 100644
--- a/cc/animation/animation_host.cc
+++ b/cc/animation/animation_host.cc
@@ -259,6 +259,13 @@
   RemoveFromTicking(animation);
 }
 
+void AnimationHost::UpdateClientAnimationStateForElementAnimations(
+    ElementId element_id) {
+  auto* element_animations = GetElementAnimationsForElementId(element_id).get();
+  if (element_animations)
+    element_animations->UpdateClientAnimationState();
+}
+
 void AnimationHost::SetMutatorHostClient(MutatorHostClient* client) {
   if (mutator_host_client() == client)
     return;
@@ -414,13 +421,14 @@
       TakePendingThroughputTrackerInfos();
 }
 
-scoped_refptr<const ElementAnimations>
-AnimationHost::GetElementAnimationsForElementId(ElementId element_id) const {
+const ElementAnimations* AnimationHost::GetElementAnimationsForElementId(
+    ElementId element_id) const {
   if (!element_id)
     return nullptr;
   auto iter = element_to_animations_map_.Read(*this).find(element_id);
-  return iter == element_to_animations_map_.Read(*this).end() ? nullptr
-                                                              : iter->second;
+  return iter == element_to_animations_map_.Read(*this).end()
+             ? nullptr
+             : iter->second.get();
 }
 
 scoped_refptr<ElementAnimations>
@@ -432,6 +440,12 @@
                                                                : iter->second;
 }
 
+scoped_refptr<const ElementAnimations>
+AnimationHost::GetElementAnimationsForElementIdForTesting(
+    ElementId element_id) const {
+  return GetElementAnimationsForElementId(element_id);
+}
+
 gfx::PointF AnimationHost::GetScrollOffsetForAnimation(
     ElementId element_id) const {
   DCHECK(property_trees_);
@@ -635,7 +649,7 @@
 
 bool AnimationHost::ScrollOffsetAnimationWasInterrupted(
     ElementId element_id) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   return element_animations
              ? element_animations->ScrollOffsetAnimationWasInterrupted()
              : false;
@@ -644,7 +658,7 @@
 bool AnimationHost::IsAnimatingProperty(ElementId element_id,
                                         ElementListType list_type,
                                         TargetProperty::Type property) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   return element_animations ? element_animations->IsCurrentlyAnimatingProperty(
                                   property, list_type)
                             : false;
@@ -654,7 +668,7 @@
     ElementId element_id,
     ElementListType list_type,
     TargetProperty::Type property) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   return element_animations
              ? element_animations->IsPotentiallyAnimatingProperty(property,
                                                                   list_type)
@@ -664,7 +678,7 @@
 bool AnimationHost::HasAnyAnimationTargetingProperty(
     ElementId element_id,
     TargetProperty::Type property) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   if (!element_animations)
     return false;
 
@@ -674,7 +688,7 @@
 
 bool AnimationHost::AnimationsPreserveAxisAlignment(
     ElementId element_id) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   return element_animations
              ? element_animations->AnimationsPreserveAxisAlignment()
              : true;
@@ -682,19 +696,21 @@
 
 float AnimationHost::MaximumScale(ElementId element_id,
                                   ElementListType list_type) const {
-  if (auto element_animations = GetElementAnimationsForElementId(element_id))
+  if (const auto* element_animations =
+          GetElementAnimationsForElementId(element_id)) {
     return element_animations->MaximumScale(element_id, list_type);
+  }
   return kInvalidScale;
 }
 
 bool AnimationHost::IsElementAnimating(ElementId element_id) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   return element_animations ? element_animations->HasAnyKeyframeModel() : false;
 }
 
 bool AnimationHost::HasTickingKeyframeModelForTesting(
     ElementId element_id) const {
-  auto element_animations = GetElementAnimationsForElementId(element_id);
+  const auto* element_animations = GetElementAnimationsForElementId(element_id);
   return element_animations ? element_animations->HasTickingKeyframeEffect()
                             : false;
 }
diff --git a/cc/animation/animation_host.h b/cc/animation/animation_host.h
index 9ed2971..b22c471 100644
--- a/cc/animation/animation_host.h
+++ b/cc/animation/animation_host.h
@@ -69,14 +69,12 @@
   void RegisterAnimationForElement(ElementId element_id, Animation* animation);
   void UnregisterAnimationForElement(ElementId element_id,
                                      Animation* animation);
-
-  scoped_refptr<const ElementAnimations> GetElementAnimationsForElementId(
-      ElementId element_id) const;
-  scoped_refptr<ElementAnimations> GetElementAnimationsForElementId(
-      ElementId element_id);
-
+  void UpdateClientAnimationStateForElementAnimations(ElementId element_id);
   gfx::PointF GetScrollOffsetForAnimation(ElementId element_id) const;
 
+  scoped_refptr<const ElementAnimations>
+  GetElementAnimationsForElementIdForTesting(ElementId element_id) const;
+
   // Parent LayerTreeHost or LayerTreeHostImpl.
   MutatorHostClient* mutator_host_client() {
     DCHECK(IsOwnerThread() || InProtectedSequence());
@@ -228,6 +226,11 @@
  private:
   explicit AnimationHost(ThreadInstance thread_instance);
 
+  const ElementAnimations* GetElementAnimationsForElementId(
+      ElementId element_id) const;
+  scoped_refptr<ElementAnimations> GetElementAnimationsForElementId(
+      ElementId element_id);
+
   void PushTimelinesToImplThread(AnimationHost* host_impl) const;
   void RemoveTimelinesFromImplThread(AnimationHost* host_impl) const;
   void PushPropertiesToImplThread(AnimationHost* host_impl);
diff --git a/cc/animation/keyframe_effect.cc b/cc/animation/keyframe_effect.cc
index 28a3ff9..785567d0 100644
--- a/cc/animation/keyframe_effect.cc
+++ b/cc/animation/keyframe_effect.cc
@@ -371,13 +371,8 @@
                                     event.monotonic_time);
         keyframe_model->set_received_finished_event(true);
         dispatched = true;
-
-        ElementAnimations* element_animations =
-            animation_->animation_host()
-                ->GetElementAnimationsForElementId(element_id())
-                .get();
-        if (element_animations)
-          element_animations->UpdateClientAnimationState();
+        animation_->animation_host()
+            ->UpdateClientAnimationStateForElementAnimations(element_id());
       }
       break;
 
diff --git a/cc/test/animation_test_common.cc b/cc/test/animation_test_common.cc
index ca96dd9..0d21f2e 100644
--- a/cc/test/animation_test_common.cc
+++ b/cc/test/animation_test_common.cc
@@ -357,7 +357,8 @@
     scoped_refptr<AnimationTimeline> timeline,
     std::unique_ptr<KeyframeModel> keyframe_model) {
   scoped_refptr<const ElementAnimations> element_animations =
-      timeline->animation_host()->GetElementAnimationsForElementId(element_id);
+      timeline->animation_host()->GetElementAnimationsForElementIdForTesting(
+          element_id);
   DCHECK(element_animations);
   KeyframeEffect* keyframe_effect =
       element_animations->FirstKeyframeEffectForTesting();
@@ -370,7 +371,8 @@
     scoped_refptr<AnimationTimeline> timeline,
     int keyframe_model_id) {
   scoped_refptr<const ElementAnimations> element_animations =
-      timeline->animation_host()->GetElementAnimationsForElementId(element_id);
+      timeline->animation_host()->GetElementAnimationsForElementIdForTesting(
+          element_id);
   DCHECK(element_animations);
   KeyframeEffect* keyframe_effect =
       element_animations->FirstKeyframeEffectForTesting();
@@ -383,7 +385,8 @@
     scoped_refptr<AnimationTimeline> timeline,
     int keyframe_model_id) {
   scoped_refptr<const ElementAnimations> element_animations =
-      timeline->animation_host()->GetElementAnimationsForElementId(element_id);
+      timeline->animation_host()->GetElementAnimationsForElementIdForTesting(
+          element_id);
   DCHECK(element_animations);
   KeyframeEffect* keyframe_effect =
       element_animations->FirstKeyframeEffectForTesting();
diff --git a/cc/test/animation_timelines_test_common.cc b/cc/test/animation_timelines_test_common.cc
index 8f431743..f206d093 100644
--- a/cc/test/animation_timelines_test_common.cc
+++ b/cc/test/animation_timelines_test_common.cc
@@ -512,7 +512,7 @@
 KeyframeEffect* AnimationTimelinesTest::GetKeyframeEffectForElementId(
     ElementId element_id) {
   const scoped_refptr<const ElementAnimations> element_animations =
-      host_->GetElementAnimationsForElementId(element_id);
+      host_->GetElementAnimationsForElementIdForTesting(element_id);
   return element_animations
              ? element_animations->FirstKeyframeEffectForTesting()
              : nullptr;
@@ -521,7 +521,7 @@
 KeyframeEffect* AnimationTimelinesTest::GetImplKeyframeEffectForLayerId(
     ElementId element_id) {
   const scoped_refptr<const ElementAnimations> element_animations =
-      host_impl_->GetElementAnimationsForElementId(element_id);
+      host_impl_->GetElementAnimationsForElementIdForTesting(element_id);
   return element_animations
              ? element_animations->FirstKeyframeEffectForTesting()
              : nullptr;
diff --git a/cc/trees/layer_tree_host_unittest_animation.cc b/cc/trees/layer_tree_host_unittest_animation.cc
index 9231dea..e8db591a 100644
--- a/cc/trees/layer_tree_host_unittest_animation.cc
+++ b/cc/trees/layer_tree_host_unittest_animation.cc
@@ -387,9 +387,9 @@
       return;
     first_animation_frame_ = false;
 
-    scoped_refptr<const AnimationTimeline> timeline_impl =
+    scoped_refptr<AnimationTimeline> timeline_impl =
         GetImplAnimationHost(host_impl)->GetTimelineById(timeline_id_);
-    scoped_refptr<const Animation> animation_child_impl =
+    scoped_refptr<Animation> animation_child_impl =
         timeline_impl->GetAnimationById(animation_child_id_);
 
     KeyframeModel* keyframe_model =
@@ -918,13 +918,14 @@
     scroll_layer_element_id_ = scroll_layer_->element_id();
   }
 
-  KeyframeEffect& ScrollOffsetKeyframeEffect(const LayerTreeHostImpl& host_impl,
-                                             ElementId element_id) const {
-    scoped_refptr<ElementAnimations> element_animations =
+  const KeyframeEffect& ScrollOffsetKeyframeEffect(
+      const LayerTreeHostImpl& host_impl,
+      ElementId element_id) const {
+    scoped_refptr<const ElementAnimations> element_animations =
         GetImplAnimationHost(&host_impl)
-            ->GetElementAnimationsForElementId(element_id);
+            ->GetElementAnimationsForElementIdForTesting(element_id);
     DCHECK(element_animations);
-    KeyframeEffect* keyframe_effect =
+    const KeyframeEffect* keyframe_effect =
         &*element_animations->FirstKeyframeEffectForTesting();
     DCHECK(keyframe_effect);
     return *keyframe_effect;
diff --git a/cc/trees/proxy_impl.cc b/cc/trees/proxy_impl.cc
index a24f613f..30dc817 100644
--- a/cc/trees/proxy_impl.cc
+++ b/cc/trees/proxy_impl.cc
@@ -782,12 +782,6 @@
   DCHECK(data_for_commit_.get());
   DCHECK(data_for_commit_->IsValid());
 
-  // Relax the cross-thread access restriction to non-thread-safe RefCount.
-  // It's safe since the main thread is blocked while a main-thread-bound
-  // compositor stuff are accessed from the impl thread.
-  base::ScopedAllowCrossThreadRefCountAccess
-      allow_cross_thread_ref_count_access;
-
   auto* commit_state = data_for_commit_->commit_state.get();
   auto* unsafe_state = data_for_commit_->unsafe_state.get();
   host_impl_->BeginCommit(commit_state->source_frame_number,
diff --git a/chrome/VERSION b/chrome/VERSION
index aeb9dbe..b54b1ca 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=108
 MINOR=0
-BUILD=5313
+BUILD=5314
 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index 074d2c5..27f4888 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -671,6 +671,7 @@
     "//third_party/metrics_proto:metrics_proto_java",
     "//ui/android:ui_java",
     "//ui/base:features_java",
+    "//ui/base/ime/mojom:mojom_java",
     "//ui/base/mojom:mojom_java",
     "//ui/gfx/geometry/mojom:mojom_java",
     "//url:gurl_java",
@@ -1256,6 +1257,7 @@
     "//ui/android:ui_java",
     "//ui/android:ui_java_test_support",
     "//ui/android:ui_junit_test_support",
+    "//ui/base/ime/mojom:mojom_java",
     "//ui/base/mojom:mojom_java",
     "//url:gurl_java",
     "//url:gurl_junit_shadows",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index 63a1b73..4869ec8 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -46,6 +46,7 @@
   "javatests/src/org/chromium/chrome/browser/TabsTest.java",
   "javatests/src/org/chromium/chrome/browser/UrlSchemeTest.java",
   "javatests/src/org/chromium/chrome/browser/VideoFullscreenOrientationLockChromeTest.java",
+  "javatests/src/org/chromium/chrome/browser/VirtualKeyboardResizeTest.java",
   "javatests/src/org/chromium/chrome/browser/WarmupManagerTest.java",
   "javatests/src/org/chromium/chrome/browser/accessibility/FontSizePrefsTest.java",
   "javatests/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettingsTest.java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
index f8abff0..47f0766 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -800,11 +800,6 @@
         mInsetObserverViewSupplier.set(InsetObserverView.create(this));
         rootView.addView(mInsetObserverViewSupplier.get(), 0);
 
-        if (ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()) {
-            getWindowAndroid().getApplicationBottomInsetProvider().addStackingSupplier(
-                    mInsetObserverViewSupplier.get().getSupplierForBottomInset());
-        }
-
         super.onInitialLayoutInflationComplete();
     }
 
@@ -2070,11 +2065,8 @@
         compositorViewHolder.setInsetObserverView(mInsetObserverViewSupplier.get());
         compositorViewHolder.setAutofillUiBottomInsetSupplier(
                 mManualFillingComponentSupplier.get().getBottomInsetSupplier());
-
-        if (ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()) {
-            getWindowAndroid().getApplicationBottomInsetProvider().addStackingSupplier(
-                    mManualFillingComponentSupplier.get().getBottomInsetSupplier());
-        }
+        compositorViewHolder.setApplicationViewportInsetSupplier(
+                getWindowAndroid().getApplicationBottomInsetProvider());
 
         compositorViewHolder.setTopUiThemeColorProvider(
                 mRootUiCoordinator.getTopUiThemeColorProvider());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
index 1de2723..00734470 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -69,7 +69,7 @@
 import org.chromium.components.browser_ui.widget.TouchEventObserver;
 import org.chromium.components.content_capture.OnscreenContentProvider;
 import org.chromium.components.embedder_support.view.ContentView;
-import org.chromium.content_public.browser.ImeAdapter;
+import org.chromium.content_public.browser.NavigationHandle;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.ui.KeyboardVisibilityDelegate;
 import org.chromium.ui.UiUtils;
@@ -77,6 +77,7 @@
 import org.chromium.ui.base.EventForwarder;
 import org.chromium.ui.base.EventOffsetHandler;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.ui.resources.ResourceManager;
 import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
 
@@ -193,6 +194,9 @@
      */
     private boolean mHasKeyboardGeometryChangeFired;
 
+    @VirtualKeyboardMode.EnumType
+    private int mVirtualKeyboardMode = VirtualKeyboardMode.UNSET;
+
     private OnscreenContentProvider mOnscreenContentProvider;
 
     private final Set<Runnable> mOnCompositorLayoutCallbacks = new HashSet<>();
@@ -251,6 +255,8 @@
 
     private View mUrlBar;
 
+    private ApplicationViewportInsetSupplier mApplicationViewportInsetSupplier;
+
     /**
      * Creates a {@link CompositorView}.
      * @param c The Context to create this {@link CompositorView} in.
@@ -345,6 +351,22 @@
                     }
                 });
             }
+
+            @Override
+            public void onVirtualKeyboardModeChanged(
+                    Tab tab, @VirtualKeyboardMode.EnumType int mode) {
+                updateVirtualKeyboardMode(mode);
+            }
+
+            @Override
+            public void onDidFinishNavigation(Tab tab, NavigationHandle navigation) {
+                if (navigation.isInPrimaryMainFrame() && !navigation.isSameDocument()
+                        && navigation.hasCommitted()) {
+                    assert getWebContents() == tab.getWebContents();
+                    assert getWebContents() != null;
+                    updateVirtualKeyboardMode(getWebContents().getVirtualKeyboardMode());
+                }
+            }
         };
 
         addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight,
@@ -512,6 +534,7 @@
             mInsetObserverView.addObserver(this);
             handleWindowInsetChanged();
         }
+        updateApplicationViewportInsetSuppliers();
     }
 
     /**
@@ -523,6 +546,47 @@
             ObservableSupplier<Integer> autofillUiBottomInsetSupplier) {
         mAutofillUiBottomInsetSupplier = autofillUiBottomInsetSupplier;
         mAutofillUiBottomInsetSupplier.addObserver(mBottomInsetObserver);
+        updateApplicationViewportInsetSuppliers();
+    }
+
+    /**
+     * Sets the ApplicationViewportInsetSupplier.
+     * This object manages inset suppliers that should inset the visual viewport
+     * of the current page (i.e. allow scrolling but don't affect layout). This
+     * class manages adding and removing observers from this object as needed.
+     */
+    public void setApplicationViewportInsetSupplier(ApplicationViewportInsetSupplier supplier) {
+        assert mApplicationViewportInsetSupplier == null;
+        mApplicationViewportInsetSupplier = supplier;
+        updateApplicationViewportInsetSuppliers();
+    }
+
+    // Ensures the keyboard-related inset suppliers are either registered or unregistered with the
+    // ApplicationViewportInsetSupplier. The ApplicationViewportInsetSupplier is responsible for
+    // insetting the visual viewport so the keyboard insets should only be applied to it if the
+    // keyboard resizes only the visual viewport (otherwise the visual viewport and web contents
+    // size are resized together).
+    private void updateApplicationViewportInsetSuppliers() {
+        if (mApplicationViewportInsetSupplier == null) return;
+
+        if (oskResizesVisualViewport(getWebContents())) {
+            if (mAutofillUiBottomInsetSupplier != null) {
+                mApplicationViewportInsetSupplier.addStackingSupplier(
+                        mAutofillUiBottomInsetSupplier);
+            }
+            if (mInsetObserverView != null) {
+                mApplicationViewportInsetSupplier.addStackingSupplier(
+                        mInsetObserverView.getSupplierForBottomInset());
+            }
+        } else {
+            if (mAutofillUiBottomInsetSupplier != null) {
+                mApplicationViewportInsetSupplier.removeSupplier(mAutofillUiBottomInsetSupplier);
+            }
+            if (mInsetObserverView != null) {
+                mApplicationViewportInsetSupplier.removeSupplier(
+                        mInsetObserverView.getSupplierForBottomInset());
+            }
+        }
     }
 
     @Override
@@ -534,7 +598,7 @@
         // The InsetObserverView is used to monitor keyboard resizes while
         // fullscreened to simulate a view resize. This is unneeded when the
         // OSK resizes only the visual viewport.
-        if (ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()) {
+        if (oskResizesVisualViewport(getWebContents())) {
             return;
         }
 
@@ -811,14 +875,19 @@
             // isn't a change in size after the keyboard is raised or hidden.
             // Also the geometrychange event should only fire to the foreground tab.
             int keyboardHeight = 0;
-            boolean overlayContentForegroundTab = shouldVirtualKeyboardOverlayContent(webContents);
 
-            // In fullscreen, the keyboard doesn't resize the view so there's
-            // no need to adjust the layout height by the keyboard height to
-            // keep it from changing in response.
-            if (!mShowingFullscreen
-                    && (overlayContentForegroundTab
-                            || ChromeFeatureList.sOSKResizesVisualViewport.isEnabled())) {
+            // The resize-layout mode is available only when the default OSK
+            // behavior is to resize the visual viewport.
+            assert mVirtualKeyboardMode != VirtualKeyboardMode.RESIZE_LAYOUT
+                    || ChromeFeatureList.sOSKResizesVisualViewport.isEnabled();
+
+            boolean vkModePreservesWebContentsHeight =
+                    mVirtualKeyboardMode == VirtualKeyboardMode.OVERLAYS_CONTENT
+                    || oskResizesVisualViewport(webContents);
+
+            // In fullscreen, the keyboard doesn't resize the view so there's no need to adjust the
+            // layout height by the keyboard height to keep it from changing in response.
+            if (!mShowingFullscreen && vkModePreservesWebContentsHeight) {
                 // During orientation changes, width of the |WebContents| changes to match the width
                 // of the screen and so does the keyboard. We fire geometrychange with the updated
                 // keyboard size as well as resize the viewport so the height resize doesn't affect
@@ -828,7 +897,7 @@
                 h += keyboardHeight;
             }
             webContents.setSize(w, h - controlsHeight);
-            if (overlayContentForegroundTab) {
+            if (mVirtualKeyboardMode == VirtualKeyboardMode.OVERLAYS_CONTENT) {
                 notifyVirtualKeyboardOverlayGeometryChangeEvent(w, keyboardHeight, webContents);
             }
         } else {
@@ -841,19 +910,9 @@
         return view != null && view.getWindowToken() != null;
     }
 
-    /**
-     * Returns true if the overlaycontent flag is set in the JS, else false.
-     * This determines whether to fire geometrychange event to JS for the current visible tab
-     * and also not resize the visual/layout viewports in response to keyboard visibility changes.
-     *
-     * @return Whether overlaycontent flag is set or not.
-     */
-    @VisibleForTesting
-    boolean shouldVirtualKeyboardOverlayContent(WebContents webContents) {
-        return webContents != null && mTabVisible != null
-                && mTabVisible.getWebContents() == webContents
-                && ImeAdapter.fromWebContents(webContents) != null
-                && ImeAdapter.fromWebContents(webContents).shouldVirtualKeyboardOverlayContent();
+    private boolean oskResizesVisualViewport(WebContents webContents) {
+        return ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()
+                && mVirtualKeyboardMode == VirtualKeyboardMode.UNSET;
     }
 
     /**
@@ -864,7 +923,7 @@
      */
     private void notifyVirtualKeyboardOverlayGeometryChangeEvent(
             int w, int keyboardHeight, WebContents webContents) {
-        assert shouldVirtualKeyboardOverlayContent(webContents);
+        assert mVirtualKeyboardMode == VirtualKeyboardMode.OVERLAYS_CONTENT;
 
         boolean keyboardVisible = keyboardHeight > 0;
         if (!keyboardVisible && !mHasKeyboardGeometryChangeFired) {
@@ -1013,7 +1072,7 @@
         // visual viewport which is communicated to the renderer by observing
         // the inset provider in TabViewAndroidDelegate. This is a no-op in
         // CompositorViewHolder.
-        if (ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()) {
+        if (oskResizesVisualViewport(getWebContents())) {
             return;
         }
 
@@ -1282,7 +1341,7 @@
         // If osk-resizes-visual-viewport is enabled, the OSK and its
         // accessories don't resize the view/page so the autofill inset
         // supplier must not have been set.
-        if (ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()) {
+        if (oskResizesVisualViewport(getWebContents())) {
             return 0;
         }
 
@@ -1483,6 +1542,26 @@
         mContentView = newContentView;
     }
 
+    @VisibleForTesting
+    void updateVirtualKeyboardMode(@VirtualKeyboardMode.EnumType int newMode) {
+        if (mVirtualKeyboardMode == newMode) return;
+
+        @VirtualKeyboardMode.EnumType
+        int oldMode = mVirtualKeyboardMode;
+        mVirtualKeyboardMode = newMode;
+
+        // If this flag isn't enabled there isn't any way the view size can differ from
+        // the visual viewport insets so there's nothing to do.
+        if (!ChromeFeatureList.sOSKResizesVisualViewport.isEnabled()) return;
+
+        // If we're going into or out of the default OSK resizes visual viewport mode
+        // we're changing whether the ApplicationViewportInsetSupplier needs to listen to
+        // the keyboard since its responsible for insetting the visual viewport.
+        if (oldMode == VirtualKeyboardMode.UNSET || newMode == VirtualKeyboardMode.UNSET) {
+            updateApplicationViewportInsetSuppliers();
+        }
+    }
+
     /**
      * Sets the correct size for {@link View} on {@code tab} and sets the correct rendering
      * parameters on {@link WebContents} on {@code tab}.
@@ -1494,7 +1573,12 @@
             onPhysicalBackingSizeChanged(
                     webContents, mCompositorView.getWidth(), mCompositorView.getHeight());
             onControlsResizeViewChanged(webContents, mControlsResizeView);
+
+            updateVirtualKeyboardMode(webContents.getVirtualKeyboardMode());
+        } else if (tab.getView() != null) {
+            updateVirtualKeyboardMode(VirtualKeyboardMode.UNSET);
         }
+
         if (tab.getView() == null) return;
 
         // TextView with compound drawables in the NTP gets a wrong width when measure/layout is
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderCoordinator.java
index b305397..0aae80d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderCoordinator.java
@@ -36,7 +36,6 @@
     @VisibleForTesting
     static PropertyModel buildModel(Context context, String title, CharSequence url) {
         boolean usePopupContextMenu = ContextMenuUtils.forcePopupStyleEnabled();
-        boolean hideHeaderImage = ContextMenuUtils.hideContextMenuHeaderImage();
 
         int monogramSizeDimen = usePopupContextMenu
                 ? R.dimen.context_menu_popup_header_monogram_size
@@ -54,7 +53,6 @@
                                 PerformanceClass.PERFORMANCE_UNKNOWN)
                         .with(ContextMenuHeaderProperties.IMAGE, null)
                         .with(ContextMenuHeaderProperties.CIRCLE_BG_VISIBLE, false)
-                        .with(ContextMenuHeaderProperties.HIDE_HEADER_IMAGE, hideHeaderImage)
                         .with(ContextMenuHeaderProperties.MONOGRAM_SIZE_PIXEL,
                                 context.getResources().getDimensionPixelSize(monogramSizeDimen))
                         .build();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderMediator.java
index ac28c1b3..a1392bf 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderMediator.java
@@ -48,24 +48,21 @@
         mModel = model;
         mModel.set(ContextMenuHeaderProperties.TITLE_AND_URL_CLICK_LISTENER, this);
 
-        // Skip setting up the image header if context menu is in pop up style.
-        if (!model.get(ContextMenuHeaderProperties.HIDE_HEADER_IMAGE)) {
-            if (params.isImage()) {
-                final Resources res = mContext.getResources();
-                final int imageMaxSize =
-                        res.getDimensionPixelSize(R.dimen.context_menu_header_image_max_size);
-                nativeDelegate.retrieveImageForContextMenu(
-                        imageMaxSize, imageMaxSize, this::onImageThumbnailRetrieved);
-            } else if (!params.isImage() && !params.isVideo()) {
-                LargeIconBridge iconBridge = new LargeIconBridge(profile);
-                iconBridge.getLargeIconForUrl(mPlainUrl,
-                        context.getResources().getDimensionPixelSize(
-                                R.dimen.default_favicon_min_size),
-                        this::onFaviconAvailable);
-            } else if (params.isVideo()) {
-                setVideoIcon();
-            }
+        if (params.isImage()) {
+            final Resources res = mContext.getResources();
+            final int imageMaxSize =
+                    res.getDimensionPixelSize(R.dimen.context_menu_header_image_max_size);
+            nativeDelegate.retrieveImageForContextMenu(
+                    imageMaxSize, imageMaxSize, this::onImageThumbnailRetrieved);
+        } else if (!params.isImage() && !params.isVideo()) {
+            LargeIconBridge iconBridge = new LargeIconBridge(profile);
+            iconBridge.getLargeIconForUrl(mPlainUrl,
+                    context.getResources().getDimensionPixelSize(R.dimen.default_favicon_min_size),
+                    this::onFaviconAvailable);
+        } else if (params.isVideo()) {
+            setVideoIcon();
         }
+
         if (PerformanceHintsObserver.isContextMenuPerformanceInfoEnabled() && params.isAnchor()) {
             mModel.set(ContextMenuHeaderProperties.URL_PERFORMANCE_CLASS, performanceClass);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderProperties.java
index a412ff16..ceda64e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderProperties.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderProperties.java
@@ -28,9 +28,6 @@
             new PropertyModel.WritableBooleanPropertyKey();
     public static final WritableIntPropertyKey URL_PERFORMANCE_CLASS = new WritableIntPropertyKey();
 
-    public static final PropertyModel.WritableBooleanPropertyKey HIDE_HEADER_IMAGE =
-            new PropertyModel.WritableBooleanPropertyKey();
-
     /** Size in pixel of monogram / favicon on link context menu header . */
     public static final WritableIntPropertyKey MONOGRAM_SIZE_PIXEL = new WritableIntPropertyKey();
 
@@ -58,7 +55,6 @@
 
     public static final PropertyKey[] ALL_KEYS = {TITLE, TITLE_MAX_LINES, URL,
             TITLE_AND_URL_CLICK_LISTENER, URL_MAX_LINES, IMAGE, CIRCLE_BG_VISIBLE,
-            URL_PERFORMANCE_CLASS, HIDE_HEADER_IMAGE, MONOGRAM_SIZE_PIXEL,
-            OVERRIDE_HEADER_IMAGE_MAX_SIZE_PIXEL, OVERRIDE_HEADER_CIRCLE_BG_SIZE_PIXEL,
-            OVERRIDE_HEADER_CIRCLE_BG_MARGIN_PIXEL};
+            URL_PERFORMANCE_CLASS, MONOGRAM_SIZE_PIXEL, OVERRIDE_HEADER_IMAGE_MAX_SIZE_PIXEL,
+            OVERRIDE_HEADER_CIRCLE_BG_SIZE_PIXEL, OVERRIDE_HEADER_CIRCLE_BG_MARGIN_PIXEL};
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewBinder.java
index 1e1ecba9..d96e5163 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewBinder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewBinder.java
@@ -70,11 +70,6 @@
                     .setVisibility(performanceClass == PerformanceClass.PERFORMANCE_FAST
                                     ? View.VISIBLE
                                     : View.GONE);
-        } else if (propertyKey == ContextMenuHeaderProperties.HIDE_HEADER_IMAGE) {
-            final boolean hideHeaderImage =
-                    model.get(ContextMenuHeaderProperties.HIDE_HEADER_IMAGE);
-            view.findViewById(R.id.menu_header_image_container)
-                    .setVisibility(hideHeaderImage ? View.GONE : View.VISIBLE);
         } else if (propertyKey
                 == ContextMenuHeaderProperties.OVERRIDE_HEADER_IMAGE_MAX_SIZE_PIXEL) {
             int maxSizeOverride =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java
index 48f2195e..14e7b04 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java
@@ -7,8 +7,6 @@
 import android.text.TextUtils;
 import android.webkit.URLUtil;
 
-import androidx.annotation.VisibleForTesting;
-
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.components.embedder_support.contextmenu.ContextMenuParams;
 import org.chromium.content_public.browser.ContentFeatureList;
@@ -18,10 +16,6 @@
  * Provides utility methods for generating context menus.
  */
 public final class ContextMenuUtils {
-    /** Experiment params to hide the context menu header image. */
-    @VisibleForTesting
-    public static final String HIDE_HEADER_IMAGE_PARAM = "hide_header_image";
-
     private ContextMenuUtils() {}
 
     /**
@@ -63,20 +57,4 @@
         return ChromeFeatureList.isEnabled(ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE)
                 || ContentFeatureList.isEnabled(ContentFeatures.TOUCH_DRAG_AND_CONTEXT_MENU);
     }
-
-    /**
-     * Whether hide the context menu header image by field trial params. The value is read from 
-     * either {@link ContentFeatures.TOUCH_DRAG_AND_CONTEXT_MENU} or
-     * {@link ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE}.
-     */
-    static boolean hideContextMenuHeaderImage() {
-        int valueHideHeaderFromDragAndDrop = ContentFeatureList.getFieldTrialParamByFeatureAsInt(
-                ContentFeatures.TOUCH_DRAG_AND_CONTEXT_MENU, HIDE_HEADER_IMAGE_PARAM, -1);
-        if (valueHideHeaderFromDragAndDrop != -1) {
-            return valueHideHeaderFromDragAndDrop != 0;
-        }
-
-        return ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
-                ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE, HIDE_HEADER_IMAGE_PARAM, false);
-    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
index 8156e9ae..3a15c5c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -131,7 +131,9 @@
     private static final int SPECULATION_STATUS_ON_START_NOT_ALLOWED_NETWORK_PREDICTION_DISABLED =
             7;
     private static final int SPECULATION_STATUS_ON_START_NOT_ALLOWED_DATA_REDUCTION_ENABLED = 8;
-    private static final int SPECULATION_STATUS_ON_START_NOT_ALLOWED_NETWORK_METERED = 9;
+    // Obsolete due to no longer running the experiment
+    // "PredictivePrefetchingAllowedOnAllConnectionTypes".
+    // private static final int SPECULATION_STATUS_ON_START_NOT_ALLOWED_NETWORK_METERED = 9;
     private static final int SPECULATION_STATUS_ON_START_MAX = 10;
 
     // For CustomTabs.SpeculationStatusOnSwap, see tools/metrics/enums.xml. Append only.
@@ -1543,11 +1545,6 @@
         ConnectivityManager cm =
                 (ConnectivityManager) ContextUtils.getApplicationContext().getSystemService(
                         Context.CONNECTIVITY_SERVICE);
-        if (cm.isActiveNetworkMetered() && !shouldSpeculateLoadOnCellularForSession(session)
-                && !ChromeFeatureList.isEnabled(
-                        ChromeFeatureList.PREDICTIVE_PREFETCHING_ALLOWED_ON_ALL_CONNECTION_TYPES)) {
-            return SPECULATION_STATUS_ON_START_NOT_ALLOWED_NETWORK_METERED;
-        }
         return SPECULATION_STATUS_ON_START_ALLOWED;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
index f299418..8487d54 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
@@ -962,8 +962,6 @@
         int bottomY = mDisplayHeight - mNavbarHeight;
         int animateEndY = -1;
 
-        if (finalY == initialY) return false;
-
         if (finalY < initialY) { // Move up
             if (Math.abs(topY - finalY) < Math.abs(finalY - initialY)) {
                 mTargetStatus = HeightStatus.TOP;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java
index e8908c3..fb5397a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java
@@ -37,6 +37,7 @@
 import org.chromium.content_public.browser.WebContentsAccessibility;
 import org.chromium.content_public.browser.WebContentsObserver;
 import org.chromium.net.NetError;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 /**
@@ -340,6 +341,14 @@
         }
 
         @Override
+        public void virtualKeyboardModeChanged(@VirtualKeyboardMode.EnumType int mode) {
+            RewindableIterator<TabObserver> observers = mTab.getTabObservers();
+            while (observers.hasNext()) {
+                observers.next().onVirtualKeyboardModeChanged(mTab, mode);
+            }
+        }
+
+        @Override
         public void destroy() {
             MediaCaptureNotificationServiceImpl.updateMediaNotificationForTab(
                     ContextUtils.getApplicationContext(), mTab.getId(), null, mLastUrl);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/VirtualKeyboardResizeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/VirtualKeyboardResizeTest.java
new file mode 100644
index 0000000..4059ce3
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/VirtualKeyboardResizeTest.java
@@ -0,0 +1,217 @@
+// Copyright 2022 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;
+
+import static org.hamcrest.Matchers.lessThanOrEqualTo;
+
+import android.support.test.InstrumentationRegistry;
+
+import androidx.test.filters.MediumTest;
+
+import org.hamcrest.Matcher;
+import org.hamcrest.Matchers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.util.Batch;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Criteria;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.CriteriaNotSatisfiedException;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.content_public.browser.test.util.Coordinates;
+import org.chromium.content_public.browser.test.util.DOMUtils;
+import org.chromium.content_public.browser.test.util.JavaScriptUtils;
+import org.chromium.net.test.EmbeddedTestServer;
+
+/**
+ * Tests the virtual keyboard's effect on resizing web pages.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+@CommandLineFlags.Add({
+        ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+})
+@Batch(Batch.PER_CLASS)
+public class VirtualKeyboardResizeTest {
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    private static final String TEXTFIELD_DOM_ID = "inputElement";
+    private static final int TEST_TIMEOUT = 10000;
+
+    private EmbeddedTestServer mTestServer;
+
+    @Before
+    public void setUp() {
+        mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
+    }
+
+    @After
+    public void tearDown() {
+        mTestServer.stopAndDestroyServer();
+    }
+
+    private void startMainActivityWithURL(String url) {
+        mActivityTestRule.startMainActivityWithURL(mTestServer.getURL(url));
+    }
+
+    private void assertWaitForKeyboardStatus(final boolean show) {
+        CriteriaHelper.pollUiThread(() -> {
+            boolean isKeyboardShowing = mActivityTestRule.getKeyboardDelegate().isKeyboardShowing(
+                    mActivityTestRule.getActivity(), mActivityTestRule.getActivity().getTabsView());
+            Criteria.checkThat(isKeyboardShowing, Matchers.is(show));
+        }, TEST_TIMEOUT, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+    }
+
+    private void assertWaitForPageHeight(Matcher<java.lang.Integer> matcher) {
+        CriteriaHelper.pollInstrumentationThread(() -> {
+            try {
+                int curHeight = getPageInnerHeight();
+                Criteria.checkThat(curHeight, matcher);
+            } catch (Throwable e) {
+                throw new CriteriaNotSatisfiedException(e);
+            }
+        }, TEST_TIMEOUT, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+    }
+
+    private void assertWaitForVisualViewportHeight(Matcher<java.lang.Double> matcher) {
+        CriteriaHelper.pollInstrumentationThread(() -> {
+            try {
+                double curHeight = getVisualViewportHeight();
+                Criteria.checkThat(curHeight, matcher);
+            } catch (Throwable e) {
+                throw new CriteriaNotSatisfiedException(e);
+            }
+        }, TEST_TIMEOUT, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+    }
+
+    private WebContents getWebContents() {
+        return mActivityTestRule.getActivity().getActivityTab().getWebContents();
+    }
+
+    private int getPageInnerHeight() throws Throwable {
+        return Integer.parseInt(JavaScriptUtils.executeJavaScriptAndWaitForResult(
+                getWebContents(), "window.innerHeight"));
+    }
+
+    private double getVisualViewportHeight() throws Throwable {
+        return Float.parseFloat(JavaScriptUtils.executeJavaScriptAndWaitForResult(
+                getWebContents(), "window.visualViewport.height"));
+    }
+
+    private void hideKeyboard() {
+        JavaScriptUtils.executeJavaScript(
+                getWebContents(), "document.querySelector('input').blur()");
+    }
+
+    private double getKeyboardHeightDp() {
+        final double dpi = Coordinates.createFor(getWebContents()).getDeviceScaleFactor();
+        double keyboardHeightPx = mActivityTestRule.getKeyboardDelegate().calculateKeyboardHeight(
+                mActivityTestRule.getActivity().getWindow().getDecorView().getRootView());
+        return keyboardHeightPx / dpi;
+    }
+
+    /**
+     * Tests the default behavior of the virtual keyboard which is to resize the layout viewport and
+     * initial containing block of the page.
+     */
+    @Test
+    @MediumTest
+    @DisableFeatures({ChromeFeatureList.OSK_RESIZES_VISUAL_VIEWPORT})
+    public void testVirtualKeyboardDefaultResizeMode() throws Throwable {
+        startMainActivityWithURL("/chrome/test/data/android/page_with_editable.html");
+        int initialHeight = getPageInnerHeight();
+
+        DOMUtils.clickNode(getWebContents(), TEXTFIELD_DOM_ID);
+        assertWaitForKeyboardStatus(true);
+
+        double keyboardHeight = getKeyboardHeightDp();
+
+        // Use less than or equal since the keyboard may actually include accessories like the
+        // Autofill bar. Math.ceil and 1px delta to account for device scale factor rounding.
+        assertWaitForPageHeight(lessThanOrEqualTo((int) Math.ceil(initialHeight - keyboardHeight)));
+        assertWaitForVisualViewportHeight(
+                lessThanOrEqualTo(Math.ceil(initialHeight - keyboardHeight)));
+
+        // Hide the OSK and ensure the state is correctly restored to the initial height.
+        hideKeyboard();
+        assertWaitForKeyboardStatus(false);
+
+        assertWaitForPageHeight(Matchers.is(initialHeight));
+        assertWaitForVisualViewportHeight(Matchers.closeTo((double) initialHeight, /*error=*/1.0));
+    }
+
+    /**
+     * Tests the OSKResizesVisualViewport flag changes Chrome's default behavior to the virtual
+     * keyboard resizing only the visual viewport, but not the page's initial containing block or
+     * layout viewport.
+     */
+    @Test
+    @MediumTest
+    @EnableFeatures({ChromeFeatureList.OSK_RESIZES_VISUAL_VIEWPORT})
+    public void testVirtualKeyboardResizesVisualViewportFlag() throws Throwable {
+        startMainActivityWithURL("/chrome/test/data/android/page_with_editable.html");
+
+        int initialHeight = getPageInnerHeight();
+
+        DOMUtils.clickNode(getWebContents(), TEXTFIELD_DOM_ID);
+        assertWaitForKeyboardStatus(true);
+
+        double keyboardHeight = getKeyboardHeightDp();
+
+        // Use less than or equal since the keyboard may actually include accessories like the
+        // Autofill bar. Math.ceil and account for device scale factor rounding.
+        assertWaitForVisualViewportHeight(
+                lessThanOrEqualTo(Math.ceil(initialHeight - keyboardHeight)));
+        assertWaitForPageHeight(Matchers.is(initialHeight));
+
+        // Hide the OSK and ensure the state is correctly restored to the initial height.
+        hideKeyboard();
+        assertWaitForKeyboardStatus(false);
+
+        assertWaitForPageHeight(Matchers.is(initialHeight));
+        assertWaitForVisualViewportHeight(Matchers.closeTo((double) initialHeight, /*error=*/1.0));
+    }
+
+    /**
+     * Tests the <meta name="viewport" content="virtual-keyboard=resize-layout"> tag opts the page
+     * back into a mode where the keyboard resizes layout.
+     */
+    @Test
+    @MediumTest
+    @EnableFeatures({ChromeFeatureList.OSK_RESIZES_VISUAL_VIEWPORT})
+    public void testResizeLayoutMetaTag() throws Throwable {
+        startMainActivityWithURL("/chrome/test/data/android/page_with_editable.html?resize-layout");
+        int initialHeight = getPageInnerHeight();
+
+        DOMUtils.clickNode(getWebContents(), TEXTFIELD_DOM_ID);
+        assertWaitForKeyboardStatus(true);
+
+        double keyboardHeight = getKeyboardHeightDp();
+
+        // Use less than or equal since the keyboard may actually include accessories like the
+        // Autofill bar. Math.ceil and 1px delta to account for device scale factor rounding.
+        assertWaitForPageHeight(lessThanOrEqualTo((int) Math.ceil(initialHeight - keyboardHeight)));
+        assertWaitForVisualViewportHeight(
+                lessThanOrEqualTo(Math.ceil(initialHeight - keyboardHeight)));
+
+        // Hide the OSK and ensure the state is correctly restored to the initial height.
+        // InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
+        hideKeyboard();
+        assertWaitForKeyboardStatus(false);
+
+        assertWaitForPageHeight(Matchers.is(initialHeight));
+        assertWaitForVisualViewportHeight(Matchers.closeTo((double) initialHeight, /*error=*/1.0));
+    }
+}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewTest.java
index d482de86..1141d42 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderViewTest.java
@@ -190,11 +190,6 @@
                 () -> mModel.set(ContextMenuHeaderProperties.IMAGE, bitmap));
         assertThat("Incorrect thumbnail bitmap.",
                 ((BitmapDrawable) mImage.getDrawable()).getBitmap(), equalTo(bitmap));
-
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> mModel.set(ContextMenuHeaderProperties.HIDE_HEADER_IMAGE, true));
-        assertThat("Image container should be hidden.", mImageContainer.getVisibility(),
-                equalTo(View.GONE));
     }
 
     @Test
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuRenderTest.java
index 32ffb77..5cdcb02e9 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuRenderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuRenderTest.java
@@ -139,16 +139,6 @@
     @Test
     @LargeTest
     @Feature({"RenderTest"})
-    public void testContextMenuViewWithLink_HideHeaderImage() throws IOException {
-        mTestValues.addFeatureFlagOverride(ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE, true);
-        mTestValues.addFieldTrialParamOverride(ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE,
-                ContextMenuUtils.HIDE_HEADER_IMAGE_PARAM, "true");
-        doTestContextMenuViewWithLink("context_menu_with_link_no_header");
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"RenderTest"})
     public void testContextMenuViewWithImageLink() throws IOException {
         doTestContextMenuViewWithImageLink("context_menu_with_image_link");
     }
@@ -161,16 +151,6 @@
         doTestContextMenuViewWithImageLink("context_menu_with_image_link_popup");
     }
 
-    @Test
-    @LargeTest
-    @Feature({"RenderTest"})
-    public void testContextMenuViewWithImageLink_HideHeaderImage() throws IOException {
-        mTestValues.addFeatureFlagOverride(ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE, true);
-        mTestValues.addFieldTrialParamOverride(ChromeFeatureList.CONTEXT_MENU_POPUP_STYLE,
-                ContextMenuUtils.HIDE_HEADER_IMAGE_PARAM, "true");
-        doTestContextMenuViewWithImageLink("context_menu_with_image_link_no_header");
-    }
-
     private void doTestContextMenuViewWithLink(String id) throws IOException {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             mListItems.add(
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorViewHolderUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorViewHolderUnitTest.java
index 400cf84..32f0521 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorViewHolderUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorViewHolderUnitTest.java
@@ -48,6 +48,7 @@
 import org.chromium.components.embedder_support.view.ContentView;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.ui.KeyboardVisibilityDelegate;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 
 /**
  * Unit tests for {@link CompositorViewHolder}.
@@ -288,8 +289,7 @@
     @Test
     public void testWebContentResizeTriggeredDueToKeyboardShow() {
         // Set the overlaycontent flag.
-        when(mCompositorViewHolder.shouldVirtualKeyboardOverlayContent(mWebContents))
-                .thenReturn(true);
+        mCompositorViewHolder.updateVirtualKeyboardMode(VirtualKeyboardMode.OVERLAYS_CONTENT);
         // show the keyboard and set height of the webcontent.
         // totalAdjustedHeight = keyboardHeight (741) + height passed to #setSize (200)
         int totalAdjustedHeight = 941;
@@ -314,8 +314,7 @@
     @Test
     public void testOverlayGeometryNotTriggeredDueToNoKeyboard() {
         // Set the overlaycontent flag.
-        when(mCompositorViewHolder.shouldVirtualKeyboardOverlayContent(mWebContents))
-                .thenReturn(true);
+        mCompositorViewHolder.updateVirtualKeyboardMode(VirtualKeyboardMode.OVERLAYS_CONTENT);
         // show the keyboard and set height of the webcontent.
         // totalAdjustedHeight = height passed to #setSize (700)
         int totalAdjustedHeight = 700;
@@ -331,9 +330,8 @@
 
     @Test
     public void testWebContentResizeWhenNotOverlayGeometry() {
-        // Set the overlaycontent flag.
-        when(mCompositorViewHolder.shouldVirtualKeyboardOverlayContent(mWebContents))
-                .thenReturn(false);
+        // Ensure overlaycontent isn't set.
+        mCompositorViewHolder.updateVirtualKeyboardMode(VirtualKeyboardMode.UNSET);
         // show the keyboard and set height of the webcontent.
         // totalAdjustedHeight = height passed to #setSize (200).
         // The reduced height is because of the keyboard taking up the bottom space.
@@ -353,8 +351,7 @@
     @Test
     public void testOverlayGeometryWhenViewNotAttachedToWindow() {
         // Set the overlaycontent flag.
-        when(mCompositorViewHolder.shouldVirtualKeyboardOverlayContent(mWebContents))
-                .thenReturn(true);
+        mCompositorViewHolder.updateVirtualKeyboardMode(VirtualKeyboardMode.OVERLAYS_CONTENT);
         when(mContainerView.getWindowToken()).thenReturn(null);
         // show the keyboard and set height of the webcontent.
         // totalAdjustedHeight = height passed to #setSize (200)
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java
index beebd6ec..4a7bd60f 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java
@@ -963,6 +963,23 @@
         assertFalse(isFullscreen());
     }
 
+    @Test
+    public void dragToTheSameInitialY() {
+        PartialCustomTabHeightStrategy strategy = createPcctAtHeight(500);
+        verifyWindowFlagsSet();
+
+        assertEquals(
+                "mAttributeResults should have exactly 1 element.", 1, mAttributeResults.size());
+
+        assertTabIsAtInitialPos(mAttributeResults.get(0));
+
+        PartialCustomTabHandleStrategy handleStrategy = strategy.createHandleStrategyForTesting();
+
+        // Drag tab slightly but actionDown and actionUp will be performed at the same Y.
+        // The tab should remain open.
+        assertTabIsAtInitialPos(dragTab(handleStrategy, 1500, 1450, 1500));
+    }
+
     private boolean isFullscreen() {
         WindowManager.LayoutParams attrs = mAttributeResults.get(mAttributeResults.size() - 1);
         return attrs.isFullscreen();
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 11fbd785a..00105ed 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -2800,6 +2800,10 @@
                desc="Subpage summary for cookie theft warning.">
         This file contains malware that can compromise your personal or social network accounts
       </message>
+      <message name="IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT_AND_ACCOUNT"
+               desc="Subpage summary for cookie theft warning with account info.">
+        This file contains malware that can compromise your personal or social network accounts, including <ph name="USER_EMAIL">$1<ex>john@google.com</ex></ph>
+      </message>
 
       <!-- Desktop omnibox PWA install icon -->
       <if expr="not is_android">
diff --git a/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT_AND_ACCOUNT.png.sha1 b/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT_AND_ACCOUNT.png.sha1
new file mode 100644
index 0000000..a08b8c5
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT_AND_ACCOUNT.png.sha1
@@ -0,0 +1 @@
+89d893c54195a91a971e765cc01605e04445de2c
\ No newline at end of file
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 1509128..cbc15c4 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -3573,7 +3573,7 @@
     {"osk-resizes-visual-viewport",
      flag_descriptions::kEnableOskResizesVisualViewportName,
      flag_descriptions::kEnableOskResizesVisualViewportDescription, kOsAndroid,
-     FEATURE_VALUE_TYPE(chrome::android::kOSKResizesVisualViewport)},
+     FEATURE_VALUE_TYPE(blink::features::kOSKResizesVisualViewport)},
     {"contextual-search-debug", flag_descriptions::kContextualSearchDebugName,
      flag_descriptions::kContextualSearchDebugDescription, kOsAndroid,
      FEATURE_VALUE_TYPE(kContextualSearchDebug)},
diff --git a/chrome/browser/accessibility/live_caption_unavailability_notifier.cc b/chrome/browser/accessibility/live_caption_unavailability_notifier.cc
index 9e5cdff..9cfd15f 100644
--- a/chrome/browser/accessibility/live_caption_unavailability_notifier.cc
+++ b/chrome/browser/accessibility/live_caption_unavailability_notifier.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/accessibility/live_caption_unavailability_notifier.h"
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 
+#include "base/containers/contains.h"
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/accessibility/caption_bubble_context_browser.h"
 #include "chrome/browser/accessibility/live_caption_controller_factory.h"
@@ -108,17 +108,12 @@
 }
 
 bool LiveCaptionUnavailabilityNotifier::ErrorSilencedForOrigin() {
-  const base::Value::List& silenced_sites_list = profile_prefs_->GetList(
-      prefs::kLiveCaptionMediaFoundationRendererErrorSilenced);
-
-  const auto it = std::find_if(
-      silenced_sites_list.begin(), silenced_sites_list.end(),
-      [&](const base::Value& value) {
-        return value.GetString() ==
-               render_frame_host().GetLastCommittedOrigin().Serialize();
-      });
-
-  return it != silenced_sites_list.end();
+  using SelectConstVersion = const std::string& (base::Value::*)() const;
+  return base::Contains(
+      profile_prefs_->GetList(
+          prefs::kLiveCaptionMediaFoundationRendererErrorSilenced),
+      render_frame_host().GetLastCommittedOrigin().Serialize(),
+      static_cast<SelectConstVersion>(&base::Value::GetString));
 }
 
 void LiveCaptionUnavailabilityNotifier::DisplayMediaFoundationRendererError() {
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.cc b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
index fcc4f2a..d823e3a 100644
--- a/chrome/browser/android/omnibox/autocomplete_controller_android.cc
+++ b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
@@ -31,6 +31,8 @@
 #include "chrome/browser/autocomplete/shortcuts_backend_factory.h"
 #include "chrome/browser/predictors/autocomplete_action_predictor.h"
 #include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
+#include "chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h"
+#include "chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service_factory.h"
 #include "chrome/browser/preloading/prerender/prerender_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_android.h"
@@ -325,10 +327,15 @@
 
   OmniboxEventGlobalTracker::GetInstance()->OnURLOpened(&log);
 
-  // Record the value if prerender for search suggestion was not started. Other
-  // values (kHitFinished, kUnused, kCancelled) are recorded in
-  // PrerenderManager.
   if (web_contents) {
+    if (auto* search_prefetch_service =
+            SearchPrefetchServiceFactory::GetForProfile(profile_)) {
+      search_prefetch_service->OnURLOpenedFromOmnibox(&log, web_contents);
+    }
+
+    // Record the value if prerender for search suggestion was not started.
+    // Other values (kHitFinished, kUnused, kCancelled) are recorded in
+    // PrerenderManager.
     auto* prerender_manager = PrerenderManager::FromWebContents(web_contents);
     if (!prerender_manager ||
         !prerender_manager->HasSearchResultPagePrerendered()) {
@@ -337,7 +344,6 @@
           PrerenderPredictionStatus::kNotStarted);
     }
   }
-
   predictors::AutocompleteActionPredictorFactory::GetForProfile(profile_)
       ->OnOmniboxOpenedUrl(log);
 }
diff --git a/chrome/browser/apps/app_service/subscriber_crosapi.cc b/chrome/browser/apps/app_service/subscriber_crosapi.cc
index 66e5bdf..376c6472 100644
--- a/chrome/browser/apps/app_service/subscriber_crosapi.cc
+++ b/chrome/browser/apps/app_service/subscriber_crosapi.cc
@@ -233,8 +233,7 @@
 
 void SubscriberCrosapi::UninstallSilently(const std::string& app_id,
                                           UninstallSource uninstall_source) {
-  proxy_->UninstallSilently(
-      app_id, ConvertUninstallSourceToMojomUninstallSource(uninstall_source));
+  proxy_->UninstallSilently(app_id, uninstall_source);
 }
 
 void SubscriberCrosapi::OnSubscriberDisconnected() {
diff --git a/chrome/browser/apps/app_service/webapk/webapk_install_task.cc b/chrome/browser/apps/app_service/webapk/webapk_install_task.cc
index 70ddd7c..6959c92 100644
--- a/chrome/browser/apps/app_service/webapk/webapk_install_task.cc
+++ b/chrome/browser/apps/app_service/webapk/webapk_install_task.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/apps/app_service/webapk/webapk_install_task.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "ash/components/arc/mojom/webapk.mojom.h"
@@ -15,6 +14,7 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/task_traits.h"
@@ -368,9 +368,8 @@
   // and just send any URL of the correct purpose.
   auto& registrar = web_app_provider_->registrar();
   const auto& manifest_icons = registrar.GetAppIconInfos(app_id_);
-  auto it = std::find_if(
-      manifest_icons.begin(), manifest_icons.end(),
-      [&icon_size_and_purpose](const apps::IconInfo& info) {
+  auto it = base::ranges::find_if(
+      manifest_icons, [&icon_size_and_purpose](const apps::IconInfo& info) {
         return info.purpose ==
                ManifestPurposeToIconInfoPurpose(icon_size_and_purpose->purpose);
       });
diff --git a/chrome/browser/apps/app_service/webapk/webapk_utils.cc b/chrome/browser/apps/app_service/webapk/webapk_utils.cc
index 2d71196..dc4e22c 100644
--- a/chrome/browser/apps/app_service/webapk/webapk_utils.cc
+++ b/chrome/browser/apps/app_service/webapk/webapk_utils.cc
@@ -4,12 +4,12 @@
 
 #include "chrome/browser/apps/app_service/webapk/webapk_utils.h"
 
-#include <algorithm>
 #include <utility>
 #include <vector>
 
 #include "base/location.h"
 #include "base/logging.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
@@ -167,9 +167,8 @@
   // the manifest. Since we can't be perfect, it's okay to be roughly correct
   // and just send any URL of the correct purpose.
   const auto& manifest_icons = registrar.GetAppIconInfos(app_id);
-  auto it = std::find_if(
-      manifest_icons.begin(), manifest_icons.end(),
-      [&icon_size_and_purpose](const apps::IconInfo& info) {
+  auto it = base::ranges::find_if(
+      manifest_icons, [&icon_size_and_purpose](const apps::IconInfo& info) {
         return info.purpose ==
                ManifestPurposeToIconInfoPurpose(icon_size_and_purpose->purpose);
       });
diff --git a/chrome/browser/ash/file_manager/file_manager_string_util.cc b/chrome/browser/ash/file_manager/file_manager_string_util.cc
index 449dc765..61bbacd5 100644
--- a/chrome/browser/ash/file_manager/file_manager_string_util.cc
+++ b/chrome/browser/ash/file_manager/file_manager_string_util.cc
@@ -912,6 +912,29 @@
              IDS_FILE_BROWSER_DLP_MANAGED_ICON_TOOLTIP);
   SET_STRING("DLP_FILE_PICKER_BANNER", IDS_FILE_BROWSER_DLP_FILE_PICKER_BANNER);
   SET_STRING("DLP_FILE_SAVER_BANNER", IDS_FILE_BROWSER_DLP_FILE_SAVER_BANNER);
+  SET_STRING("DLP_RESTRICTION_DETAILS_TITLE",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_TITLE);
+  SET_STRING("DLP_RESTRICTION_DETAILS_MESSAGE",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_MESSAGE);
+  SET_STRING("DLP_RESTRICTION_DETAILS_BLOCK",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_BLOCK);
+  SET_STRING("DLP_RESTRICTION_DETAILS_WARN",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_WARN);
+  SET_STRING("DLP_RESTRICTION_DETAILS_REPORT",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_REPORT);
+  SET_STRING("DLP_RESTRICTION_DETAILS_FILE_ACCESS",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS);
+  SET_STRING("DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL);
+  SET_STRING("DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT);
+  SET_STRING("DLP_RESTRICTION_DETAILS_FILE_TRANSFER",
+             IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_TRANSFER);
+  SET_STRING("DLP_COMPONENT_REMOVABLE",
+             IDS_FILE_BROWSER_DLP_COMPONENT_REMOVABLE);
+  SET_STRING("DLP_COMPONENT_PLAY", IDS_FILE_BROWSER_DLP_COMPONENT_PLAY);
+  SET_STRING("DLP_COMPONENT_LINUX", IDS_FILE_BROWSER_DLP_COMPONENT_LINUX);
+  SET_STRING("DLP_COMPONENT_VM", IDS_FILE_BROWSER_DLP_COMPONENT_VM);
 }
 
 #undef SET_STRING
diff --git a/chrome/browser/ash/web_applications/projector_app/untrusted_projector_ui_config.cc b/chrome/browser/ash/web_applications/projector_app/untrusted_projector_ui_config.cc
index 10cd983..3a44a98 100644
--- a/chrome/browser/ash/web_applications/projector_app/untrusted_projector_ui_config.cc
+++ b/chrome/browser/ash/web_applications/projector_app/untrusted_projector_ui_config.cc
@@ -44,6 +44,9 @@
           base::FeatureList::IsEnabled(blink::features::kFileHandlingAPI));
   source->AddBoolean("isReportToCrash2Enabled",
                      ash::features::IsProjectorWebReportCrashEnabled());
+  source->AddBoolean(
+      "isUseApiKeyForTranslationEnabled",
+      ash::features::IsProjectorUseApiKeyForTranslationEnabled());
   source->AddString("appLocale", g_browser_process->GetApplicationLocale());
 }
 
diff --git a/chrome/browser/ash/web_applications/terminal_source.cc b/chrome/browser/ash/web_applications/terminal_source.cc
index 6da98b6..b85c720d 100644
--- a/chrome/browser/ash/web_applications/terminal_source.cc
+++ b/chrome/browser/ash/web_applications/terminal_source.cc
@@ -245,7 +245,7 @@
   }
 }
 
-// Required for wasm SharedArrayBuffer.
+// Improve security, and it is required for wasm SharedArrayBuffer.
 std::string TerminalSource::GetCrossOriginOpenerPolicy() {
   return "same-origin";
 }
diff --git a/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc b/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc
index e6dc3a12..a125350 100644
--- a/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc
+++ b/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/containers/contains.h"
 #include "base/strings/string_util.h"
 #include "base/types/optional_util.h"
 #include "chrome/android/chrome_jni_headers/SaveUpdateAddressProfilePromptController_jni.h"
@@ -100,11 +101,8 @@
   const std::string locale = g_browser_process->GetApplicationLocale();
   std::vector<ProfileValueDifference> differences =
       GetProfileDifferenceForUi(original_profile_.value(), profile_, locale);
-  bool address_updated =
-      std::find_if(differences.begin(), differences.end(),
-                   [](const ProfileValueDifference& diff) {
-                     return diff.type == ADDRESS_HOME_ADDRESS;
-                   }) != differences.end();
+  bool address_updated = base::Contains(differences, ADDRESS_HOME_ADDRESS,
+                                        &ProfileValueDifference::type);
   return GetProfileDescription(
       original_profile_.value(), locale,
       /*include_address_and_contacts=*/!address_updated);
diff --git a/chrome/browser/autofill/credit_card_accessory_controller_impl.cc b/chrome/browser/autofill/credit_card_accessory_controller_impl.cc
index 5228813..5fc7a28 100644
--- a/chrome/browser/autofill/credit_card_accessory_controller_impl.cc
+++ b/chrome/browser/autofill/credit_card_accessory_controller_impl.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/autofill/credit_card_accessory_controller_impl.h"
 
-#include <algorithm>
 #include <iterator>
 #include <utility>
 #include <vector>
@@ -13,6 +12,7 @@
 #include "base/containers/cxx20_erase_vector.h"
 #include "base/debug/dump_without_crashing.h"
 #include "base/memory/ptr_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/trace_event/trace_event.h"
 #include "chrome/browser/android/preferences/autofill/autofill_profile_bridge.h"
@@ -230,8 +230,8 @@
   }
 
   std::vector<CardOrVirtualCard> cards = GetAllCreditCards();
-  auto card_iter = std::find_if(
-      cards.begin(), cards.end(), [&selection](const auto& card_or_virtual) {
+  auto card_iter =
+      base::ranges::find_if(cards, [&selection](const auto& card_or_virtual) {
         const CreditCard* card = UnwrapCardOrVirtualCard(card_or_virtual);
         return card && card->guid() == selection.id();
       });
diff --git a/chrome/browser/background/background_mode_manager_unittest.cc b/chrome/browser/background/background_mode_manager_unittest.cc
index f469854..fa6d90e 100644
--- a/chrome/browser/background/background_mode_manager_unittest.cc
+++ b/chrome/browser/background/background_mode_manager_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/test_simple_task_runner.h"
@@ -146,16 +147,16 @@
 
   // TestBackgroundModeManager:
   bool HasPersistentBackgroundClient() const override {
-    return std::find_if(profile_app_counts_.begin(), profile_app_counts_.end(),
-                        [](const auto& profile_count_pair) {
-                          return profile_count_pair.second.persistent > 0;
-                        }) != profile_app_counts_.end();
+    return base::ranges::any_of(
+        profile_app_counts_, [](const auto& profile_count_pair) {
+          return profile_count_pair.second.persistent > 0;
+        });
   }
   bool HasAnyBackgroundClient() const override {
-    return std::find_if(profile_app_counts_.begin(), profile_app_counts_.end(),
-                        [](const auto& profile_count_pair) {
-                          return profile_count_pair.second.any > 0;
-                        }) != profile_app_counts_.end();
+    return base::ranges::any_of(profile_app_counts_,
+                                [](const auto& profile_count_pair) {
+                                  return profile_count_pair.second.any > 0;
+                                });
   }
   bool HasPersistentBackgroundClientForProfile(
       const Profile* profile) const override {
diff --git a/chrome/browser/breadcrumbs/crash_reporter_breadcrumb_observer_unittest.cc b/chrome/browser/breadcrumbs/crash_reporter_breadcrumb_observer_unittest.cc
index a0efb023..b48deed 100644
--- a/chrome/browser/breadcrumbs/crash_reporter_breadcrumb_observer_unittest.cc
+++ b/chrome/browser/breadcrumbs/crash_reporter_breadcrumb_observer_unittest.cc
@@ -58,18 +58,6 @@
   }
 
  protected:
-  // Returns the BreadcrumbManagerKeyedService for |browser_context|, and sets
-  // |crash_reporter_breadcrumb_observer_| as its observer.
-  breadcrumbs::BreadcrumbManagerKeyedService* GetAndObserveBreadcrumbService(
-      content::BrowserContext* browser_context) {
-    breadcrumbs::BreadcrumbManagerKeyedService* const breadcrumb_service =
-        BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
-            browser_context);
-    crash_reporter_breadcrumb_observer_.ObserveBreadcrumbManagerService(
-        breadcrumb_service);
-    return breadcrumb_service;
-  }
-
   content::BrowserTaskEnvironment task_environment_;
   TestingProfile browser_context_;
   TestingProfile browser_context_2_;
@@ -85,7 +73,8 @@
 // reports.
 TEST_F(CrashReporterBreadcrumbObserverTest, EventsAttachedToCrashReport) {
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      GetAndObserveBreadcrumbService(&browser_context_);
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
+          &browser_context_);
 
   breadcrumb_service->AddEvent(std::string("Breadcrumb Event"));
 
@@ -107,7 +96,8 @@
 // Tests that breadcrumbs string is cut when it exceeds the max allowed length.
 TEST_F(CrashReporterBreadcrumbObserverTest, MAYBE_ProductDataOverflow) {
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      GetAndObserveBreadcrumbService(&browser_context_);
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
+          &browser_context_);
 
   // Build a sample breadcrumbs string greater than the maximum allowed size.
   std::string breadcrumbs;
@@ -153,20 +143,23 @@
   const std::string event = "Breadcrumb Event";
 
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      GetAndObserveBreadcrumbService(&browser_context_);
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
+          &browser_context_);
 
   breadcrumb_service->AddEvent(event);
   EXPECT_EQ(1, CountSubstrings(GetBreadcrumbsCrashKeyValue(), event));
 
   breadcrumbs::BreadcrumbManagerKeyedService* otr_breadcrumb_service =
-      GetAndObserveBreadcrumbService(browser_context_.GetOffTheRecordProfile(
-          Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true));
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
+          browser_context_.GetOffTheRecordProfile(
+              Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true));
 
   otr_breadcrumb_service->AddEvent(event);
   EXPECT_EQ(2, CountSubstrings(GetBreadcrumbsCrashKeyValue(), event));
 
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service_2 =
-      GetAndObserveBreadcrumbService(&browser_context_2_);
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
+          &browser_context_2_);
 
   breadcrumb_service_2->AddEvent(event);
   EXPECT_EQ(3, CountSubstrings(GetBreadcrumbsCrashKeyValue(), event));
diff --git a/chrome/browser/browsing_data/access_context_audit_browsertest.cc b/chrome/browser/browsing_data/access_context_audit_browsertest.cc
index b313231..6b752b0 100644
--- a/chrome/browser/browsing_data/access_context_audit_browsertest.cc
+++ b/chrome/browser/browsing_data/access_context_audit_browsertest.cc
@@ -5,6 +5,7 @@
 #include <memory>
 
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
@@ -88,9 +89,9 @@
     const std::string& domain,
     const std::string& path,
     bool compare_host_only = false) {
-  EXPECT_NE(
-      std::find_if(
-          record_list.begin(), record_list.end(),
+  EXPECT_TRUE(
+      base::ranges::any_of(
+          record_list,
           [=](const AccessContextAuditDatabase::AccessRecord& record) {
             return record.type ==
                        AccessContextAuditDatabase::StorageAPIType::kCookie &&
@@ -100,16 +101,13 @@
                         : record.top_frame_origin == top_frame_origin) &&
                    record.name == name && record.domain == domain &&
                    record.path == path;
-          }),
-      record_list.end());
+          }));
 
-  EXPECT_NE(std::find_if(cookies.begin(), cookies.end(),
-                         [=](const net::CanonicalCookie& cookie) {
-                           return cookie.Name() == name &&
-                                  cookie.Domain() == domain &&
-                                  cookie.Path() == path;
-                         }),
-            cookies.end());
+  EXPECT_TRUE(
+      base::ranges::any_of(cookies, [=](const net::CanonicalCookie& cookie) {
+        return cookie.Name() == name && cookie.Domain() == domain &&
+               cookie.Path() == path;
+      }));
 }
 
 // Check that |record_list| contains a record indicating |origin| accessed
@@ -123,8 +121,8 @@
     const url::Origin& top_frame_origin,
     bool compare_host_only = false) {
   for (auto type : types) {
-    auto it = std::find_if(
-        record_list.begin(), record_list.end(),
+    bool found = base::ranges::any_of(
+        record_list,
         [=](const AccessContextAuditDatabase::AccessRecord& record) {
           return record.type == type &&
                  (compare_host_only
@@ -134,13 +132,11 @@
                       : record.top_frame_origin == top_frame_origin &&
                             record.origin == origin);
         });
-    if (origin != top_frame_origin &&
-        type == AccessContextAuditDatabase::StorageAPIType::kWebDatabase) {
-      // WebSQL in third-party contexts is disabled as of M97.
-      EXPECT_EQ(it, record_list.end());
-    } else {
-      EXPECT_NE(it, record_list.end());
-    }
+    // WebSQL in third-party contexts is disabled as of M97.
+    EXPECT_EQ(
+        found,
+        origin == top_frame_origin ||
+            type != AccessContextAuditDatabase::StorageAPIType::kWebDatabase);
   }
 }
 
@@ -467,13 +463,11 @@
   // the history deletion should only affect the access record.
   EXPECT_EQ(cookies.size(),
             kEmbeddedPageCookieCount + kTopLevelPageCookieCount);
-  EXPECT_NE(std::find_if(cookies.begin(), cookies.end(),
-                         [=](const net::CanonicalCookie& cookie) {
-                           return cookie.Name() == "embedder" &&
-                                  cookie.Domain() == kTopLevelHost &&
-                                  cookie.Path() == "/";
-                         }),
-            cookies.end());
+  EXPECT_TRUE(
+      base::ranges::any_of(cookies, [=](const net::CanonicalCookie& cookie) {
+        return cookie.Name() == "embedder" &&
+               cookie.Domain() == kTopLevelHost && cookie.Path() == "/";
+      }));
 }
 
 // TODO(crbug.com/1317431): WebSQL does not work on Fuchsia.
diff --git a/chrome/browser/browsing_data/access_context_audit_database_unittest.cc b/chrome/browser/browsing_data/access_context_audit_database_unittest.cc
index 7f2e3f83..c9badd1 100644
--- a/chrome/browser/browsing_data/access_context_audit_database_unittest.cc
+++ b/chrome/browser/browsing_data/access_context_audit_database_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/browsing_data/access_context_audit_database.h"
 
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/test/bind.h"
@@ -497,11 +498,7 @@
       std::remove_if(
           test_records.begin(), test_records.end(),
           [=](const AccessContextAuditDatabase::AccessRecord& record) {
-            return std::find_if(many_visit_origins.begin(),
-                                many_visit_origins.end(),
-                                [=](const url::Origin origin) {
-                                  return record.top_frame_origin == origin;
-                                }) != many_visit_origins.end();
+            return base::Contains(many_visit_origins, record.top_frame_origin);
           }),
       test_records.end());
 
diff --git a/chrome/browser/browsing_data/access_context_audit_service_unittest.cc b/chrome/browser/browsing_data/access_context_audit_service_unittest.cc
index 7e04974..cba58b5 100644
--- a/chrome/browser/browsing_data/access_context_audit_service_unittest.cc
+++ b/chrome/browser/browsing_data/access_context_audit_service_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/callback_helpers.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/i18n/time_formatting.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/thread_pool.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
@@ -42,10 +43,9 @@
     url::Origin top_frame_origin,
     base::Time last_access_time,
     const std::vector<AccessContextAuditDatabase::AccessRecord>& records) {
-  EXPECT_NE(
-      std::find_if(
-          records.begin(), records.end(),
-          [=](const AccessContextAuditDatabase::AccessRecord& record) {
+  EXPECT_TRUE(
+      base::ranges::any_of(
+          records, [=](const AccessContextAuditDatabase::AccessRecord& record) {
             return record.type ==
                        AccessContextAuditDatabase::StorageAPIType::kCookie &&
                    record.top_frame_origin == top_frame_origin &&
@@ -54,8 +54,7 @@
                    record.path == cookie->Path() &&
                    record.last_access_time == last_access_time &&
                    record.is_persistent == cookie->IsPersistent();
-          }),
-      records.end());
+          }));
 }
 
 // Checks that info in |record| matches storage API access defined by
@@ -66,15 +65,12 @@
     url::Origin top_frame_origin,
     base::Time last_access_time,
     const std::vector<AccessContextAuditDatabase::AccessRecord>& records) {
-  EXPECT_NE(
-      std::find_if(records.begin(), records.end(),
-                   [=](const AccessContextAuditDatabase::AccessRecord& record) {
-                     return record.type == type &&
-                            record.origin == storage_origin &&
-                            record.top_frame_origin == top_frame_origin &&
-                            record.last_access_time == last_access_time;
-                   }),
-      records.end());
+  EXPECT_TRUE(base::ranges::any_of(
+      records, [=](const AccessContextAuditDatabase::AccessRecord& record) {
+        return record.type == type && record.origin == storage_origin &&
+               record.top_frame_origin == top_frame_origin &&
+               record.last_access_time == last_access_time;
+      }));
 }
 
 }  // namespace
diff --git a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
index 868f7b1..a11882e 100644
--- a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
+++ b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
@@ -268,8 +268,8 @@
 
 IN_PROC_BROWSER_TEST_F(DataTransferDlpBrowserTest, BlockDestination) {
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
 
     base::Value src_urls1(base::Value::Type::LIST);
     src_urls1.Append(kMailUrl);
@@ -348,28 +348,28 @@
 IN_PROC_BROWSER_TEST_F(DataTransferDlpBrowserTest, MAYBE_WarnDestination) {
   base::WeakPtr<views::Widget> widget;
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
-    base::Value rule(base::Value::Type::DICTIONARY);
-    base::Value src_urls(base::Value::Type::DICTIONARY);
-    base::Value src_urls_list(base::Value::Type::LIST);
-    src_urls_list.Append(base::Value(kMailUrl));
-    src_urls.SetKey("urls", std::move(src_urls_list));
-    rule.SetKey("sources", std::move(src_urls));
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
+    base::Value::Dict rule;
+    base::Value::Dict src_urls;
+    base::Value::List src_urls_list;
+    src_urls_list.Append(kMailUrl);
+    src_urls.Set("urls", std::move(src_urls_list));
+    rule.Set("sources", std::move(src_urls));
 
-    base::Value dst_urls(base::Value::Type::DICTIONARY);
-    base::Value dst_urls_list(base::Value::Type::LIST);
-    dst_urls_list.Append(base::Value("*"));
-    dst_urls.SetKey("urls", std::move(dst_urls_list));
-    rule.SetKey("destinations", std::move(dst_urls));
+    base::Value::Dict dst_urls;
+    base::Value::List dst_urls_list;
+    dst_urls_list.Append("*");
+    dst_urls.Set("urls", std::move(dst_urls_list));
+    rule.Set("destinations", std::move(dst_urls));
 
-    base::Value restrictions(base::Value::Type::DICTIONARY);
-    base::Value restrictions_list(base::Value::Type::LIST);
-    base::Value class_level_dict(base::Value::Type::DICTIONARY);
-    class_level_dict.SetKey("class", base::Value("CLIPBOARD"));
-    class_level_dict.SetKey("level", base::Value("WARN"));
+    base::Value::Dict restrictions;
+    base::Value::List restrictions_list;
+    base::Value::Dict class_level_dict;
+    class_level_dict.Set("class", "CLIPBOARD");
+    class_level_dict.Set("level", "WARN");
     restrictions_list.Append(std::move(class_level_dict));
-    rule.SetKey("restrictions", std::move(restrictions_list));
+    rule.Set("restrictions", std::move(restrictions_list));
 
     update->Append(std::move(rule));
   }
@@ -504,28 +504,28 @@
 
   // TODO(1276069): Refactor duplicated code below.
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
-    base::Value rule(base::Value::Type::DICTIONARY);
-    base::Value src_urls(base::Value::Type::DICTIONARY);
-    base::Value src_urls_list(base::Value::Type::LIST);
-    src_urls_list.Append(base::Value(kMailUrl));
-    src_urls.SetKey("urls", std::move(src_urls_list));
-    rule.SetKey("sources", std::move(src_urls));
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
+    base::Value::Dict rule;
+    base::Value::Dict src_urls;
+    base::Value::List src_urls_list;
+    src_urls_list.Append(kMailUrl);
+    src_urls.Set("urls", std::move(src_urls_list));
+    rule.Set("sources", std::move(src_urls));
 
-    base::Value dst_urls(base::Value::Type::DICTIONARY);
-    base::Value dst_urls_list(base::Value::Type::LIST);
-    dst_urls_list.Append(base::Value("*"));
-    dst_urls.SetKey("urls", std::move(dst_urls_list));
-    rule.SetKey("destinations", std::move(dst_urls));
+    base::Value::Dict dst_urls;
+    base::Value::List dst_urls_list;
+    dst_urls_list.Append("*");
+    dst_urls.Set("urls", std::move(dst_urls_list));
+    rule.Set("destinations", std::move(dst_urls));
 
-    base::Value restrictions(base::Value::Type::DICTIONARY);
-    base::Value restrictions_list(base::Value::Type::LIST);
-    base::Value class_level_dict(base::Value::Type::DICTIONARY);
-    class_level_dict.SetKey("class", base::Value("CLIPBOARD"));
-    class_level_dict.SetKey("level", base::Value("WARN"));
+    base::Value::Dict restrictions;
+    base::Value::List restrictions_list;
+    base::Value::Dict class_level_dict;
+    class_level_dict.Set("class", "CLIPBOARD");
+    class_level_dict.Set("level", "WARN");
     restrictions_list.Append(std::move(class_level_dict));
-    rule.SetKey("restrictions", std::move(restrictions_list));
+    rule.Set("restrictions", std::move(restrictions_list));
 
     update->Append(std::move(rule));
   }
@@ -599,28 +599,28 @@
 
   // TODO(1276069): Refactor duplicated code below.
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
-    base::Value rule(base::Value::Type::DICTIONARY);
-    base::Value src_urls(base::Value::Type::DICTIONARY);
-    base::Value src_urls_list(base::Value::Type::LIST);
-    src_urls_list.Append(base::Value(kMailUrl));
-    src_urls.SetKey("urls", std::move(src_urls_list));
-    rule.SetKey("sources", std::move(src_urls));
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
+    base::Value::Dict rule;
+    base::Value::Dict src_urls;
+    base::Value::List src_urls_list;
+    src_urls_list.Append(kMailUrl);
+    src_urls.Set("urls", std::move(src_urls_list));
+    rule.Set("sources", std::move(src_urls));
 
-    base::Value dst_urls(base::Value::Type::DICTIONARY);
-    base::Value dst_urls_list(base::Value::Type::LIST);
-    dst_urls_list.Append(base::Value("*"));
-    dst_urls.SetKey("urls", std::move(dst_urls_list));
-    rule.SetKey("destinations", std::move(dst_urls));
+    base::Value::Dict dst_urls;
+    base::Value::List dst_urls_list;
+    dst_urls_list.Append("*");
+    dst_urls.Set("urls", std::move(dst_urls_list));
+    rule.Set("destinations", std::move(dst_urls));
 
-    base::Value restrictions(base::Value::Type::DICTIONARY);
-    base::Value restrictions_list(base::Value::Type::LIST);
-    base::Value class_level_dict(base::Value::Type::DICTIONARY);
-    class_level_dict.SetKey("class", base::Value("CLIPBOARD"));
-    class_level_dict.SetKey("level", base::Value("WARN"));
+    base::Value::Dict restrictions;
+    base::Value::List restrictions_list;
+    base::Value::Dict class_level_dict;
+    class_level_dict.Set("class", "CLIPBOARD");
+    class_level_dict.Set("level", "WARN");
     restrictions_list.Append(std::move(class_level_dict));
-    rule.SetKey("restrictions", std::move(restrictions_list));
+    rule.Set("restrictions", std::move(restrictions_list));
 
     update->Append(std::move(rule));
   }
@@ -691,28 +691,28 @@
 
   // TODO(1276069): Refactor duplicated code below.
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
-    base::Value rule(base::Value::Type::DICTIONARY);
-    base::Value src_urls(base::Value::Type::DICTIONARY);
-    base::Value src_urls_list(base::Value::Type::LIST);
-    src_urls_list.Append(base::Value(kMailUrl));
-    src_urls.SetKey("urls", std::move(src_urls_list));
-    rule.SetKey("sources", std::move(src_urls));
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
+    base::Value::Dict rule;
+    base::Value::Dict src_urls;
+    base::Value::List src_urls_list;
+    src_urls_list.Append(kMailUrl);
+    src_urls.Set("urls", std::move(src_urls_list));
+    rule.Set("sources", std::move(src_urls));
 
-    base::Value dst_urls(base::Value::Type::DICTIONARY);
-    base::Value dst_urls_list(base::Value::Type::LIST);
-    dst_urls_list.Append(base::Value("*"));
-    dst_urls.SetKey("urls", std::move(dst_urls_list));
-    rule.SetKey("destinations", std::move(dst_urls));
+    base::Value::Dict dst_urls;
+    base::Value::List dst_urls_list;
+    dst_urls_list.Append("*");
+    dst_urls.Set("urls", std::move(dst_urls_list));
+    rule.Set("destinations", std::move(dst_urls));
 
-    base::Value restrictions(base::Value::Type::DICTIONARY);
-    base::Value restrictions_list(base::Value::Type::LIST);
-    base::Value class_level_dict(base::Value::Type::DICTIONARY);
-    class_level_dict.SetKey("class", base::Value("CLIPBOARD"));
-    class_level_dict.SetKey("level", base::Value("WARN"));
+    base::Value::Dict restrictions;
+    base::Value::List restrictions_list;
+    base::Value::Dict class_level_dict;
+    class_level_dict.Set("class", "CLIPBOARD");
+    class_level_dict.Set("level", "WARN");
     restrictions_list.Append(std::move(class_level_dict));
-    rule.SetKey("restrictions", std::move(restrictions_list));
+    rule.Set("restrictions", std::move(restrictions_list));
 
     update->Append(std::move(rule));
   }
@@ -774,28 +774,28 @@
 
   // TODO(1276069): Refactor duplicated code below.
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
-    base::Value rule(base::Value::Type::DICTIONARY);
-    base::Value src_urls(base::Value::Type::DICTIONARY);
-    base::Value src_urls_list(base::Value::Type::LIST);
-    src_urls_list.Append(base::Value(kMailUrl));
-    src_urls.SetKey("urls", std::move(src_urls_list));
-    rule.SetKey("sources", std::move(src_urls));
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
+    base::Value::Dict rule;
+    base::Value::Dict src_urls;
+    base::Value::List src_urls_list;
+    src_urls_list.Append(kMailUrl);
+    src_urls.Set("urls", std::move(src_urls_list));
+    rule.Set("sources", std::move(src_urls));
 
-    base::Value dst_urls(base::Value::Type::DICTIONARY);
-    base::Value dst_urls_list(base::Value::Type::LIST);
-    dst_urls_list.Append(base::Value("*"));
-    dst_urls.SetKey("urls", std::move(dst_urls_list));
-    rule.SetKey("destinations", std::move(dst_urls));
+    base::Value::Dict dst_urls;
+    base::Value::List dst_urls_list;
+    dst_urls_list.Append("*");
+    dst_urls.Set("urls", std::move(dst_urls_list));
+    rule.Set("destinations", std::move(dst_urls));
 
-    base::Value restrictions(base::Value::Type::DICTIONARY);
-    base::Value restrictions_list(base::Value::Type::LIST);
-    base::Value class_level_dict(base::Value::Type::DICTIONARY);
-    class_level_dict.SetKey("class", base::Value("CLIPBOARD"));
-    class_level_dict.SetKey("level", base::Value("REPORT"));
+    base::Value::Dict restrictions;
+    base::Value::List restrictions_list;
+    base::Value::Dict class_level_dict;
+    class_level_dict.Set("class", "CLIPBOARD");
+    class_level_dict.Set("level", "REPORT");
     restrictions_list.Append(std::move(class_level_dict));
-    rule.SetKey("restrictions", std::move(restrictions_list));
+    rule.Set("restrictions", std::move(restrictions_list));
 
     update->Append(std::move(rule));
   }
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc
index 438f96c..809d901 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc
@@ -73,8 +73,8 @@
 IN_PROC_BROWSER_TEST_F(DlpContentRestrictionSetBrowserTest,
                        GetRestrictionSetForURL) {
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
 
     base::Value src_urls1(base::Value::Type::LIST);
     src_urls1.Append(kUrl1);
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc
index 7606d2d..644fe02a 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc
@@ -59,8 +59,8 @@
   InitializeRulesManager();
 
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
 
     base::Value rules(base::Value::Type::LIST);
 
diff --git a/chrome/browser/component_updater/cros_component_installer_chromeos.cc b/chrome/browser/component_updater/cros_component_installer_chromeos.cc
index cc71f5e5..e1498bb2 100644
--- a/chrome/browser/component_updater/cros_component_installer_chromeos.cc
+++ b/chrome/browser/component_updater/cros_component_installer_chromeos.cc
@@ -12,6 +12,7 @@
 #include "base/files/file_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/thread_pool.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -71,9 +72,8 @@
 }
 
 const ComponentConfig* FindConfig(const std::string& name) {
-  const ComponentConfig* config = std::find_if(
-      std::begin(kConfigs), std::end(kConfigs),
-      [&name](const ComponentConfig& config) { return config.name == name; });
+  const ComponentConfig* config =
+      base::ranges::find(kConfigs, name, &ComponentConfig::name);
   if (config == std::end(kConfigs))
     return nullptr;
   return config;
diff --git a/chrome/browser/component_updater/third_party_module_list_component_installer_win.cc b/chrome/browser/component_updater/third_party_module_list_component_installer_win.cc
index 56e5708f..e529755 100644
--- a/chrome/browser/component_updater/third_party_module_list_component_installer_win.cc
+++ b/chrome/browser/component_updater/third_party_module_list_component_installer_win.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/component_updater/third_party_module_list_component_installer_win.h"
 
-#include <algorithm>
 #include <iterator>
 #include <utility>
 
@@ -12,6 +11,7 @@
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
+#include "base/ranges/algorithm.h"
 #include "base/values.h"
 #include "base/version.h"
 #include "chrome/browser/win/conflicts/module_blocklist_cache_util.h"
@@ -34,9 +34,7 @@
   DCHECK(component_update_service);
 
   auto components = component_update_service->GetComponents();
-  auto iter = std::find_if(
-      components.begin(), components.end(),
-      [](const auto& component) { return component.id == kComponentId; });
+  auto iter = base::ranges::find(components, kComponentId, &ComponentInfo::id);
   DCHECK(iter != components.end());
 
   return iter->version;
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc
index e45102c..489f894 100644
--- a/chrome/browser/devtools/devtools_ui_bindings.cc
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -20,6 +20,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/escape.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
@@ -317,16 +318,11 @@
 }
 
 std::string SanitizeEnabledExperiments(const std::string& value) {
-  bool valid = std::find_if_not(value.begin(), value.end(), [](char ch) {
-                 if (base::IsAsciiAlpha(ch) || base::IsAsciiDigit(ch) ||
-                     ch == ';' || ch == '_')
-                   return true;
-                 return false;
-               }) == value.end();
-  if (!valid) {
-    return std::string();
-  }
-  return value;
+  const auto is_legal = [](char ch) {
+    return base::IsAsciiAlpha(ch) || base::IsAsciiDigit(ch) || ch == ';' ||
+           ch == '_';
+  };
+  return base::ranges::all_of(value, is_legal) ? value : std::string();
 }
 
 std::string SanitizeFrontendQueryParam(
@@ -690,7 +686,7 @@
   // Remove self from global list.
   DevToolsUIBindingsList& instances =
       DevToolsUIBindings::GetDevToolsUIBindings();
-  auto it(std::find(instances.begin(), instances.end(), this));
+  auto it = base::ranges::find(instances, this);
   DCHECK(it != instances.end());
   instances.erase(it);
 }
diff --git a/chrome/browser/devtools/protocol/cast_handler.cc b/chrome/browser/devtools/protocol/cast_handler.cc
index 2a4eef9f..375bc4d 100644
--- a/chrome/browser/devtools/protocol/cast_handler.cc
+++ b/chrome/browser/devtools/protocol/cast_handler.cc
@@ -7,6 +7,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/media/router/media_router_feature.h"
 #include "chrome/browser/ui/media_router/media_router_ui_helper.h"
 #include "components/media_router/browser/media_router.h"
@@ -238,10 +239,9 @@
 
 media_router::MediaSink::Id CastHandler::GetSinkIdByName(
     const std::string& sink_name) const {
-  auto it = std::find_if(
-      sinks_.begin(), sinks_.end(),
-      [&sink_name](const media_router::MediaSinkWithCastModes& sink) {
-        return sink.sink.name() == sink_name;
+  auto it = base::ranges::find(
+      sinks_, sink_name, [](const media_router::MediaSinkWithCastModes& sink) {
+        return sink.sink.name();
       });
   return it == sinks_.end() ? media_router::MediaSink::Id() : it->sink.id();
 }
@@ -249,10 +249,7 @@
 MediaRoute::Id CastHandler::GetRouteIdForSink(
     const media_router::MediaSink::Id& sink_id) const {
   const auto& routes = routes_observer_->routes();
-  auto it = std::find_if(routes.begin(), routes.end(),
-                         [&sink_id](const MediaRoute& route) {
-                           return route.media_sink_id() == sink_id;
-                         });
+  auto it = base::ranges::find(routes, sink_id, &MediaRoute::media_sink_id);
   return it == routes.end() ? MediaRoute::Id() : it->media_route_id();
 }
 
@@ -283,13 +280,11 @@
 
   auto protocol_sinks = std::make_unique<protocol::Array<Sink>>();
   for (const media_router::MediaSinkWithCastModes& sink_with_modes : sinks_) {
-    auto route_it = std::find_if(
-        routes_observer_->routes().begin(), routes_observer_->routes().end(),
-        [&sink_with_modes](const MediaRoute& route) {
-          return route.media_sink_id() == sink_with_modes.sink.id();
-        });
+    auto route_it = base::ranges::find(routes_observer_->routes(),
+                                       sink_with_modes.sink.id(),
+                                       &MediaRoute::media_sink_id);
     std::string session = route_it == routes_observer_->routes().end()
-                              ? ""
+                              ? std::string()
                               : route_it->description();
     std::unique_ptr<Sink> sink = Sink::Create()
                                      .SetName(sink_with_modes.sink.name())
diff --git a/chrome/browser/downgrade/downgrade_manager.cc b/chrome/browser/downgrade/downgrade_manager.cc
index bfe424c..c9f356b4 100644
--- a/chrome/browser/downgrade/downgrade_manager.cc
+++ b/chrome/browser/downgrade/downgrade_manager.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/downgrade/downgrade_manager.h"
 
-#include <algorithm>
 #include <iterator>
 #include <utility>
 
@@ -17,6 +16,7 @@
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_util.h"
 #include "base/syslog_logging.h"
@@ -68,11 +68,9 @@
         // Don't try to move the dir into which everything is being moved.
         if (name.FinalExtension() == kDowngradeDeleteSuffix)
           return true;
-        return std::find_if(std::begin(kFilesToKeep), std::end(kFilesToKeep),
-                            [&name](const auto& keep) {
-                              return base::EqualsCaseInsensitiveASCII(
-                                  name.value(), keep);
-                            }) != std::end(kFilesToKeep);
+        return base::ranges::any_of(kFilesToKeep, [&name](const auto& keep) {
+          return base::EqualsCaseInsensitiveASCII(name.value(), keep);
+        });
       });
   auto result = MoveContents(source, target, std::move(exclusion_predicate));
 
diff --git a/chrome/browser/download/android/download_dialog_utils.cc b/chrome/browser/download/android/download_dialog_utils.cc
index a783dab..8fa1f6d5 100644
--- a/chrome/browser/download/android/download_dialog_utils.cc
+++ b/chrome/browser/download/android/download_dialog_utils.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/download/android/download_dialog_utils.h"
 
-#include <algorithm>
 #include <string>
 
 #include "base/callback.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/url_formatter/url_formatter.h"
 #include "ui/gfx/text_elider.h"
@@ -16,10 +16,8 @@
 download::DownloadItem* DownloadDialogUtils::FindAndRemoveDownload(
     std::vector<download::DownloadItem*>* downloads,
     const std::string& download_guid) {
-  auto iter = std::find_if(downloads->begin(), downloads->end(),
-                           [&download_guid](download::DownloadItem* download) {
-                             return download->GetGuid() == download_guid;
-                           });
+  auto iter = base::ranges::find(*downloads, download_guid,
+                                 &download::DownloadItem::GetGuid);
 
   if (iter == downloads->end())
     return nullptr;
diff --git a/chrome/browser/download/android/download_manager_service.cc b/chrome/browser/download/android/download_manager_service.cc
index a0d6ae0..3b3f8dc 100644
--- a/chrome/browser/download/android/download_manager_service.cc
+++ b/chrome/browser/download/android/download_manager_service.cc
@@ -13,6 +13,7 @@
 #include "base/containers/contains.h"
 #include "base/location.h"
 #include "base/metrics/field_trial_params.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -698,8 +699,8 @@
   is_pending_downloads_loaded_ = true;
 
   auto result =
-      std::find_if(coordinators_.begin(), coordinators_.end(),
-                   [](const auto& it) { return !it.first->IsOffTheRecord(); });
+      base::ranges::find_if_not(coordinators_, &ProfileKey::IsOffTheRecord,
+                                &Coordinators::value_type::first);
   CHECK(result != coordinators_.end())
       << "A non-OffTheRecord coordinator should exist when "
          "OnPendingDownloadsLoaded is triggered.";
diff --git a/chrome/browser/download/android/download_manager_service.h b/chrome/browser/download/android/download_manager_service.h
index c469e73..07af61d 100644
--- a/chrome/browser/download/android/download_manager_service.h
+++ b/chrome/browser/download/android/download_manager_service.h
@@ -205,6 +205,24 @@
   friend class DownloadManagerServiceTest;
   friend struct base::DefaultSingletonTraits<DownloadManagerService>;
 
+  enum DownloadAction { RESUME, RETRY, PAUSE, CANCEL, REMOVE, UNKNOWN };
+
+  // Holds params provided to the download function calls.
+  struct DownloadActionParams {
+    explicit DownloadActionParams(DownloadAction download_action);
+    DownloadActionParams(DownloadAction download_action, bool user_gesture);
+    DownloadActionParams(const DownloadActionParams& other);
+
+    ~DownloadActionParams() = default;
+
+    DownloadAction action;
+    bool has_user_gesture;
+  };
+
+  using PendingDownloadActions = std::map<std::string, DownloadActionParams>;
+  using Coordinators =
+      std::map<ProfileKey*, download::SimpleDownloadManagerCoordinator*>;
+
   // Helper function to start the download resumption.
   void ResumeDownloadInternal(const std::string& download_guid,
                               ProfileKey* profile_key,
@@ -269,21 +287,6 @@
 
   std::vector<ProfileKey*> profiles_with_pending_get_downloads_actions_;
 
-  enum DownloadAction { RESUME, RETRY, PAUSE, CANCEL, REMOVE, UNKNOWN };
-
-  // Holds params provided to the download function calls.
-  struct DownloadActionParams {
-    explicit DownloadActionParams(DownloadAction download_action);
-    DownloadActionParams(DownloadAction download_action, bool user_gesture);
-    DownloadActionParams(const DownloadActionParams& other);
-
-    ~DownloadActionParams() = default;
-
-    DownloadAction action;
-    bool has_user_gesture;
-  };
-
-  using PendingDownloadActions = std::map<std::string, DownloadActionParams>;
   PendingDownloadActions pending_actions_;
 
   void EnqueueDownloadAction(const std::string& download_guid,
@@ -294,8 +297,7 @@
   base::ScopedMultiSourceObservation<Profile, ProfileObserver>
       observed_profiles_{this};
 
-  std::map<ProfileKey*, download::SimpleDownloadManagerCoordinator*>
-      coordinators_;
+  Coordinators coordinators_;
 };
 
 #endif  // CHROME_BROWSER_DOWNLOAD_ANDROID_DOWNLOAD_MANAGER_SERVICE_H_
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc
index 5d2ce44f..d4c32ab 100644
--- a/chrome/browser/download/download_item_model.cc
+++ b/chrome/browser/download/download_item_model.cc
@@ -11,6 +11,7 @@
 #include "base/i18n/rtl.h"
 #include "base/memory/ptr_util.h"
 #include "base/metrics/field_trial.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/observer_list.h"
 #include "base/run_loop.h"
 #include "base/strings/sys_string_conversions.h"
@@ -38,6 +39,7 @@
 #include "chrome/browser/safe_browsing/download_protection/download_feedback_service.h"
 #include "chrome/browser/safe_browsing/download_protection/download_protection_util.h"
 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/download/public/common/download_danger_type.h"
@@ -48,6 +50,9 @@
 #include "components/safe_browsing/content/common/file_type_policies.h"
 #include "components/safe_browsing/content/common/proto/download_file_types.pb.h"
 #include "components/safe_browsing/core/common/features.h"
+#include "components/signin/public/base/consent_level.h"
+#include "components/signin/public/identity_manager/account_info.h"
+#include "components/signin/public/identity_manager/identity_manager.h"
 #include "components/vector_icons/vector_icons.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -945,8 +950,32 @@
           download::DOWNLOAD_DANGER_TYPE_DANGEROUS_ACCOUNT_COMPROMISE &&
       tailored_verdict.tailored_verdict_type() ==
           TailoredVerdict::COOKIE_THEFT) {
-    // TODO(crbug.com/1351925): Check the adjustments field and add the account
-    // information in the subpage summary.
+    if (base::Contains(tailored_verdict.adjustments(),
+                       TailoredVerdict::ACCOUNT_INFO_STRING)) {
+      auto* identity_manager = IdentityManagerFactory::GetForProfile(profile());
+      std::string email =
+          identity_manager
+              ? identity_manager
+                    ->GetPrimaryAccountInfo(signin::ConsentLevel::kSignin)
+                    .email
+              : "";
+      base::UmaHistogramBoolean(
+          "SBClientDownload.TailoredWarning.HasVaidEmailForAccountInfo",
+          !email.empty());
+      if (!email.empty()) {
+        return DownloadUIModel::BubbleUIInfo(
+                   l10n_util::GetStringFUTF16(
+                       IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT_AND_ACCOUNT,
+                       base::ASCIIToUTF16(email)))
+            .AddIconAndColor(vector_icons::kNotSecureWarningIcon,
+                             ui::kColorAlertHighSeverity)
+            .AddPrimaryButton(DownloadCommands::Command::DISCARD)
+            .AddSubpageButton(
+                l10n_util::GetStringUTF16(IDS_DOWNLOAD_BUBBLE_DELETE),
+                DownloadCommands::Command::DISCARD,
+                /*is_prominent=*/true);
+      }
+    }
     return DownloadUIModel::BubbleUIInfo(
                l10n_util::GetStringUTF16(
                    IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT))
diff --git a/chrome/browser/download/download_item_model_unittest.cc b/chrome/browser/download/download_item_model_unittest.cc
index 89d51802..a5798c21 100644
--- a/chrome/browser/download/download_item_model_unittest.cc
+++ b/chrome/browser/download/download_item_model_unittest.cc
@@ -25,6 +25,7 @@
 #include "chrome/browser/download/download_commands.h"
 #include "chrome/browser/download/download_core_service_factory.h"
 #include "chrome/browser/download/download_core_service_impl.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
@@ -32,6 +33,7 @@
 #include "components/download/public/common/mock_download_item.h"
 #include "components/enterprise/common/download_item_reroute_info.h"
 #include "components/safe_browsing/core/common/features.h"
+#include "components/signin/public/identity_manager/identity_test_utils.h"
 #include "components/vector_icons/vector_icons.h"
 #include "content/public/browser/download_item_utils.h"
 #include "content/public/test/browser_task_environment.h"
@@ -241,6 +243,8 @@
     return model_;
   }
 
+  Profile* profile() { return profile_; }
+
   void SetStatusTextBuilder(bool for_bubble) {
     model_.set_status_text_builder_for_testing(for_bubble);
   }
@@ -1429,10 +1433,14 @@
  protected:
   void SetupTailoredWarningForItem(
       download::DownloadDangerType danger_type,
-      TailoredVerdict::TailoredVerdictType tailored_verdict_type) {
+      TailoredVerdict::TailoredVerdictType tailored_verdict_type,
+      std::vector<TailoredVerdict::ExperimentalWarningAdjustment> adjustments) {
     ON_CALL(item(), GetDangerType()).WillByDefault(Return(danger_type));
     TailoredVerdict tailored_verdict;
     tailored_verdict.set_tailored_verdict_type(tailored_verdict_type);
+    for (const auto& adjustment : adjustments) {
+      tailored_verdict.add_adjustments(adjustment);
+    }
     safe_browsing::DownloadProtectionService::SetDownloadProtectionData(
         &item(), "token",
         safe_browsing::ClientDownloadResponse::SAFE,  // placeholder
@@ -1462,7 +1470,8 @@
   };
   for (const auto& test_case : kShouldShowTailoredWarningTestCases) {
     SetupTailoredWarningForItem(test_case.danger_type,
-                                test_case.tailored_verdict_type);
+                                test_case.tailored_verdict_type,
+                                /*adjustments=*/{});
     EXPECT_EQ(test_case.expected_should_show,
               model().ShouldShowTailoredWarning());
   }
@@ -1473,7 +1482,7 @@
   SetupDownloadItemDefaults();
   SetupTailoredWarningForItem(
       download::DOWNLOAD_DANGER_TYPE_DANGEROUS_ACCOUNT_COMPROMISE,
-      TailoredVerdict::COOKIE_THEFT);
+      TailoredVerdict::COOKIE_THEFT, /*adjustments=*/{});
 
   DownloadUIModel::BubbleUIInfo bubble_ui_info =
       model().GetBubbleUIInfo(/*is_download_bubble_v2=*/true);
@@ -1493,7 +1502,8 @@
        GetBubbleUIInfoForTailoredWarning_SuspiciousArchive) {
   SetupDownloadItemDefaults();
   SetupTailoredWarningForItem(download::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT,
-                              TailoredVerdict::SUSPICIOUS_ARCHIVE);
+                              TailoredVerdict::SUSPICIOUS_ARCHIVE,
+                              /*adjustments=*/{});
 
   DownloadUIModel::BubbleUIInfo bubble_ui_info =
       model().GetBubbleUIInfo(/*is_download_bubble_v2=*/true);
@@ -1515,6 +1525,52 @@
 #endif
 }
 
+TEST_F(DownloadItemModelTailoredWarningTest,
+       GetBubbleUIInfoForTailoredWarning_AccountInfoStringWithAccount) {
+  SetupDownloadItemDefaults();
+  SetupTailoredWarningForItem(
+      download::DOWNLOAD_DANGER_TYPE_DANGEROUS_ACCOUNT_COMPROMISE,
+      TailoredVerdict::COOKIE_THEFT, {TailoredVerdict::ACCOUNT_INFO_STRING});
+  signin::IdentityManager* identity_manager =
+      IdentityManagerFactory::GetForProfile(profile());
+  signin::SetPrimaryAccount(identity_manager, "test@example.com",
+                            signin::ConsentLevel::kSignin);
+
+  DownloadUIModel::BubbleUIInfo bubble_ui_info =
+      model().GetBubbleUIInfo(/*is_download_bubble_v2=*/true);
+  EXPECT_EQ(DownloadCommands::Command::DISCARD,
+            bubble_ui_info.primary_button_command);
+  EXPECT_EQ(1u, bubble_ui_info.subpage_buttons.size());
+  EXPECT_EQ(DownloadCommands::Command::DISCARD,
+            bubble_ui_info.subpage_buttons[0].command);
+  EXPECT_TRUE(bubble_ui_info.subpage_buttons[0].is_prominent);
+  EXPECT_EQ(
+      u"This file contains malware that can compromise your personal or social "
+      u"network accounts, including test@example.com",
+      bubble_ui_info.warning_summary);
+}
+
+TEST_F(DownloadItemModelTailoredWarningTest,
+       GetBubbleUIInfoForTailoredWarning_AccountInfoStringWithoutAccount) {
+  SetupDownloadItemDefaults();
+  SetupTailoredWarningForItem(
+      download::DOWNLOAD_DANGER_TYPE_DANGEROUS_ACCOUNT_COMPROMISE,
+      TailoredVerdict::COOKIE_THEFT, {TailoredVerdict::ACCOUNT_INFO_STRING});
+
+  DownloadUIModel::BubbleUIInfo bubble_ui_info =
+      model().GetBubbleUIInfo(/*is_download_bubble_v2=*/true);
+  EXPECT_EQ(DownloadCommands::Command::DISCARD,
+            bubble_ui_info.primary_button_command);
+  EXPECT_EQ(1u, bubble_ui_info.subpage_buttons.size());
+  EXPECT_EQ(DownloadCommands::Command::DISCARD,
+            bubble_ui_info.subpage_buttons[0].command);
+  EXPECT_TRUE(bubble_ui_info.subpage_buttons[0].is_prominent);
+  EXPECT_EQ(
+      u"This file contains malware that can compromise your personal or social "
+      u"network accounts",
+      bubble_ui_info.warning_summary);
+}
+
 class DownloadItemModelTailoredWarningDisabledTest
     : public DownloadItemModelTailoredWarningTest {
  public:
@@ -1536,7 +1592,7 @@
   SetupDownloadItemDefaults();
   SetupTailoredWarningForItem(
       download::DOWNLOAD_DANGER_TYPE_DANGEROUS_ACCOUNT_COMPROMISE,
-      TailoredVerdict::COOKIE_THEFT);
+      TailoredVerdict::COOKIE_THEFT, /*adjustments=*/{});
   EXPECT_FALSE(model().ShouldShowTailoredWarning());
 }
 
diff --git a/chrome/browser/download/notification/multi_profile_download_notifier.cc b/chrome/browser/download/notification/multi_profile_download_notifier.cc
index ac629dd..fe38d34 100644
--- a/chrome/browser/download/notification/multi_profile_download_notifier.cc
+++ b/chrome/browser/download/notification/multi_profile_download_notifier.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/download/notification/multi_profile_download_notifier.h"
 
+#include "base/ranges/algorithm.h"
 #include "base/task/sequenced_task_runner.h"
 #include "components/download/public/common/simple_download_manager.h"
 #include "content/public/browser/download_manager.h"
@@ -28,12 +29,10 @@
     return;
 
   content::DownloadManager* manager = profile->GetDownloadManager();
-  auto it = std::find_if(download_notifiers_.begin(), download_notifiers_.end(),
-                         [manager](const auto& notifier) {
-                           return notifier->GetManager() == manager;
-                         });
-  if (it != download_notifiers_.end())
+  if (base::Contains(download_notifiers_, manager,
+                     &download::AllDownloadItemNotifier::GetManager)) {
     return;
+  }
 
   profile_observer_.AddObservation(profile);
   download_notifiers_.emplace(
diff --git a/chrome/browser/enterprise/signals/context_info_fetcher.cc b/chrome/browser/enterprise/signals/context_info_fetcher.cc
index 6641d000..aa72291d 100644
--- a/chrome/browser/enterprise/signals/context_info_fetcher.cc
+++ b/chrome/browser/enterprise/signals/context_info_fetcher.cc
@@ -8,6 +8,7 @@
 
 #include "base/command_line.h"
 #include "base/files/file_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_split.h"
 #include "base/task/thread_pool.h"
 #include "base/threading/scoped_blocking_call.h"
@@ -68,9 +69,8 @@
     return SettingValue::UNKNOWN;
   }
   base::SplitStringIntoKeyValuePairs(file_content, '=', '\n', &values);
-  auto is_ufw_enabled = std::find_if(values.begin(), values.end(), [](auto v) {
-    return v.first == "ENABLED";
-  });
+  auto is_ufw_enabled = base::ranges::find(
+      values, "ENABLED", &std::pair<std::string, std::string>::first);
   if (is_ufw_enabled == values.end())
     return SettingValue::UNKNOWN;
 
diff --git a/chrome/browser/enterprise/signals/device_info_fetcher_linux.cc b/chrome/browser/enterprise/signals/device_info_fetcher_linux.cc
index 203da1f..afc2678 100644
--- a/chrome/browser/enterprise/signals/device_info_fetcher_linux.cc
+++ b/chrome/browser/enterprise/signals/device_info_fetcher_linux.cc
@@ -17,6 +17,7 @@
 #include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/nix/xdg_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
@@ -49,9 +50,8 @@
   if (base::PathExists(os_release_file) &&
       base::ReadFileToStringWithMaxSize(os_release_file, &release_info, 8192) &&
       base::SplitStringIntoKeyValuePairs(release_info, '=', '\n', &values)) {
-    auto version_id = std::find_if(values.begin(), values.end(), [](auto v) {
-      return v.first == "VERSION_ID";
-    });
+    auto version_id = base::ranges::find(
+        values, "VERSION_ID", &std::pair<std::string, std::string>::first);
     if (version_id != values.end()) {
       return std::string(
           base::TrimString(version_id->second, "\"", base::TRIM_ALL));
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
index 54d5b40f..1f320af 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
@@ -952,11 +952,6 @@
   if (profile->IsGuestSession() || profile->IsOffTheRecord()) {
     return RespondNow(Error(kIncognitoError));
   }
-#if BUILDFLAG(IS_CHROMEOS_LACROS)
-  if (!profile->IsMainProfile()) {
-    return RespondNow(Error(kSecondaryProfileError));
-  }
-#endif
 
   if (!crx_file::id_util::IdIsValid(params->expected_id))
     return RespondNow(Error(kWebstoreInvalidIdError));
@@ -968,6 +963,19 @@
                             params->expected_id));
   }
 
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  // TODO(https://crbug.com/1365778): Centralize logic for disallowing
+  // installation with other installation paths.
+  if (!profile->IsMainProfile()) {
+    bool allowed = approval_->dummy_extension &&
+                   (approval_->dummy_extension->is_extension() ||
+                    approval_->dummy_extension->is_theme());
+    if (!allowed) {
+      return RespondNow(Error(kSecondaryProfileError));
+    }
+  }
+#endif
+
   content::WebContents* web_contents = GetSenderWebContents();
   if (!web_contents) {
     return RespondNow(
diff --git a/chrome/browser/fast_checkout/fast_checkout_client_impl.cc b/chrome/browser/fast_checkout/fast_checkout_client_impl.cc
index f1f9cdc2..1bb4078 100644
--- a/chrome/browser/fast_checkout/fast_checkout_client_impl.cc
+++ b/chrome/browser/fast_checkout/fast_checkout_client_impl.cc
@@ -21,6 +21,7 @@
 #include "components/autofill_assistant/browser/public/autofill_assistant_factory.h"
 #include "components/autofill_assistant/browser/public/headless_onboarding_result.h"
 #include "components/autofill_assistant/browser/public/public_script_parameters.h"
+#include "components/autofill_assistant/browser/public/runtime_manager.h"
 #include "content/public/browser/web_contents_user_data.h"
 #include "url/gurl.h"
 
@@ -182,6 +183,8 @@
     return card->GetRawInfo(autofill::CREDIT_CARD_NUMBER).empty();
   });
 
+  GetRuntimeManager()->SetUIState(
+      autofill_assistant::UIState::kShownWithoutBrowsingFeatureSuppression);
   fast_checkout_controller_->Show(profiles_to_suggest, cards_to_suggest);
 }
 
@@ -198,12 +201,12 @@
 void FastCheckoutClientImpl::OnRunComplete(
     autofill_assistant::HeadlessScriptController::ScriptResult result) {
   // TODO(crbug.com/1338522): Handle failed result.
-
   if (result.onboarding_result ==
       autofill_assistant::HeadlessOnboardingResult::kRejected) {
     fast_checkout_prefs_.DeclineOnboarding();
   }
 
+  OnHidden();
   Stop();
 }
 
@@ -212,6 +215,7 @@
   fast_checkout_controller_.reset();
   is_running_ = false;
   personal_data_manager_observation_.Reset();
+  GetRuntimeManager()->SetUIState(autofill_assistant::UIState::kNotShown);
 
   // `OnHidden` is not called if the bottom sheet never managed to show,
   // e.g. due to a failed onboarding. This ensures that keyboard suppression
@@ -272,6 +276,12 @@
       profile->GetOriginalProfile());
 }
 
+autofill_assistant::RuntimeManager*
+FastCheckoutClientImpl::GetRuntimeManager() {
+  return autofill_assistant::RuntimeManager::GetOrCreateForWebContents(
+      &GetWebContents());
+}
+
 void FastCheckoutClientImpl::OnPersonalDataChanged() {
   if (!delegate_ || !delegate_->IsShowingFastCheckoutUI()) {
     return;
diff --git a/chrome/browser/fast_checkout/fast_checkout_client_impl.h b/chrome/browser/fast_checkout/fast_checkout_client_impl.h
index 53faac7..17a8460 100644
--- a/chrome/browser/fast_checkout/fast_checkout_client_impl.h
+++ b/chrome/browser/fast_checkout/fast_checkout_client_impl.h
@@ -17,6 +17,10 @@
 
 class FastCheckoutExternalActionDelegate;
 
+namespace autofill_assistant {
+class RuntimeManager;
+}
+
 class FastCheckoutClientImpl
     : public content::WebContentsUserData<FastCheckoutClientImpl>,
       public FastCheckoutClient,
@@ -56,6 +60,11 @@
   virtual std::unique_ptr<FastCheckoutController>
   CreateFastCheckoutController();
 
+  // Gets the RunTimeManager used to disable dialogs and prompts, such as
+  // password manager, translation dialogs and permissions. Protected to allow
+  // for overrides by test classes.
+  virtual autofill_assistant::RuntimeManager* GetRuntimeManager();
+
  private:
   friend class content::WebContentsUserData<FastCheckoutClientImpl>;
 
diff --git a/chrome/browser/fast_checkout/fast_checkout_client_impl_unittest.cc b/chrome/browser/fast_checkout/fast_checkout_client_impl_unittest.cc
index 81f88725..7a4fb245 100644
--- a/chrome/browser/fast_checkout/fast_checkout_client_impl_unittest.cc
+++ b/chrome/browser/fast_checkout/fast_checkout_client_impl_unittest.cc
@@ -28,6 +28,7 @@
 #include "components/autofill/core/common/form_field_data.h"
 #include "components/autofill_assistant/browser/public/headless_onboarding_result.h"
 #include "components/autofill_assistant/browser/public/mock_headless_script_controller.h"
+#include "components/autofill_assistant/browser/public/mock_runtime_manager.h"
 #include "ui/gfx/native_widget_types.h"
 
 using ::autofill::AutofillDriver;
@@ -183,6 +184,16 @@
     fast_checkout_controller_ = std::move(fast_checkout_controller);
   }
 
+  autofill_assistant::RuntimeManager* GetRuntimeManager() override {
+    return runtime_manager_;
+  }
+
+  // Allows setting an RunTimeManager.
+  void InjectRunTimeManagerForTesting(
+      autofill_assistant::RuntimeManager* runtime_manager) {
+    runtime_manager_ = runtime_manager;
+  }
+
   std::unique_ptr<FastCheckoutExternalActionDelegate>
   CreateFastCheckoutExternalActionDelegate() override {
     return std::move(external_action_delegate_);
@@ -199,6 +210,7 @@
       external_script_controller_;
   std::unique_ptr<FastCheckoutController> fast_checkout_controller_;
   std::unique_ptr<FastCheckoutExternalActionDelegate> external_action_delegate_;
+  autofill_assistant::RuntimeManager* runtime_manager_;
 };
 
 // static
@@ -252,6 +264,12 @@
     autofill_driver_ = std::make_unique<MockAutofillDriver>();
     fast_checkout_delegate_ =
         std::make_unique<MockFastCheckoutDelegate>(autofill_driver_.get());
+
+    mock_runtime_manager_ =
+        std::make_unique<autofill_assistant::MockRuntimeManager>();
+
+    // Prepare the RunTimeManager.
+    test_client_->InjectRunTimeManagerForTesting(mock_runtime_manager_.get());
   }
 
   autofill::TestPersonalDataManager* personal_data_manager() {
@@ -280,6 +298,10 @@
     return fast_checkout_delegate_->GetWeakPtr();
   }
 
+  autofill_assistant::MockRuntimeManager* runtime_manager() {
+    return mock_runtime_manager_.get();
+  }
+
  protected:
   base::test::ScopedFeatureList feature_list_;
   base::HistogramTester histogram_tester_;
@@ -290,6 +312,7 @@
   raw_ptr<MockFastCheckoutExternalActionDelegate> external_action_delegate_;
   std::unique_ptr<MockAutofillDriver> autofill_driver_;
   std::unique_ptr<MockFastCheckoutDelegate> fast_checkout_delegate_;
+  std::unique_ptr<autofill_assistant::MockRuntimeManager> mock_runtime_manager_;
   raw_ptr<TestFastCheckoutClientImpl> test_client_;
 };
 
@@ -423,10 +446,17 @@
 
   // After the bottom sheet is dismissed, keyboard suppression is disabled.
   // Normally `OnHidden` would get called, but it is also stopped on script end.
-  EXPECT_CALL(*autofill_driver(), SetShouldSuppressKeyboard(false));
+  EXPECT_CALL(*autofill_driver(), SetShouldSuppressKeyboard(false)).Times(2);
+
+  // Successful onboarding.
+  EXPECT_CALL(*runtime_manager(),
+              SetUIState(autofill_assistant::UIState::
+                             kShownWithoutBrowsingFeatureSuppression));
+  std::move(onboarding_successful_callback).Run();
 
   // Successful run.
-  std::move(onboarding_successful_callback).Run();
+  EXPECT_CALL(*runtime_manager(),
+              SetUIState(autofill_assistant::UIState::kNotShown));
   autofill_assistant::HeadlessScriptController::ScriptResult script_result = {
       /* success= */ true};
   std::move(external_script_controller_callback).Run(script_result);
@@ -713,7 +743,6 @@
   base::OnceCallback<void(
       autofill_assistant::HeadlessScriptController::ScriptResult)>
       external_script_controller_callback;
-  base::OnceCallback<void()> onboarding_successful_callback;
   EXPECT_CALL(*external_script_controller(),
               StartScript(_, _, /*use_autofill_assistant_onboarding=*/true, _,
                           /*suppress_browsing_features=*/false))
@@ -722,7 +751,7 @@
 
   // Keyboard suppression is turned on and off again.
   EXPECT_CALL(*autofill_driver(), SetShouldSuppressKeyboard(true));
-  EXPECT_CALL(*autofill_driver(), SetShouldSuppressKeyboard(false));
+  EXPECT_CALL(*autofill_driver(), SetShouldSuppressKeyboard(false)).Times(2);
 
   // Expect bottomsheet NOT to show up.
   EXPECT_CALL(*fast_checkout_controller(), Show).Times(0);
@@ -730,6 +759,12 @@
   // Starting the run successfully.
   EXPECT_TRUE(fast_checkout_client()->Start(delegate(), GURL(kUrl), false));
 
+  // No onboarding.
+  EXPECT_CALL(
+      *runtime_manager(),
+      SetUIState(
+          autofill_assistant::UIState::kShownWithoutBrowsingFeatureSuppression))
+      .Times(0);
   // `FastCheckoutClient` is running.
   EXPECT_TRUE(fast_checkout_client()->IsRunning());
 
@@ -737,6 +772,8 @@
   EXPECT_FALSE(fast_checkout_client()->Start(delegate(), GURL(kUrl), false));
 
   // Failed run.
+  EXPECT_CALL(*runtime_manager(),
+              SetUIState(autofill_assistant::UIState::kNotShown));
   autofill_assistant::HeadlessScriptController::ScriptResult script_result = {
       /* success= */ false};
   std::move(external_script_controller_callback).Run(script_result);
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java
index e99cfc3..e5ef369 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java
@@ -50,6 +50,7 @@
 import org.chromium.chrome.browser.xsurface.HybridListRenderer;
 import org.chromium.chrome.browser.xsurface.LoggingParameters;
 import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler;
+import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.OpenMode;
 import org.chromium.chrome.browser.xsurface.SurfaceScope;
 import org.chromium.chrome.tab_ui.R;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent;
@@ -96,65 +97,116 @@
         }
 
         @Override
-        public void navigateTab(String url, View actionSourceView) {
+        public void openUrl(@OpenMode int openMode, String url, OpenUrlOptions options) {
             assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOpenAction(mNativeFeedStream, FeedStream.this,
-                    mMakeGURL.apply(url), getSliceIdFromView(actionSourceView),
-                    OpenActionType.DEFAULT);
-
-            openSuggestionUrl(url, WindowOpenDisposition.CURRENT_TAB, /*inGroup=*/false);
+            switch (openMode) {
+                case OpenMode.UNKNOWN:
+                case OpenMode.SAME_TAB:
+                    FeedStreamJni.get().reportOpenAction(mNativeFeedStream, FeedStream.this,
+                            mMakeGURL.apply(url), getSliceIdFromView(options.actionSourceView()),
+                            OpenActionType.DEFAULT);
+                    openSuggestionUrl(url, WindowOpenDisposition.CURRENT_TAB, /*inGroup=*/false);
+                    break;
+                case OpenMode.NEW_TAB:
+                    FeedStreamJni.get().reportOpenAction(mNativeFeedStream, FeedStream.this,
+                            mMakeGURL.apply(url), getSliceIdFromView(options.actionSourceView()),
+                            OpenActionType.NEW_TAB);
+                    openSuggestionUrl(
+                            url, WindowOpenDisposition.NEW_BACKGROUND_TAB, /*inGroup=*/false);
+                    break;
+                case OpenMode.INCOGNITO_TAB:
+                    FeedStreamJni.get().reportOtherUserAction(mNativeFeedStream, FeedStream.this,
+                            FeedUserActionType.TAPPED_OPEN_IN_NEW_INCOGNITO_TAB);
+                    openSuggestionUrl(url, WindowOpenDisposition.OFF_THE_RECORD, /*inGroup=*/false);
+                    break;
+                case OpenMode.DOWNLOAD_LINK:
+                    FeedStreamJni.get().reportOtherUserAction(
+                            mNativeFeedStream, FeedStream.this, FeedUserActionType.TAPPED_DOWNLOAD);
+                    mActionDelegate.downloadPage(url);
+                    break;
+                case OpenMode.READ_LATER:
+                    FeedStreamJni.get().reportOtherUserAction(mNativeFeedStream, FeedStream.this,
+                            FeedUserActionType.TAPPED_ADD_TO_READING_LIST);
+                    mActionDelegate.addToReadingList(options.getTitle(), url);
+                    break;
+                case OpenMode.THANK_CREATOR:
+                    FeedStreamJni.get().reportOtherUserAction(mNativeFeedStream, FeedStream.this,
+                            FeedUserActionType.TAPPED_CROW_BUTTON);
+                    mActionDelegate.openCrow(url);
+                    break;
+                case OpenMode.NEW_TAB_IN_GROUP:
+                    FeedStreamJni.get().reportOpenAction(mNativeFeedStream, FeedStream.this,
+                            mMakeGURL.apply(url), getSliceIdFromView(options.actionSourceView()),
+                            OpenActionType.NEW_TAB_IN_GROUP);
+                    openSuggestionUrl(url, WindowOpenDisposition.NEW_BACKGROUND_TAB,
+                            /*inGroup=*/true);
+                    break;
+            }
 
             // Attempts to load more content if needed.
             maybeLoadMore();
         }
 
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
+        @Override
+        public void navigateTab(String url, View actionSourceView) {
+            openUrl(OpenMode.SAME_TAB, url, new OpenUrlOptions() {
+                @Override
+                public View actionSourceView() {
+                    return actionSourceView;
+                }
+            });
+        }
+
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
         @Override
         public void navigateNewTab(String url, View actionSourceView) {
-            assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOpenAction(mNativeFeedStream, FeedStream.this,
-                    mMakeGURL.apply(url), getSliceIdFromView(actionSourceView),
-                    OpenActionType.NEW_TAB);
-
-            openSuggestionUrl(url, WindowOpenDisposition.NEW_BACKGROUND_TAB, /*inGroup=*/false);
-
-            // Attempts to load more content if needed.
-            maybeLoadMore();
+            openUrl(OpenMode.NEW_TAB, url, new OpenUrlOptions() {
+                @Override
+                public View actionSourceView() {
+                    return actionSourceView;
+                }
+            });
         }
 
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
         @Override
         public void navigateIncognitoTab(String url) {
-            assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOtherUserAction(mNativeFeedStream, FeedStream.this,
-                    FeedUserActionType.TAPPED_OPEN_IN_NEW_INCOGNITO_TAB);
-
-            openSuggestionUrl(url, WindowOpenDisposition.OFF_THE_RECORD, /*inGroup=*/false);
-
-            // Attempts to load more content if needed.
-            maybeLoadMore();
+            openUrl(OpenMode.INCOGNITO_TAB, url, new OpenUrlOptions() {});
         }
 
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
         @Override
         public void downloadLink(String url) {
-            assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOtherUserAction(
-                    mNativeFeedStream, FeedStream.this, FeedUserActionType.TAPPED_DOWNLOAD);
-            mActionDelegate.downloadPage(url);
+            openUrl(OpenMode.DOWNLOAD_LINK, url, new OpenUrlOptions() {});
         }
 
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
         @Override
         public void addToReadingList(String title, String url) {
-            assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOtherUserAction(mNativeFeedStream, FeedStream.this,
-                    FeedUserActionType.TAPPED_ADD_TO_READING_LIST);
-            mActionDelegate.addToReadingList(title, url);
+            openUrl(OpenMode.READ_LATER, url, new OpenUrlOptions() {
+                @Override
+                public String getTitle() {
+                    return title;
+                }
+            });
         }
 
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
         @Override
         public void navigateCrow(String url) {
-            assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOtherUserAction(
-                    mNativeFeedStream, FeedStream.this, FeedUserActionType.TAPPED_CROW_BUTTON);
-            mActionDelegate.openCrow(url);
+            openUrl(OpenMode.THANK_CREATOR, url, new OpenUrlOptions() {});
+        }
+
+        // Deprecated in favor of openUrl(), will be removed once internal references are removed.
+        @Override
+        public void navigateNewTabInGroup(String url, View actionSourceView) {
+            openUrl(OpenMode.NEW_TAB_IN_GROUP, url, new OpenUrlOptions() {
+                @Override
+                public View actionSourceView() {
+                    return actionSourceView;
+                }
+            });
         }
 
         @Override
@@ -278,20 +330,6 @@
                         -> FeedServiceBridge.reportOpenVisitComplete(visitResult.visitTimeMs));
             });
         }
-
-        @Override
-        public void navigateNewTabInGroup(String url, View actionSourceView) {
-            assert ThreadUtils.runningOnUiThread();
-            FeedStreamJni.get().reportOpenAction(mNativeFeedStream, FeedStream.this,
-                    mMakeGURL.apply(url), getSliceIdFromView(actionSourceView),
-                    OpenActionType.NEW_TAB_IN_GROUP);
-
-            openSuggestionUrl(url, WindowOpenDisposition.NEW_BACKGROUND_TAB,
-                    /*inGroup=*/true);
-
-            // Attempts to load more content if needed.
-            maybeLoadMore();
-        }
     }
 
     /**
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java
index 6078c8e..f54af1d5 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java
@@ -71,6 +71,8 @@
 import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger;
 import org.chromium.chrome.browser.xsurface.HybridListRenderer;
 import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler;
+import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.OpenMode;
+import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.OpenUrlOptions;
 import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.WebFeedFollowUpdate;
 import org.chromium.chrome.browser.xsurface.SurfaceScope;
 import org.chromium.chrome.test.util.browser.Features;
@@ -471,13 +473,26 @@
 
     @Test
     @SmallTest
+    public void testOpenUrlSameTab() {
+        bindToView();
+        FeedStream.FeedSurfaceActionsHandler handler =
+                (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
+                        SurfaceActionsHandler.KEY);
+        handler.openUrl(OpenMode.SAME_TAB, TEST_URL, new OpenUrlOptions() {});
+        verify(mActionDelegate)
+                .openSuggestionUrl(eq(org.chromium.ui.mojom.WindowOpenDisposition.CURRENT_TAB),
+                        any(), eq(false), any(), any());
+    }
+
+    @Test
+    @SmallTest
     public void testLogLaunchFinishedOnOpenSuggestionUrl() {
         when(mLaunchReliabilityLogger.isLaunchInProgress()).thenReturn(true);
         bindToView();
         FeedStream.FeedSurfaceActionsHandler handler =
                 (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
                         SurfaceActionsHandler.KEY);
-        handler.navigateTab(TEST_URL, null);
+        handler.openUrl(OpenMode.SAME_TAB, TEST_URL, new OpenUrlOptions() {});
         verify(mLaunchReliabilityLogger)
                 .logLaunchFinished(anyLong(), eq(DiscoverLaunchResult.CARD_TAPPED.getNumber()));
     }
@@ -490,7 +505,22 @@
         FeedStream.FeedSurfaceActionsHandler handler =
                 (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
                         SurfaceActionsHandler.KEY);
-        handler.navigateNewTab(TEST_URL, null);
+        handler.openUrl(OpenMode.NEW_TAB, TEST_URL, new OpenUrlOptions() {});
+
+        // Don't log "launch finished" if the card was opened in a new tab in the background.
+        verify(mLaunchReliabilityLogger, never())
+                .logLaunchFinished(anyLong(), eq(DiscoverLaunchResult.CARD_TAPPED.getNumber()));
+    }
+
+    @Test
+    @SmallTest
+    public void testLogLaunchFinishedOnOpenUrlNewTab() {
+        when(mLaunchReliabilityLogger.isLaunchInProgress()).thenReturn(true);
+        bindToView();
+        FeedStream.FeedSurfaceActionsHandler handler =
+                (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
+                        SurfaceActionsHandler.KEY);
+        handler.openUrl(OpenMode.NEW_TAB, TEST_URL, new OpenUrlOptions() {});
         // Don't log "launch finished" if the card was opened in a new tab in the background.
         verify(mLaunchReliabilityLogger, never())
                 .logLaunchFinished(anyLong(), eq(DiscoverLaunchResult.CARD_TAPPED.getNumber()));
@@ -526,6 +556,21 @@
 
     @Test
     @SmallTest
+    public void testOpenUrlInNewTab() {
+        bindToView();
+        FeedStream.FeedSurfaceActionsHandler handler =
+                (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
+                        SurfaceActionsHandler.KEY);
+
+        handler.openUrl(OpenMode.NEW_TAB, TEST_URL, new OpenUrlOptions() {});
+        verify(mActionDelegate)
+                .openSuggestionUrl(
+                        eq(org.chromium.ui.mojom.WindowOpenDisposition.NEW_BACKGROUND_TAB), any(),
+                        eq(false), any(), any());
+    }
+
+    @Test
+    @SmallTest
     public void testNavigateNewTabInGroup() {
         bindToView();
         FeedStream.FeedSurfaceActionsHandler handler =
@@ -541,6 +586,21 @@
 
     @Test
     @SmallTest
+    public void testOpenUrlNewTabInGroup() {
+        bindToView();
+        FeedStream.FeedSurfaceActionsHandler handler =
+                (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
+                        SurfaceActionsHandler.KEY);
+
+        handler.openUrl(OpenMode.NEW_TAB_IN_GROUP, TEST_URL, new OpenUrlOptions() {});
+        verify(mActionDelegate)
+                .openSuggestionUrl(
+                        eq(org.chromium.ui.mojom.WindowOpenDisposition.NEW_BACKGROUND_TAB), any(),
+                        eq(true), any(), any());
+    }
+
+    @Test
+    @SmallTest
     public void testNavigateIncognitoTab() {
         bindToView();
         FeedStream.FeedSurfaceActionsHandler handler =
@@ -554,6 +614,19 @@
 
     @Test
     @SmallTest
+    public void testOpenUrlIncognitoTab() {
+        bindToView();
+        FeedStream.FeedSurfaceActionsHandler handler =
+                (FeedStream.FeedSurfaceActionsHandler) mContentManager.getContextValues(0).get(
+                        SurfaceActionsHandler.KEY);
+        handler.openUrl(OpenMode.INCOGNITO_TAB, TEST_URL, new OpenUrlOptions() {});
+        verify(mActionDelegate)
+                .openSuggestionUrl(eq(org.chromium.ui.mojom.WindowOpenDisposition.OFF_THE_RECORD),
+                        any(), eq(false), any(), any());
+    }
+
+    @Test
+    @SmallTest
     public void testShowBottomSheet() {
         bindToView();
         FeedStream.FeedSurfaceActionsHandler handler =
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
index 6ff1f123..3a1d97bd0 100644
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -97,8 +97,9 @@
     &autofill::features::kAutofillEnableSupportForMoreStructureInAddresses,
     &autofill::features::kAutofillEnableUpdateVirtualCardEnrollment,
     &autofill::features::kAutofillEnableVirtualCardMetadata,
-    &blink::features::kPrerender2,
     &blink::features::kForceWebContentsDarkMode,
+    &blink::features::kOSKResizesVisualViewport,
+    &blink::features::kPrerender2,
     &commerce::kCommerceMerchantViewer,
     &commerce::kCommercePriceTracking,
     &commerce::kShoppingList,
@@ -118,7 +119,6 @@
     &features::kHttpsOnlyMode,
     &features::kMetricsSettingsAndroid,
     &features::kNetworkServiceInProcess,
-    &features::kPredictivePrefetchingAllowedOnAllConnectionTypes,
     &shared_highlighting::kPreemptiveLinkToTextGeneration,
     &shared_highlighting::kSharedHighlightingAmp,
     &features::kElasticOverscroll,
@@ -266,7 +266,6 @@
     &kOmniboxModernizeVisualUpdate,
     &kOptimizeGeolocationHeaderGeneration,
     &kOptimizeLayoutsForPullRefresh,
-    &kOSKResizesVisualViewport,
     &kPostTaskFocusTab,
     &kProbabilisticCryptidRenderer,
     &kReachedCodeProfiler,
@@ -866,10 +865,6 @@
              "OptimizeGeolocationHeaderGeneration",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
-BASE_FEATURE(kOSKResizesVisualViewport,
-             "OSKResizesVisualViewport",
-             base::FEATURE_DISABLED_BY_DEFAULT);
-
 BASE_FEATURE(kOptimizeLayoutsForPullRefresh,
              "OptimizeLayoutsForPullRefresh",
              base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
index bdd8bf8..aeb24ead 100644
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -117,7 +117,6 @@
 BASE_DECLARE_FEATURE(kOmahaMinSdkVersionAndroid);
 BASE_DECLARE_FEATURE(kOmniboxModernizeVisualUpdate);
 BASE_DECLARE_FEATURE(kOptimizeGeolocationHeaderGeneration);
-BASE_DECLARE_FEATURE(kOSKResizesVisualViewport);
 BASE_DECLARE_FEATURE(kPageAnnotationsService);
 BASE_DECLARE_FEATURE(kBookmarksImprovedSaveFlow);
 BASE_DECLARE_FEATURE(kBookmarksRefresh);
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
index a263dc8..77cae6f5 100644
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -479,8 +479,6 @@
     public static final String BOOKMARKS_REFRESH = "BookmarksRefresh";
     public static final String PREEMPTIVE_LINK_TO_TEXT_GENERATION =
             "PreemptiveLinkToTextGeneration";
-    public static final String PREDICTIVE_PREFETCHING_ALLOWED_ON_ALL_CONNECTION_TYPES =
-            "PredictivePrefetchingAllowedOnAllConnectionTypes";
     public static final String PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION =
             "PrefetchNotificationSchedulingIntegration";
     public static final String PRERENDER2 = "Prerender2";
diff --git a/chrome/browser/fuchsia/element_manager_impl_unittest.cc b/chrome/browser/fuchsia/element_manager_impl_unittest.cc
index f2045d8..1f5f1fb 100644
--- a/chrome/browser/fuchsia/element_manager_impl_unittest.cc
+++ b/chrome/browser/fuchsia/element_manager_impl_unittest.cc
@@ -8,6 +8,7 @@
 #include <lib/sys/cpp/service_directory.h>
 
 #include "base/command_line.h"
+#include "base/containers/contains.h"
 #include "base/fuchsia/process_context.h"
 #include "base/fuchsia/test_component_context_for_process.h"
 #include "base/test/bind.h"
@@ -205,11 +206,9 @@
       element_manager_.GetAnnotations();
   EXPECT_EQ(3u, annotations.size());
   for (const auto* key : {"key1", "key2", "key3"}) {
-    EXPECT_NE(annotations.end(),
-              std::find_if(annotations.begin(), annotations.end(),
-                           [&](const auto& annotation) {
-                             return annotation.key.value == key;
-                           }));
+    EXPECT_TRUE(base::Contains(annotations, key, [](const auto& annotation) {
+      return annotation.key.value;
+    }));
   }
 
   {
@@ -240,11 +239,9 @@
   annotations = element_manager_.GetAnnotations();
   EXPECT_EQ(3u, annotations.size());
   for (const auto* key : {"key1", "key3", "key4"}) {
-    EXPECT_NE(annotations.end(),
-              std::find_if(annotations.begin(), annotations.end(),
-                           [&](const auto& annotation) {
-                             return annotation.key.value == key;
-                           }));
+    EXPECT_TRUE(base::Contains(annotations, key, [](const auto& annotation) {
+      return annotation.key.value;
+    }));
   }
 }
 
diff --git a/chrome/browser/image_fetcher/image_decoder_impl.cc b/chrome/browser/image_fetcher/image_decoder_impl.cc
index 57ee259f..f2171846 100644
--- a/chrome/browser/image_fetcher/image_decoder_impl.cc
+++ b/chrome/browser/image_fetcher/image_decoder_impl.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
 #include <vector>
 
 #include "base/callback.h"
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/image_fetcher/image_decoder_impl.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/image/image.h"
@@ -86,10 +86,8 @@
 void ImageDecoderImpl::RemoveDecodeImageRequest(DecodeImageRequest* request) {
   // Remove the finished request from the request queue.
   auto request_it =
-      std::find_if(decode_image_requests_.begin(), decode_image_requests_.end(),
-                   [request](const std::unique_ptr<DecodeImageRequest>& r) {
-                     return r.get() == request;
-                   });
+      base::ranges::find(decode_image_requests_, request,
+                         &std::unique_ptr<DecodeImageRequest>::get);
   DCHECK(request_it != decode_image_requests_.end());
   decode_image_requests_.erase(request_it);
 }
diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc
index 7d1607b..8196f33 100644
--- a/chrome/browser/importer/profile_writer.cc
+++ b/chrome/browser/importer/profile_writer.cc
@@ -11,6 +11,7 @@
 #include <string>
 
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread.h"
@@ -196,9 +197,8 @@
         continue;
       }
 
-      const auto it = std::find_if(
-          parent->children().cbegin(), parent->children().cend(),
-          [folder_name](const auto& node) {
+      const auto it = base::ranges::find_if(
+          parent->children(), [folder_name](const auto& node) {
             return node->is_folder() && node->GetTitle() == *folder_name;
           });
       parent = (it == parent->children().cend())
diff --git a/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.cc b/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.cc
index b26a4db..8ee2909 100644
--- a/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.cc
+++ b/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.cc
@@ -8,6 +8,7 @@
 
 #include "base/memory/ptr_util.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/apps/platform_apps/api/enterprise_remote_apps.h"
 #include "chromeos/lacros/lacros_service.h"
@@ -142,11 +143,8 @@
 }
 
 void RemoteAppsProxyLacros::DisconnectHandler(mojo::RemoteSetElementId id) {
-  const auto& it = std::find_if(
-      source_id_to_remote_id_map_.begin(), source_id_to_remote_id_map_.end(),
-      [&id](const std::pair<std::string, mojo::RemoteSetElementId>& pair) {
-        return pair.second == id;
-      });
+  const auto& it = base::ranges::find(source_id_to_remote_id_map_, id,
+                                      &RemoteIds::value_type::second);
 
   if (it == source_id_to_remote_id_map_.end())
     return;
diff --git a/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.h b/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.h
index df28790..6ac65bd8 100644
--- a/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.h
+++ b/chrome/browser/lacros/remote_apps/remote_apps_proxy_lacros.h
@@ -82,6 +82,8 @@
                            const std::string& source_id) override;
 
  private:
+  using RemoteIds = std::map<std::string, mojo::RemoteSetElementId>;
+
   // Private constructor which allows setting of the `RemoteAppsLacrosBridge`
   // remote for testing. Called by `CreateForTesting()`.
   explicit RemoteAppsProxyLacros(
@@ -105,7 +107,7 @@
       ash_observer_receiver_{this};
 
   raw_ptr<extensions::EventRouter> event_router_ = nullptr;
-  std::map<std::string, mojo::RemoteSetElementId> source_id_to_remote_id_map_;
+  RemoteIds source_id_to_remote_id_map_;
 };
 
 }  // namespace chromeos
diff --git a/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc b/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc
index ac630c07..b16496a 100644
--- a/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc
+++ b/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc
@@ -13,6 +13,7 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/containers/contains.h"
 #include "base/feature_list.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/stringprintf.h"
@@ -485,13 +486,8 @@
   // ignores the scheme which is okay since it's more conservative: If the user
   // is engaged with http://domain.test, not showing the warning on
   // https://domain.test is acceptable.
-  const auto already_engaged =
-      std::find_if(engaged_sites.begin(), engaged_sites.end(),
-                   [navigated_domain](const DomainInfo& engaged_domain) {
-                     return (navigated_domain.domain_and_registry ==
-                             engaged_domain.domain_and_registry);
-                   });
-  if (already_engaged != engaged_sites.end()) {
+  if (base::Contains(engaged_sites, navigated_domain.domain_and_registry,
+                     &DomainInfo::domain_and_registry)) {
     return false;
   }
 
diff --git a/chrome/browser/metrics/perf/perf_events_collector_unittest.cc b/chrome/browser/metrics/perf/perf_events_collector_unittest.cc
index d3fef29..7e562c8 100644
--- a/chrome/browser/metrics/perf/perf_events_collector_unittest.cc
+++ b/chrome/browser/metrics/perf/perf_events_collector_unittest.cc
@@ -11,6 +11,7 @@
 #include <utility>
 #include <vector>
 
+#include "base/containers/contains.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/ptr_util.h"
@@ -498,22 +499,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdIvyBridge;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdIvyBridge,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_IvyBridge_HostAndGuest) {
@@ -551,22 +542,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdIvyBridge;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdIvyBridge,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_Haswell) {
@@ -585,27 +566,14 @@
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
   // No LBR callstacks because the kernel is old.
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCallgraphCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLBRCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdIvyBridge;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_FALSE(base::Contains(cmds, kPerfLBRCallgraphCmd,
+                              &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdIvyBridge,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_Skylake) {
@@ -625,22 +593,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[2].value, kPerfLBRCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdSkylake;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdSkylake,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_Tigerlake) {
@@ -660,22 +618,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[2].value, kPerfLBRCallgraphPPPCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdSkylake;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdSkylake,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_Tigerlake_HostAndGuest) {
@@ -716,27 +664,14 @@
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphPPPCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
   // No LBR callstacks because the microarchitecture doesn't support it.
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCallgraphCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLBRCmdAtom;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesPreciseCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdAtom;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_FALSE(base::Contains(cmds, kPerfLBRCallgraphCmd,
+                              &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmdAtom,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesPreciseCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdAtom,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_GoldmontPlus) {
@@ -755,27 +690,14 @@
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphPPPCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
   // No LBR callstacks because the microarchitecture doesn't support it.
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCallgraphCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLBRCmdAtom;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesPreciseCmd;
-                       });
-  EXPECT_NE(cmds.end(), found);
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfITLBMissCyclesCmdSkylake;
-                       });
-  EXPECT_NE(cmds.end(), found);
+  EXPECT_FALSE(base::Contains(cmds, kPerfLBRCallgraphCmd,
+                              &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLBRCmdAtom,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfLLCMissesPreciseCmd,
+                             &RandomSelector::WeightAndValue::value));
+  EXPECT_TRUE(base::Contains(cmds, kPerfITLBMissCyclesCmdSkylake,
+                             &RandomSelector::WeightAndValue::value));
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnUarch_Excavator) {
@@ -792,12 +714,9 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLLCMissesCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found) << "Excavator does not support this command";
+  EXPECT_FALSE(base::Contains(cmds, kPerfLLCMissesCmd,
+                              &RandomSelector::WeightAndValue::value))
+      << "Excavator does not support this command";
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnArch_Arm32) {
@@ -814,17 +733,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found) << "ARM32 does not support this command";
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_EQ(cmds.end(), found) << "ARM32 does not support this command";
+  EXPECT_FALSE(
+      base::Contains(cmds, kPerfLBRCmd, &RandomSelector::WeightAndValue::value))
+      << "ARM32 does not support this command";
+  EXPECT_FALSE(base::Contains(cmds, kPerfLLCMissesCmd,
+                              &RandomSelector::WeightAndValue::value))
+      << "ARM32 does not support this command";
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnArch_Arm64) {
@@ -841,17 +755,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphHGCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found) << "ARM64 does not support this command";
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_EQ(cmds.end(), found) << "ARM64 does not support this command";
+  EXPECT_FALSE(
+      base::Contains(cmds, kPerfLBRCmd, &RandomSelector::WeightAndValue::value))
+      << "ARM64 does not support this command";
+  EXPECT_FALSE(base::Contains(cmds, kPerfLLCMissesCmd,
+                              &RandomSelector::WeightAndValue::value))
+      << "ARM64 does not support this command";
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnArch_Arm64_HostAndGuest) {
@@ -908,17 +817,12 @@
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[0].value));
   EXPECT_EQ(cmds[1].value, kPerfFPCallgraphCmd);
   EXPECT_TRUE(DoesCommandSampleCycles(cmds[1].value));
-  auto found =
-      std::find_if(cmds.begin(), cmds.end(),
-                   [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                     return cmd.value == kPerfLBRCmd;
-                   });
-  EXPECT_EQ(cmds.end(), found) << "x86_32 does not support this command";
-  found = std::find_if(cmds.begin(), cmds.end(),
-                       [](const RandomSelector::WeightAndValue& cmd) -> bool {
-                         return cmd.value == kPerfLLCMissesCmd;
-                       });
-  EXPECT_EQ(cmds.end(), found) << "x86_32 does not support this command";
+  EXPECT_FALSE(
+      base::Contains(cmds, kPerfLBRCmd, &RandomSelector::WeightAndValue::value))
+      << "x86_32 does not support this command";
+  EXPECT_FALSE(base::Contains(cmds, kPerfLLCMissesCmd,
+                              &RandomSelector::WeightAndValue::value))
+      << "x86_32 does not support this command";
 }
 
 TEST_F(PerfCollectorTest, DefaultCommandsBasedOnArch_Unknown) {
diff --git a/chrome/browser/nearby_sharing/certificates/nearby_share_certificate_storage.cc b/chrome/browser/nearby_sharing/certificates/nearby_share_certificate_storage.cc
index 67d16a7..930bfa64 100644
--- a/chrome/browser/nearby_sharing/certificates/nearby_share_certificate_storage.cc
+++ b/chrome/browser/nearby_sharing/certificates/nearby_share_certificate_storage.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
+#include "chrome/browser/nearby_sharing/certificates/nearby_share_certificate_storage.h"
 
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "chrome/browser/nearby_sharing/certificates/common.h"
-#include "chrome/browser/nearby_sharing/certificates/nearby_share_certificate_storage.h"
 #include "chrome/browser/nearby_sharing/logging/logging.h"
 
 absl::optional<base::Time>
@@ -32,11 +32,8 @@
     return;
   }
 
-  auto it = std::find_if(
-      certs->begin(), certs->end(),
-      [&private_certificate](const NearbySharePrivateCertificate& cert) {
-        return cert.id() == private_certificate.id();
-      });
+  auto it = base::ranges::find(*certs, private_certificate.id(),
+                               &NearbySharePrivateCertificate::id);
   if (it == certs->end()) {
     NS_LOG(VERBOSE) << __func__ << ": No private certificate with id="
                     << base::HexEncode(private_certificate.id());
diff --git a/chrome/browser/nearby_sharing/nearby_per_session_discovery_manager.cc b/chrome/browser/nearby_sharing/nearby_per_session_discovery_manager.cc
index 4948b93..49b9530 100644
--- a/chrome/browser/nearby_sharing/nearby_per_session_discovery_manager.cc
+++ b/chrome/browser/nearby_sharing/nearby_per_session_discovery_manager.cc
@@ -9,6 +9,7 @@
 #include "base/callback_helpers.h"
 #include "base/containers/contains.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "chrome/browser/nearby_sharing/attachment.h"
 #include "chrome/browser/nearby_sharing/logging/logging.h"
@@ -166,11 +167,10 @@
 
   // Dedup by the more stable device ID if possible.
   if (share_target.device_id) {
-    auto it = std::find_if(discovered_share_targets_.begin(),
-                           discovered_share_targets_.end(),
-                           [&share_target](const auto& id_share_target_pair) {
-                             return share_target.device_id ==
-                                    id_share_target_pair.second.device_id;
+    auto it =
+        base::ranges::find(discovered_share_targets_, share_target.device_id,
+                           [](const auto& id_share_target_pair) {
+                             return id_share_target_pair.second.device_id;
                            });
 
     if (it != discovered_share_targets_.end()) {
diff --git a/chrome/browser/notifications/notification_channels_provider_android_unittest.cc b/chrome/browser/notifications/notification_channels_provider_android_unittest.cc
index 65279775..6f796a28 100644
--- a/chrome/browser/notifications/notification_channels_provider_android_unittest.cc
+++ b/chrome/browser/notifications/notification_channels_provider_android_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/feature_list.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
@@ -55,11 +56,9 @@
   void SetChannelStatus(const std::string& origin,
                         NotificationChannelStatus status) {
     DCHECK_NE(NotificationChannelStatus::UNAVAILABLE, status);
-    auto it = std::find_if(
-        channels_.begin(), channels_.end(),
-        [&origin](const std::pair<std::string, NotificationChannel>& pair) {
-          return pair.second.origin == origin;
-        });
+    auto it = base::ranges::find(
+        channels_, origin,
+        [](const Channels::value_type& pair) { return pair.second.origin; });
     DCHECK(it != channels_.end())
         << "Must call bridge.CreateChannel before SetChannelStatus.";
     it->second.status = status;
@@ -104,10 +103,12 @@
   }
 
  private:
+  using Channels = std::map<std::string, NotificationChannel>;
+
   bool should_use_channels_;
 
   // Map from channel_id - channel.
-  std::map<std::string, NotificationChannel> channels_;
+  Channels channels_;
 };
 
 class NotificationChannelsProviderAndroidTest : public testing::Test {
diff --git a/chrome/browser/notifications/notification_display_queue.cc b/chrome/browser/notifications/notification_display_queue.cc
index 60ca36ef..a5a332e7 100644
--- a/chrome/browser/notifications/notification_display_queue.cc
+++ b/chrome/browser/notifications/notification_display_queue.cc
@@ -89,11 +89,10 @@
 bool NotificationDisplayQueue::DoRemoveQueuedNotification(
     const std::string& notification_id,
     bool notify) {
-  auto it =
-      std::find_if(queued_notifications_.begin(), queued_notifications_.end(),
-                   [&notification_id](const QueuedNotification& queued) {
-                     return queued.notification.id() == notification_id;
-                   });
+  auto it = base::ranges::find(queued_notifications_, notification_id,
+                               [](const QueuedNotification& queued) {
+                                 return queued.notification.id();
+                               });
 
   if (it == queued_notifications_.end())
     return false;
diff --git a/chrome/browser/notifications/stub_notification_display_service.cc b/chrome/browser/notifications/stub_notification_display_service.cc
index ed2bc95..1432ec2 100644
--- a/chrome/browser/notifications/stub_notification_display_service.cc
+++ b/chrome/browser/notifications/stub_notification_display_service.cc
@@ -4,10 +4,9 @@
 
 #include "chrome/browser/notifications/stub_notification_display_service.h"
 
-#include <algorithm>
-
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "chrome/browser/notifications/notification_handler.h"
 #include "chrome/browser/profiles/profile.h"
@@ -51,10 +50,9 @@
 absl::optional<message_center::Notification>
 StubNotificationDisplayService::GetNotification(
     const std::string& notification_id) {
-  auto iter = std::find_if(notifications_.begin(), notifications_.end(),
-                           [notification_id](const NotificationData& data) {
-                             return data.notification.id() == notification_id;
-                           });
+  auto iter = base::ranges::find(
+      notifications_, notification_id,
+      [](const NotificationData& data) { return data.notification.id(); });
 
   if (iter == notifications_.end())
     return absl::nullopt;
@@ -65,10 +63,9 @@
 const NotificationCommon::Metadata*
 StubNotificationDisplayService::GetMetadataForNotification(
     const message_center::Notification& notification) {
-  auto iter = std::find_if(notifications_.begin(), notifications_.end(),
-                           [notification](const NotificationData& data) {
-                             return data.notification.id() == notification.id();
-                           });
+  auto iter = base::ranges::find(
+      notifications_, notification.id(),
+      [](const NotificationData& data) { return data.notification.id(); });
 
   if (iter == notifications_.end())
     return nullptr;
@@ -272,8 +269,8 @@
 StubNotificationDisplayService::FindNotification(
     NotificationHandler::Type notification_type,
     const std::string& notification_id) {
-  return std::find_if(
-      notifications_.begin(), notifications_.end(),
+  return base::ranges::find_if(
+      notifications_,
       [notification_type, &notification_id](const NotificationData& data) {
         return data.type == notification_type &&
                data.notification.id() == notification_id;
diff --git a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
index 2fd4326..54e6be77 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
@@ -11,6 +11,7 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -590,9 +591,9 @@
   EXPECT_EQ(url::Origin::Create(url).GetURL(),
             GetClient()->GetLastCommittedOrigin().GetURL());
 
-  auto* it = std::find_if(
-      std::begin(kSchemeTestCases), std::end(kSchemeTestCases),
-      [](auto test_case) { return strcmp(test_case.scheme, GetParam()) == 0; });
+  auto* it = base::ranges::find_if(kSchemeTestCases, [](auto test_case) {
+    return strcmp(test_case.scheme, GetParam()) == 0;
+  });
   // If saving isn't allowed it shouldn't be due to the setting, so make
   // sure that is enabled.
   MockPasswordManagerSettingsService* settings_service =
diff --git a/chrome/browser/password_manager/password_manager_interactive_test_base.cc b/chrome/browser/password_manager/password_manager_interactive_test_base.cc
index 98837cb9a..8441308 100644
--- a/chrome/browser/password_manager/password_manager_interactive_test_base.cc
+++ b/chrome/browser/password_manager/password_manager_interactive_test_base.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/password_manager/password_manager_interactive_test_base.h"
 
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "chrome/browser/password_manager/passwords_navigation_observer.h"
 #include "content/public/test/browser_test_utils.h"
@@ -35,8 +36,8 @@
                          element_id.c_str())));
   for (char16_t character : value) {
     ui::DomKey dom_key = ui::DomKey::FromCharacter(character);
-    const ui::PrintableCodeEntry* code_entry = std::find_if(
-        std::begin(ui::kPrintableCodeMap), std::end(ui::kPrintableCodeMap),
+    const ui::PrintableCodeEntry* code_entry = base::ranges::find_if(
+        ui::kPrintableCodeMap,
         [character](const ui::PrintableCodeEntry& entry) {
           return entry.character[0] == character ||
                  entry.character[1] == character;
diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc
index 644eb40..77faa54c6 100644
--- a/chrome/browser/permissions/chrome_permissions_client.cc
+++ b/chrome/browser/permissions/chrome_permissions_client.cc
@@ -7,6 +7,7 @@
 #include <vector>
 
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/feature_list.h"
 #include "base/no_destructor.h"
 #include "base/strings/string_util.h"
@@ -237,15 +238,9 @@
             net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
     if (registerable_domain.empty())
       registerable_domain = host;  // IP address or internal hostname.
-    auto important_domain_search =
-        [&registerable_domain](
-            const site_engagement::ImportantSitesUtil::ImportantDomainInfo&
-                item) {
-          return item.registerable_domain == registerable_domain;
-        };
-    entry.second =
-        std::find_if(important_domains.begin(), important_domains.end(),
-                     important_domain_search) != important_domains.end();
+    entry.second = base::Contains(important_domains, registerable_domain,
+                                  &site_engagement::ImportantSitesUtil::
+                                      ImportantDomainInfo::registerable_domain);
   }
 }
 
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index bb6b11f..8b149cae 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1581,6 +1581,9 @@
 #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS)
 
 #if BUILDFLAG(IS_CHROMEOS)
+  { key::kDeskAPIThirdPartyAccessEnabled,
+    prefs::kDeskAPIThirdPartyAccessEnabled,
+    base::Value::Type::BOOLEAN },
   { key::kDeviceAttributesAllowedForOrigins,
     prefs::kDeviceAttributesAllowedForOrigins,
     base::Value::Type::LIST },
diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc
index fba5b124..cb02fbc 100644
--- a/chrome/browser/predictors/autocomplete_action_predictor.cc
+++ b/chrome/browser/predictors/autocomplete_action_predictor.cc
@@ -6,6 +6,7 @@
 
 #include <math.h>
 #include <stddef.h>
+
 #include <queue>
 
 #include "base/bind.h"
@@ -14,6 +15,7 @@
 #include "base/i18n/case_conversion.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/observer_list.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/history/history_service_factory.h"
@@ -152,8 +154,7 @@
   const std::u16string lower_user_text(base::i18n::ToLower(user_text));
 
   // Merge this in to an existing match if we already saw |user_text|
-  auto match_it = std::find(transitional_matches_.begin(),
-                            transitional_matches_.end(), lower_user_text);
+  auto match_it = base::ranges::find(transitional_matches_, lower_user_text);
 
   if (match_it == transitional_matches_.end()) {
     if (transitional_matches_size_ + lower_user_text.length() >
@@ -446,9 +447,8 @@
   DCHECK(id_list);
 
   for (auto it = db_cache_.begin(); it != db_cache_.end();) {
-    if (std::find_if(rows.begin(), rows.end(),
-                     history::URLRow::URLRowHasURL(it->first.url)) !=
-        rows.end()) {
+    if (base::ranges::any_of(rows,
+                             history::URLRow::URLRowHasURL(it->first.url))) {
       const DBIdCacheMap::iterator id_it = db_id_cache_.find(it->first);
       DCHECK(id_it != db_id_cache_.end());
       id_list->push_back(id_it->second);
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_tables.cc b/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
index 4cffd757..d057a19 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
@@ -4,11 +4,11 @@
 
 #include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "base/trace_event/trace_event.h"
 #include "chrome/browser/predictors/predictors_features.h"
@@ -67,10 +67,8 @@
     OriginData* data,
     const std::string& main_frame_origin) {
   auto* origins = data->mutable_origins();
-  auto it = std::find_if(origins->begin(), origins->end(),
-                         [&main_frame_origin](const OriginStat& x) {
-                           return x.origin() == main_frame_origin;
-                         });
+  auto it =
+      base::ranges::find(*origins, main_frame_origin, &OriginStat::origin);
   int iterator_offset = 0;
   if (it != origins->end()) {
     origins->SwapElements(0, it - origins->begin());
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 5733764..196f7b2 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -1463,6 +1463,7 @@
   extensions::platform_keys::RegisterProfilePrefs(registry);
   certificate_manager::CertificatesHandler::RegisterProfilePrefs(registry);
   policy::PolicyCertService::RegisterProfilePrefs(registry);
+  registry->RegisterBooleanPref(prefs::kDeskAPIThirdPartyAccessEnabled, false);
   registry->RegisterBooleanPref(prefs::kInsightsExtensionEnabled, false);
   // By default showing Sync Consent is set to true. It can changed by policy.
   registry->RegisterBooleanPref(prefs::kEnableSyncConsent, true);
diff --git a/chrome/browser/prefs/profile_pref_store_manager_unittest.cc b/chrome/browser/prefs/profile_pref_store_manager_unittest.cc
index 64a116a..50744b0d 100644
--- a/chrome/browser/prefs/profile_pref_store_manager_unittest.cc
+++ b/chrome/browser/prefs/profile_pref_store_manager_unittest.cc
@@ -12,6 +12,7 @@
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
+#include "base/containers/contains.h"
 #include "base/files/file_enumerator.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -44,18 +45,6 @@
     prefs::mojom::TrackedPreferenceMetadata::PrefTrackingStrategy;
 using ValueType = prefs::mojom::TrackedPreferenceMetadata::ValueType;
 
-class FirstEqualsPredicate {
- public:
-  explicit FirstEqualsPredicate(const std::string& expected)
-      : expected_(expected) {}
-  bool operator()(const PrefValueMap::Map::value_type& pair) {
-    return pair.first == expected_;
-  }
-
- private:
-  const std::string expected_;
-};
-
 // Observes changes to the PrefStore and verifies that only registered prefs are
 // written.
 class RegistryVerifier : public PrefStore::Observer {
@@ -65,10 +54,8 @@
 
   // PrefStore::Observer implementation
   void OnPrefValueChanged(const std::string& key) override {
-    EXPECT_TRUE(pref_registry_->end() !=
-                std::find_if(pref_registry_->begin(),
-                             pref_registry_->end(),
-                             FirstEqualsPredicate(key)))
+    EXPECT_TRUE(base::Contains(*pref_registry_, key,
+                               &PrefValueMap::Map::value_type::first))
         << "Unregistered key " << key << " was changed.";
   }
 
diff --git a/chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_unittest.cc b/chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_unittest.cc
index 2cb4fef..0f5bb24 100644
--- a/chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_unittest.cc
+++ b/chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_unittest.cc
@@ -1149,19 +1149,9 @@
   histogram_tester().ExpectTotalCount("Prerender.FinalStatus", 0);
 }
 
-class PrerenderPrefetchingAllowedOnAllTest : public NoStatePrefetchTest {
- public:
-  PrerenderPrefetchingAllowedOnAllTest() {
-    feature_list_.InitAndEnableFeature(
-        features::kPredictivePrefetchingAllowedOnAllConnectionTypes);
-  }
-};
-
-// Verify that the external prerender requests are allowed on cellular
-// connection when kPredictivePrefetchingAllowedOnAllConnectionTypes feature is
-// enabled.
+// Verify that the external prerender requests are allowed on cellular.
 TEST_F(
-    PrerenderPrefetchingAllowedOnAllTest,
+    NoStatePrefetchTest,
     PrerenderAllowedOnCellularWithExternalOrigin_PredictivePrefetchingAllowedOnAllConnectionTypes) {
   EnablePrerender();
   std::unique_ptr<net::NetworkChangeNotifier> mock(
diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.cc b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.cc
index 549d875..12d18276 100644
--- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.cc
+++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.cc
@@ -32,7 +32,6 @@
 #include "components/omnibox/browser/autocomplete_match.h"
 #include "components/omnibox/browser/autocomplete_result.h"
 #include "components/omnibox/browser/base_search_provider.h"
-#include "components/omnibox/browser/omnibox_event_global_tracker.h"
 #include "components/omnibox/browser/omnibox_log.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
@@ -349,7 +348,10 @@
   return true;
 }
 
-void SearchPrefetchService::OnURLOpenedFromOmnibox(OmniboxLog* log) {
+void SearchPrefetchService::OnURLOpenedFromOmnibox(
+    OmniboxLog* log,
+    content::WebContents* web_contents) {
+  DCHECK(web_contents);
   if (!log)
     return;
   const GURL& opened_url = log->final_destination_url;
@@ -878,11 +880,6 @@
 
     template_url_service_data_ =
         template_url_service->GetDefaultSearchProvider()->data();
-
-    omnibox_subscription_ =
-        OmniboxEventGlobalTracker::GetInstance()->RegisterCallback(
-            base::BindRepeating(&SearchPrefetchService::OnURLOpenedFromOmnibox,
-                                base::Unretained(this)));
   }
 }
 
diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h
index 9003ecf..bfb9e11 100644
--- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h
+++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h
@@ -185,6 +185,12 @@
                                 const AutocompleteMatch& match,
                                 content::WebContents* web_contents);
 
+  // If the navigation URL matches with a prefetch that can be served, this
+  // function marks that prefetch as clicked to prevent deletion when omnibox
+  // closes.
+  void OnURLOpenedFromOmnibox(OmniboxLog* log,
+                              content::WebContents* web_contents);
+
   // Fires all timers.
   void FireAllExpiryTimerForTesting();
 
@@ -209,11 +215,6 @@
   // records the current time to prevent prefetches for a set duration.
   void ReportFetchResult(bool error);
 
-  // If the navigation URL matches with a prefetch that can be served, this
-  // function marks that prefetch as clicked to prevent deletion when omnibox
-  // closes.
-  void OnURLOpenedFromOmnibox(OmniboxLog* log);
-
   // These methods serialize and deserialize |prefetch_cache_| to
   // |profile_| pref service in a dictionary value.
   //
diff --git a/chrome/browser/preloading/prerender/prerender_omnibox_ui_browsertest.cc b/chrome/browser/preloading/prerender/prerender_omnibox_ui_browsertest.cc
index 06783ab..aa4bbcc5 100644
--- a/chrome/browser/preloading/prerender/prerender_omnibox_ui_browsertest.cc
+++ b/chrome/browser/preloading/prerender/prerender_omnibox_ui_browsertest.cc
@@ -8,6 +8,7 @@
 #include "base/containers/adapters.h"
 #include "base/files/file_path.h"
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "build/build_config.h"
@@ -894,13 +895,9 @@
       true, 1);
 
   // Ensure there is a search hint.
-  auto is_prerender_match = [](const AutocompleteMatch& match) {
-    return BaseSearchProvider::ShouldPrerender(match);
-  };
   AutocompleteController* autocomplete_controller = GetAutocompleteController();
-  auto prerender_match = std::find_if(
-      std::begin(autocomplete_controller->result()),
-      std::end(autocomplete_controller->result()), is_prerender_match);
+  auto prerender_match = base::ranges::find_if(
+      autocomplete_controller->result(), &BaseSearchProvider::ShouldPrerender);
   ASSERT_NE(prerender_match, std::end(autocomplete_controller->result()));
 
   content::NavigationHandleObserver activation_observer(
@@ -998,12 +995,8 @@
 
   AutocompleteController* autocomplete_controller = GetAutocompleteController();
   // Ensure there is a search hint.
-  auto is_prerender_match = [](const AutocompleteMatch& match) {
-    return BaseSearchProvider::ShouldPrerender(match);
-  };
-  auto prerender_match = std::find_if(
-      std::begin(autocomplete_controller->result()),
-      std::end(autocomplete_controller->result()), is_prerender_match);
+  auto prerender_match = base::ranges::find_if(
+      autocomplete_controller->result(), &BaseSearchProvider::ShouldPrerender);
   ASSERT_NE(prerender_match, std::end(autocomplete_controller->result()));
   content::NavigationHandleObserver activation_observer(
       GetActiveWebContents(), prerender_match->destination_url);
@@ -1090,12 +1083,8 @@
 
   AutocompleteController* autocomplete_controller = GetAutocompleteController();
   // Ensure there is a search hint.
-  auto is_prerender_match = [](const AutocompleteMatch& match) {
-    return BaseSearchProvider::ShouldPrerender(match);
-  };
-  auto prerender_match = std::find_if(
-      std::begin(autocomplete_controller->result()),
-      std::end(autocomplete_controller->result()), is_prerender_match);
+  auto prerender_match = base::ranges::find_if(
+      autocomplete_controller->result(), &BaseSearchProvider::ShouldPrerender);
   ASSERT_NE(prerender_match, std::end(autocomplete_controller->result()));
 
   content::NavigationHandleObserver activation_observer(
diff --git a/chrome/browser/printing/print_browsertest.cc b/chrome/browser/printing/print_browsertest.cc
index abac7f22..dd7ee9c 100644
--- a/chrome/browser/printing/print_browsertest.cc
+++ b/chrome/browser/printing/print_browsertest.cc
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 #include <vector>
@@ -15,6 +14,7 @@
 #include "base/files/file_path.h"
 #include "base/memory/raw_ptr.h"
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
@@ -1161,9 +1161,7 @@
  private:
   void AddSampleToBuckets(std::vector<base::Bucket>* buckets,
                           base::HistogramBase::Sample sample) {
-    auto it = std::find_if(
-        buckets->begin(), buckets->end(),
-        [sample](const base::Bucket& bucket) { return bucket.min == sample; });
+    auto it = base::ranges::find(*buckets, sample, &base::Bucket::min);
     if (it == buckets->end()) {
       buckets->push_back(base::Bucket(sample, 1));
     } else {
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index a7e5ed40..59eb274 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -123,9 +123,7 @@
 #include "chrome/grit/chromium_strings.h"
 #include "components/background_sync/background_sync_controller_impl.h"
 #include "components/bookmarks/browser/bookmark_model.h"
-#include "components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h"
 #include "components/breadcrumbs/core/breadcrumbs_status.h"
-#include "components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h"
 #include "components/content_settings/core/browser/cookie_settings.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/pref_names.h"
@@ -835,19 +833,8 @@
   AnnouncementNotificationServiceFactory::GetForProfile(this)
       ->MaybeShowNotification();
 
-  if (breadcrumbs::IsEnabled()) {
-    breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-        BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
-            this, /*create=*/true);
-    breadcrumbs::CrashReporterBreadcrumbObserver::GetInstance()
-        .ObserveBreadcrumbManagerService(breadcrumb_service);
-
-    breadcrumbs::BreadcrumbPersistentStorageManager*
-        persistent_storage_manager =
-            g_browser_process->GetBreadcrumbPersistentStorageManager();
-    DCHECK(persistent_storage_manager);
-    breadcrumb_service->StartPersisting(persistent_storage_manager);
-  }
+  if (breadcrumbs::IsEnabled())
+    BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(this);
 }
 
 base::FilePath ProfileImpl::last_selected_directory() {
@@ -865,15 +852,6 @@
   StopCreateSessionServiceTimer();
 #endif
 
-  breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(
-          this, /*create=*/false);
-  if (breadcrumb_service) {
-    breadcrumb_service->StopPersisting();
-    breadcrumbs::CrashReporterBreadcrumbObserver::GetInstance()
-        .StopObservingBreadcrumbManagerService(breadcrumb_service);
-  }
-
   // Remove pref observers
   pref_change_registrar_.RemoveAll();
 
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc
index 6d08c9a..546ea17 100644
--- a/chrome/browser/profiles/profile_shortcut_manager_win.cc
+++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc
@@ -7,7 +7,6 @@
 #include <shlobj.h>  // For SHChangeNotify().
 #include <stddef.h>
 
-#include <algorithm>
 #include <memory>
 #include <set>
 #include <string>
@@ -20,6 +19,7 @@
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -332,10 +332,10 @@
   if (!profile_shortcuts->empty()) {
     // From all profile_shortcuts choose the one with a known (canonical) name.
     profiles::internal::ShortcutFilenameMatcher matcher(old_profile_name);
-    auto it = std::find_if(profile_shortcuts->begin(), profile_shortcuts->end(),
-                           [&matcher](const base::FilePath& p) {
-                             return matcher.IsCanonical(p.BaseName().value());
-                           });
+    auto it = base::ranges::find_if(
+        *profile_shortcuts, [&matcher](const base::FilePath& p) {
+          return matcher.IsCanonical(p.BaseName().value());
+        });
     // If all profile_shortcuts were renamed by user, respect it and do not
     // rename.
     if (it == profile_shortcuts->end())
diff --git a/chrome/browser/reduce_accept_language/reduce_accept_language_browsertest.cc b/chrome/browser/reduce_accept_language/reduce_accept_language_browsertest.cc
index 0cb7ce14..66a6f41f 100644
--- a/chrome/browser/reduce_accept_language/reduce_accept_language_browsertest.cc
+++ b/chrome/browser/reduce_accept_language/reduce_accept_language_browsertest.cc
@@ -6,6 +6,7 @@
 #include "base/feature_list.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/statistics_recorder.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_split.h"
 #include "base/task/thread_pool/thread_pool_instance.h"
@@ -1516,11 +1517,7 @@
   std::string GetResponseContentLanguage(
       const std::string& accept_language,
       const std::vector<std::string>& variants_languages) {
-    auto iter =
-        std::find_if(variants_languages.begin(), variants_languages.end(),
-                     [&](const std::string& available_language) {
-                       return accept_language == available_language;
-                     });
+    auto iter = base::ranges::find(variants_languages, accept_language);
     return iter != variants_languages.end() ? *iter : variants_languages[0];
   }
 
diff --git a/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc b/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc
index e0c0f4c..9d864a0 100644
--- a/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc
@@ -4,8 +4,7 @@
 
 #include "chrome/browser/renderer_context_menu/mock_render_view_context_menu.h"
 
-#include <algorithm>
-
+#include "base/ranges/algorithm.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/grit/generated_resources.h"
@@ -191,9 +190,7 @@
 void MockRenderViewContextMenu::RemoveAdjacentSeparators() {}
 
 void MockRenderViewContextMenu::RemoveSeparatorBeforeMenuItem(int command_id) {
-  auto iter = std::find_if(
-      items_.begin(), items_.end(),
-      [command_id](const auto& item) { return item.command_id == command_id; });
+  auto iter = base::ranges::find(items_, command_id, &MockMenuItem::command_id);
 
   if (iter == items_.end()) {
     FAIL() << "Menu observer is trying to remove a separator before a "
diff --git a/chrome/browser/reputation/reputation_service.cc b/chrome/browser/reputation/reputation_service.cc
index dc075e2a..2104cba 100644
--- a/chrome/browser/reputation/reputation_service.cc
+++ b/chrome/browser/reputation/reputation_service.cc
@@ -8,9 +8,11 @@
 #include <string>
 #include <utility>
 
+#include "base/containers/contains.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/singleton.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/lookalikes/lookalike_url_blocking_page.h"
 #include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h"
 #include "chrome/browser/lookalikes/lookalike_url_service.h"
@@ -188,13 +190,10 @@
   // Ensure that this URL is not already engaged. We can't use the synchronous
   // SiteEngagementService::IsEngagementAtLeast as it has side effects.  This
   // check intentionally ignores the scheme.
-  const auto already_engaged =
-      std::find_if(engaged_sites.begin(), engaged_sites.end(),
-                   [navigated_domain](const DomainInfo& engaged_domain) {
-                     return (navigated_domain.domain_and_registry ==
-                             engaged_domain.domain_and_registry);
-                   });
-  if (already_engaged != engaged_sites.end()) {
+  const bool already_engaged =
+      base::Contains(engaged_sites, navigated_domain.domain_and_registry,
+                     &DomainInfo::domain_and_registry);
+  if (already_engaged) {
     done_checking_reputation_status = true;
   }
 
@@ -218,7 +217,7 @@
 
   // 4. Lookalike heuristics.
   GURL safe_url;
-  if (already_engaged == engaged_sites.end() &&
+  if (!already_engaged &&
       ShouldTriggerSafetyTipFromLookalike(url, navigated_domain, engaged_sites,
                                           &safe_url)) {
     if (!done_checking_reputation_status) {
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/tutorial_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/tutorial_test.js
index bd76639..cba8793b 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/tutorial_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/tutorial_test.js
@@ -173,8 +173,8 @@
           })
           .expectSpeech(
               'On, Off, and Stop', 'Heading 1',
-              ' Press Search + Right Arrow, or Search + Left Arrow to navigate ' +
-                  'this lesson ')
+              'Press Search + Right Arrow, or Search + Left Arrow to ' +
+                  'navigate this lesson')
           .call(doCmd('nextButton'))
           .expectSpeech('Next lesson');
       await mockFeedback.replay();
@@ -444,8 +444,8 @@
       })
       .expectSpeech('On, Off, and Stop', 'Heading 1')
       .expectSpeech(
-          ' Press Search + Right Arrow, or Search + Left Arrow to navigate' +
-          ' this lesson ');
+          'Press Search + Right Arrow, or Search + Left Arrow to navigate' +
+          ' this lesson');
   await mockFeedback.replay();
 });
 
@@ -618,8 +618,8 @@
       .call(doCmd('forceClickOnCurrentItem'))
       .expectSpeech('Learn More', 'Heading 1')
       .expectSpeech(
-          ' Press Search + Right Arrow, or Search + Left Arrow to' +
-          ' navigate this lesson ')
+          'Press Search + Right Arrow, or Search + Left Arrow to' +
+          ' navigate this lesson')
       // The 'All lessons' button should be hidden since this is the only
       // lesson for the curriculum.
       .call(doCmd('nextButton'))
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.cc b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
index 57d0a312..167edcd2 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
@@ -15,6 +15,7 @@
 #include "base/metrics/user_metrics_action.h"
 #include "base/observer_list.h"
 #include "base/rand_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -470,11 +471,11 @@
     ReusedPasswordAccountType password_type,
     const std::string& verdict_token) {
   if (!IsIncognito()) {
-    DictionaryPrefUpdate update(
+    ScopedDictPrefUpdate update(
         profile_->GetPrefs(), prefs::kSafeBrowsingUnhandledGaiaPasswordReuses);
     // Since base::Value doesn't support int64_t type, we convert the navigation
     // ID to string format and store it in the preference dictionary.
-    update->SetStringKey(
+    update->Set(
         web_contents->GetPrimaryMainFrame()
             ->GetLastCommittedOrigin()
             .Serialize(),
@@ -875,9 +876,8 @@
 void ChromePasswordProtectionService::OnGaiaPasswordChanged(
     const std::string& username,
     bool is_other_gaia_password) {
-  DictionaryPrefUpdate unhandled_gaia_password_reuses(
-      profile_->GetPrefs(), prefs::kSafeBrowsingUnhandledGaiaPasswordReuses);
-  unhandled_gaia_password_reuses->DictClear();
+  profile_->GetPrefs()->SetDict(prefs::kSafeBrowsingUnhandledGaiaPasswordReuses,
+                                base::Value::Dict());
   if (!is_other_gaia_password)
     MaybeLogPasswordCapture(/*did_log_in=*/true);
   for (auto& observer : observer_list_)
@@ -1071,10 +1071,10 @@
         ReusedPasswordAccountType::NON_GAIA_ENTERPRISE) {
       web_contents_with_unhandled_enterprise_reuses_.erase(web_contents);
     } else {
-      DictionaryPrefUpdate update(
+      ScopedDictPrefUpdate update(
           profile_->GetPrefs(),
           prefs::kSafeBrowsingUnhandledGaiaPasswordReuses);
-      update->RemoveKey(origin.Serialize());
+      update->Remove(origin.Serialize());
     }
 
     // If the site is marked as legitimate and the phished password is
@@ -1539,14 +1539,13 @@
 
   std::vector<CoreAccountInfo> signed_in_accounts =
       identity_manager->GetAccountsWithRefreshTokens();
-  auto account_iterator =
-      std::find_if(signed_in_accounts.begin(), signed_in_accounts.end(),
-                   [username](const auto& account) {
-                     return password_manager::AreUsernamesSame(
-                         account.email,
-                         /*is_username1_gaia_account=*/true, username,
-                         /*is_username2_gaia_account=*/true);
-                   });
+  auto account_iterator = base::ranges::find_if(
+      signed_in_accounts, [username](const auto& account) {
+        return password_manager::AreUsernamesSame(
+            account.email,
+            /*is_username1_gaia_account=*/true, username,
+            /*is_username2_gaia_account=*/true);
+      });
   if (account_iterator == signed_in_accounts.end())
     return AccountInfo();
 
@@ -1582,17 +1581,17 @@
         const history::URLRows& deleted_rows) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  DictionaryPrefUpdate unhandled_sync_password_reuses(
+  ScopedDictPrefUpdate unhandled_sync_password_reuses(
       profile_->GetPrefs(), prefs::kSafeBrowsingUnhandledGaiaPasswordReuses);
   if (all_history) {
-    unhandled_sync_password_reuses->DictClear();
+    unhandled_sync_password_reuses->clear();
     return;
   }
 
   for (const history::URLRow& row : deleted_rows) {
     if (!row.url().SchemeIsHTTPOrHTTPS())
       continue;
-    unhandled_sync_password_reuses->RemoveKey(
+    unhandled_sync_password_reuses->Remove(
         Origin::Create(row.url()).Serialize());
   }
 }
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
index d56203c..1a5bd4b 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
@@ -401,9 +401,10 @@
   }
 
   int GetSizeofUnhandledSyncPasswordReuses() {
-    DictionaryPrefUpdate unhandled_sync_password_reuses(
-        profile()->GetPrefs(), prefs::kSafeBrowsingUnhandledGaiaPasswordReuses);
-    return unhandled_sync_password_reuses->DictSize();
+    return profile()
+        ->GetPrefs()
+        ->GetDict(prefs::kSafeBrowsingUnhandledGaiaPasswordReuses)
+        .size();
   }
 
   size_t GetNumberOfDeferredNavigations() {
@@ -1100,14 +1101,14 @@
   GURL url_b("https://www.phishingb.com");
   GURL url_c("https://www.phishingc.com");
 
-  DictionaryPrefUpdate update(profile()->GetPrefs(),
+  ScopedDictPrefUpdate update(profile()->GetPrefs(),
                               prefs::kSafeBrowsingUnhandledGaiaPasswordReuses);
-  update->SetKey(Origin::Create(url_a).Serialize(),
-                 base::Value("navigation_id_a"));
-  update->SetKey(Origin::Create(url_b).Serialize(),
-                 base::Value("navigation_id_b"));
-  update->SetKey(Origin::Create(url_c).Serialize(),
-                 base::Value("navigation_id_c"));
+  update->Set(Origin::Create(url_a).Serialize(),
+              base::Value("navigation_id_a"));
+  update->Set(Origin::Create(url_b).Serialize(),
+              base::Value("navigation_id_b"));
+  update->Set(Origin::Create(url_c).Serialize(),
+              base::Value("navigation_id_c"));
 
   // Delete a https://www.phishinga.com URL.
   history::URLRows deleted_urls;
diff --git a/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc b/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
index 82341036..c6d14b6 100644
--- a/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
@@ -1165,8 +1165,8 @@
     GTEST_SKIP();
 
   // Configures enterprise allowlist.
-  ListPrefUpdate update(profile()->GetPrefs(),
-                        prefs::kSafeBrowsingAllowlistDomains);
+  ScopedListPrefUpdate update(profile()->GetPrefs(),
+                              prefs::kSafeBrowsingAllowlistDomains);
   update->Append("example.com");
 
   EXPECT_CALL(*csd_service_, GetModelStr())
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc
index ccb0aea..921033f 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc
@@ -585,10 +585,9 @@
                           enterprise_connectors::AnalysisConnector connector,
                           const std::string& pref_value,
                           bool machine_scope) {
-  ListPrefUpdate settings_list(prefs, ConnectorPref(connector));
-  DCHECK(settings_list.Get());
-  if (!settings_list->GetListDeprecated().empty())
-    settings_list->ClearList();
+  ScopedListPrefUpdate settings_list(prefs, ConnectorPref(connector));
+  if (!settings_list->empty())
+    settings_list->clear();
 
   settings_list->Append(*base::JSONReader::Read(pref_value));
   prefs->SetInteger(
@@ -624,16 +623,15 @@
     const std::map<std::string, std::vector<std::string>>&
         enabled_opt_in_events,
     bool machine_scope) {
-  ListPrefUpdate settings_list(prefs,
-                               enterprise_connectors::kOnSecurityEventPref);
-  DCHECK(settings_list.Get());
+  ScopedListPrefUpdate settings_list(
+      prefs, enterprise_connectors::kOnSecurityEventPref);
   if (!enabled) {
-    settings_list->ClearList();
+    settings_list->clear();
     prefs->ClearPref(enterprise_connectors::kOnSecurityEventScopePref);
     return;
   }
 
-  if (settings_list->GetListDeprecated().empty()) {
+  if (settings_list->empty()) {
     base::Value settings(base::Value::Type::DICTIONARY);
 
     settings.SetKey(enterprise_connectors::kKeyServiceProvider,
@@ -662,9 +660,8 @@
 void ClearAnalysisConnector(
     PrefService* prefs,
     enterprise_connectors::AnalysisConnector connector) {
-  ListPrefUpdate settings_list(prefs, ConnectorPref(connector));
-  DCHECK(settings_list.Get());
-  settings_list->ClearList();
+  ScopedListPrefUpdate settings_list(prefs, ConnectorPref(connector));
+  settings_list->clear();
   prefs->ClearPref(ConnectorScopePref(connector));
 }
 
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
index 6eec62d3..dd99059f 100644
--- a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
@@ -281,7 +281,7 @@
   }
 
   void AddUrlToProfilePrefList(const char* pref_name, const GURL& url) {
-    ListPrefUpdate(profile_->GetPrefs(), pref_name)->Append(url.host());
+    ScopedListPrefUpdate(profile_->GetPrefs(), pref_name)->Append(url.host());
   }
 
   void SetFeatures(const std::vector<base::Feature>& enabled,
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
index 83030e4d..5d442dd4 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
@@ -621,9 +621,9 @@
   }
 
   void AddDomainToEnterpriseAllowlist(const std::string& domain) {
-    ListPrefUpdate update(profile()->GetPrefs(),
-                          prefs::kSafeBrowsingAllowlistDomains);
-    update.Get()->Append(domain);
+    ScopedListPrefUpdate update(profile()->GetPrefs(),
+                                prefs::kSafeBrowsingAllowlistDomains);
+    update->Append(domain);
   }
 
   // Helper function to simulate a user gesture, then a link click.
diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
index 9f5f8e41..64bd8faf 100644
--- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
@@ -7,7 +7,6 @@
 #include <math.h>
 #include <stddef.h>
 
-#include <algorithm>
 #include <memory>
 #include <string>
 #include <utility>
@@ -17,6 +16,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/process/process.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/task/task_traits.h"
@@ -980,11 +980,8 @@
 
   // The upload is no longer outstanding, so take ownership of the context (from
   // the collection of outstanding uploads) in this scope.
-  auto it =
-      std::find_if(uploads_.begin(), uploads_.end(),
-                   [context](const std::unique_ptr<UploadContext>& value) {
-                     return value.get() == context;
-                   });
+  auto it = base::ranges::find(uploads_, context,
+                               &std::unique_ptr<UploadContext>::get);
   DCHECK(it != uploads_.end());
   std::unique_ptr<UploadContext> upload(std::move(*it));
   uploads_.erase(it);
diff --git a/chrome/browser/safe_browsing/url_checker_delegate_impl.cc b/chrome/browser/safe_browsing/url_checker_delegate_impl.cc
index 3ccf132..6e0397d 100644
--- a/chrome/browser/safe_browsing/url_checker_delegate_impl.cc
+++ b/chrome/browser/safe_browsing/url_checker_delegate_impl.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/feature_list.h"
+#include "base/ranges/algorithm.h"
 #include "build/build_config.h"
 #include "chrome/browser/android/customtabs/client_data_header_web_contents_observer.h"
 #include "chrome/browser/browser_process.h"
@@ -146,10 +147,10 @@
     bool originated_from_service_worker) {
   // Check for whether the URL matches the Safe Browsing allowlist domains
   // (a.k. a prefs::kSafeBrowsingAllowlistDomains).
-  return std::find_if(allowlist_domains_.begin(), allowlist_domains_.end(),
-                      [&original_url](const std::string& domain) {
-                        return original_url.DomainIs(domain);
-                      }) != allowlist_domains_.end();
+  return base::ranges::any_of(allowlist_domains_,
+                              [&original_url](const std::string& domain) {
+                                return original_url.DomainIs(domain);
+                              });
 }
 
 void UrlCheckerDelegateImpl::NotifySuspiciousSiteDetected(
diff --git a/chrome/browser/sessions/closed_tab_cache.cc b/chrome/browser/sessions/closed_tab_cache.cc
index 91ced3f..0ac45d1 100644
--- a/chrome/browser/sessions/closed_tab_cache.cc
+++ b/chrome/browser/sessions/closed_tab_cache.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/metrics/field_trial_params.h"
+#include "base/ranges/algorithm.h"
 #include "base/trace_event/trace_event.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -95,9 +96,7 @@
 std::unique_ptr<content::WebContents> ClosedTabCache::RestoreEntry(
     SessionID id) {
   TRACE_EVENT1("browser", "ClosedTabCache::RestoreEntry", "SessionID", id.id());
-  auto matching_entry = std::find_if(
-      entries_.begin(), entries_.end(),
-      [id](const std::unique_ptr<Entry>& entry) { return entry->id == id; });
+  auto matching_entry = base::ranges::find(entries_, id, &Entry::id);
 
   if (matching_entry == entries_.end())
     return nullptr;
@@ -111,9 +110,7 @@
 }
 
 const content::WebContents* ClosedTabCache::GetWebContents(SessionID id) const {
-  auto matching_entry = std::find_if(
-      entries_.begin(), entries_.end(),
-      [id](const std::unique_ptr<Entry>& entry) { return entry->id == id; });
+  auto matching_entry = base::ranges::find(entries_, id, &Entry::id);
 
   if (matching_entry == entries_.end())
     return nullptr;
@@ -171,9 +168,7 @@
 }
 
 void ClosedTabCache::EvictEntryById(SessionID id) {
-  auto matching_entry = std::find_if(
-      entries_.begin(), entries_.end(),
-      [id](const std::unique_ptr<Entry>& entry) { return entry->id == id; });
+  auto matching_entry = base::ranges::find(entries_, id, &Entry::id);
 
   if (matching_entry == entries_.end())
     return;
diff --git a/chrome/browser/sharesheet/sharesheet_service.cc b/chrome/browser/sharesheet/sharesheet_service.cc
index 61a269833..a23c158 100644
--- a/chrome/browser/sharesheet/sharesheet_service.cc
+++ b/chrome/browser/sharesheet/sharesheet_service.cc
@@ -4,11 +4,11 @@
 
 #include "chrome/browser/sharesheet/sharesheet_service.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
@@ -369,13 +369,11 @@
   const std::u16string selected_app = GetSelectedApp();
   if (!selected_app.empty()) {
     SharesheetResult result = SharesheetResult::kCancel;
-    auto iter = std::find_if(targets.begin(), targets.end(),
-                             [selected_app](const auto& target) {
-                               return (target.type == TargetType::kArcApp ||
-                                       target.type == TargetType::kWebApp) &&
-                                      target.launch_name == selected_app;
-                             });
-    if (iter != targets.end()) {
+    if (base::ranges::any_of(targets, [selected_app](const auto& target) {
+          return (target.type == TargetType::kArcApp ||
+                  target.type == TargetType::kWebApp) &&
+                 target.launch_name == selected_app;
+        })) {
       LaunchApp(selected_app, std::move(intent));
       result = SharesheetResult::kSuccess;
     }
diff --git a/chrome/browser/signin/dice_intercepted_session_startup_helper.cc b/chrome/browser/signin/dice_intercepted_session_startup_helper.cc
index f1608df3..07e5d1b1 100644
--- a/chrome/browser/signin/dice_intercepted_session_startup_helper.cc
+++ b/chrome/browser/signin/dice_intercepted_session_startup_helper.cc
@@ -4,11 +4,11 @@
 
 #include "chrome/browser/signin/dice_intercepted_session_startup_helper.h"
 
-#include <algorithm>
 #include <vector>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "chrome/browser/signin/account_reconcilor_factory.h"
@@ -33,10 +33,7 @@
                         const CoreAccountId& account_id) {
   const std::vector<gaia::ListedAccount>& accounts =
       cookie_info.signed_in_accounts;
-  return std::find_if(accounts.begin(), accounts.end(),
-                      [&account_id](const gaia::ListedAccount& account) {
-                        return account.id == account_id;
-                      }) != accounts.end();
+  return base::Contains(accounts, account_id, &gaia::ListedAccount::id);
 }
 
 }  // namespace
diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc
index bd20d8f9..7b43693c 100644
--- a/chrome/browser/spellchecker/spellcheck_service.cc
+++ b/chrome/browser/spellchecker/spellcheck_service.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/spellchecker/spellcheck_service.h"
 
-#include <algorithm>
 #include <iterator>
 #include <memory>
 #include <set>
@@ -15,6 +14,7 @@
 #include "base/check_op.h"
 #include "base/containers/contains.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_split.h"
 #include "base/supports_user_data.h"
 #include "base/synchronization/waitable_event.h"
@@ -279,12 +279,12 @@
   // First try exact match. Per BCP47, tags are in ASCII and should be treated
   // as case-insensitive (although there are conventions for the capitalization
   // of subtags).
-  auto iter =
-      std::find_if(accept_languages.begin(), accept_languages.end(),
-                   [supported_language_full_tag](const auto& accept_language) {
-                     return base::EqualsCaseInsensitiveASCII(
-                         supported_language_full_tag, accept_language);
-                   });
+  auto iter = base::ranges::find_if(
+      accept_languages,
+      [supported_language_full_tag](const auto& accept_language) {
+        return base::EqualsCaseInsensitiveASCII(supported_language_full_tag,
+                                                accept_language);
+      });
   if (iter != accept_languages.end())
     return *iter;
 
@@ -296,17 +296,17 @@
   if (!base::Contains(supported_language_full_tag, "-"))
     return "";
 
-  iter =
-      std::find_if(accept_languages.begin(), accept_languages.end(),
-                   [supported_language_full_tag](const auto& accept_language) {
-                     return base::EqualsCaseInsensitiveASCII(
-                         SpellcheckService::GetLanguageAndScriptTag(
-                             supported_language_full_tag,
-                             /* include_script_tag= */ true),
-                         SpellcheckService::GetLanguageAndScriptTag(
-                             accept_language,
-                             /* include_script_tag= */ true));
-                   });
+  iter = base::ranges::find_if(
+      accept_languages,
+      [supported_language_full_tag](const auto& accept_language) {
+        return base::EqualsCaseInsensitiveASCII(
+            SpellcheckService::GetLanguageAndScriptTag(
+                supported_language_full_tag,
+                /* include_script_tag= */ true),
+            SpellcheckService::GetLanguageAndScriptTag(
+                accept_language,
+                /* include_script_tag= */ true));
+      });
 
   if (iter != accept_languages.end())
     return *iter;
@@ -711,17 +711,17 @@
 std::string SpellcheckService::GetSupportedAcceptLanguageCodeGenericOnly(
     const std::string& supported_language_full_tag,
     const std::vector<std::string>& accept_languages) {
-  auto iter =
-      std::find_if(accept_languages.begin(), accept_languages.end(),
-                   [supported_language_full_tag](const auto& accept_language) {
-                     return base::EqualsCaseInsensitiveASCII(
-                         SpellcheckService::GetLanguageAndScriptTag(
-                             supported_language_full_tag,
-                             /* include_script_tag= */ false),
-                         SpellcheckService::GetLanguageAndScriptTag(
-                             accept_language,
-                             /* include_script_tag= */ false));
-                   });
+  auto iter = base::ranges::find_if(
+      accept_languages,
+      [supported_language_full_tag](const auto& accept_language) {
+        return base::EqualsCaseInsensitiveASCII(
+            SpellcheckService::GetLanguageAndScriptTag(
+                supported_language_full_tag,
+                /* include_script_tag= */ false),
+            SpellcheckService::GetLanguageAndScriptTag(
+                accept_language,
+                /* include_script_tag= */ false));
+      });
 
   if (iter != accept_languages.end()) {
     // Special case for Serbian--"sr" implies Cyrillic script. Don't mark it as
diff --git a/chrome/browser/tab/BUILD.gn b/chrome/browser/tab/BUILD.gn
index 00e64f12..cdcd25e 100644
--- a/chrome/browser/tab/BUILD.gn
+++ b/chrome/browser/tab/BUILD.gn
@@ -107,6 +107,7 @@
     "//third_party/androidx:androidx_annotation_annotation_java",
     "//third_party/androidx:androidx_core_core_java",
     "//ui/android:ui_full_java",
+    "//ui/base/ime/mojom:mojom_java",
     "//url:gurl_java",
     "//url:origin_java",
   ]
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java
index 723eaa8..4646d28 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java
@@ -11,6 +11,7 @@
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.browser.NavigationHandle;
 import org.chromium.net.NetError;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 /**
@@ -118,6 +119,9 @@
     public void onBackgroundColorChanged(Tab tab, int color) {}
 
     @Override
+    public void onVirtualKeyboardModeChanged(Tab tab, @VirtualKeyboardMode.EnumType int mode) {}
+
+    @Override
     public void onInteractabilityChanged(Tab tab, boolean isInteractable) {}
 
     @Override
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabObserver.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabObserver.java
index e673eec..4b4cf74 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabObserver.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabObserver.java
@@ -14,6 +14,7 @@
 import org.chromium.content_public.browser.NavigationHandle;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 /**
@@ -260,6 +261,13 @@
     void onBackgroundColorChanged(Tab tab, int color);
 
     /**
+     * Called when the virtual keyboard mode in the tab's current page has been changed.
+     * @param tab The notifying {@link Tab}.
+     * @param mode The current virtual keyboard mode.
+     */
+    void onVirtualKeyboardModeChanged(Tab tab, @VirtualKeyboardMode.EnumType int mode);
+
+    /**
      * Called when the Tab is attached or detached from an {@code Activity}. By default, this will
      * automatically unregister the tab observer if the Tab is detached from the window.
      *
diff --git a/chrome/browser/task_manager/providers/web_contents/extension_tag_browsertest.cc b/chrome/browser/task_manager/providers/web_contents/extension_tag_browsertest.cc
index df7466f5..4fc6211 100644
--- a/chrome/browser/task_manager/providers/web_contents/extension_tag_browsertest.cc
+++ b/chrome/browser/task_manager/providers/web_contents/extension_tag_browsertest.cc
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
-
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -29,9 +28,8 @@
   // If no extension task was found, a nullptr will be returned.
   Task* FindAndGetExtensionTask(
       const MockWebContentsTaskManager& task_manager) {
-    auto itr = std::find_if(
-        task_manager.tasks().begin(), task_manager.tasks().end(),
-        [](Task* task) { return task->GetType() == Task::EXTENSION; });
+    auto itr = base::ranges::find(task_manager.tasks(), Task::EXTENSION,
+                                  &Task::GetType);
 
     return itr != task_manager.tasks().end() ? *itr : nullptr;
   }
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc
index bc9bee5..427a91ce 100644
--- a/chrome/browser/themes/browser_theme_pack.cc
+++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -7,7 +7,6 @@
 #include <limits.h>
 #include <stddef.h>
 
-#include <algorithm>
 #include <limits>
 #include <memory>
 #include <utility>
@@ -19,6 +18,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/no_destructor.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -159,18 +159,15 @@
 };
 
 BrowserThemePack::PersistentID GetPersistentIDByName(const std::string& key) {
-  auto* it =
-      std::find_if(std::begin(kPersistingImages), std::end(kPersistingImages),
-                   [&](const auto& image) {
-                     return base::EqualsCaseInsensitiveASCII(key, image.key);
-                   });
+  auto* it = base::ranges::find_if(kPersistingImages, [&](const auto& image) {
+    return base::EqualsCaseInsensitiveASCII(key, image.key);
+  });
   return it == std::end(kPersistingImages) ? PRS::kInvalid : it->persistent_id;
 }
 
 BrowserThemePack::PersistentID GetPersistentIDByIDR(int idr) {
-  auto* it =
-      std::find_if(std::begin(kPersistingImages), std::end(kPersistingImages),
-                   [&](const auto& image) { return image.idr_id == idr; });
+  auto* it = base::ranges::find(kPersistingImages, idr,
+                                &PersistingImagesTable::idr_id);
   return it == std::end(kPersistingImages) ? PRS::kInvalid : it->persistent_id;
 }
 
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 585440e..8c128c50 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -4707,6 +4707,7 @@
       "views/page_action/page_action_icon_params.h",
       "views/page_action/page_action_icon_view.cc",
       "views/page_action/page_action_icon_view.h",
+      "views/page_action/page_action_icon_view_observer.h",
       "views/page_action/pwa_install_view.cc",
       "views/page_action/pwa_install_view.h",
       "views/page_action/zoom_view.cc",
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_persistence_delegate.cc b/chrome/browser/ui/ash/holding_space/holding_space_persistence_delegate.cc
index 3f4474a..c6ec83e 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_persistence_delegate.cc
+++ b/chrome/browser/ui/ash/holding_space/holding_space_persistence_delegate.cc
@@ -66,10 +66,10 @@
     return;
 
   // Write the new finalized `items` to persistent storage.
-  ListPrefUpdate update(profile()->GetPrefs(), kPersistencePath);
+  ScopedListPrefUpdate update(profile()->GetPrefs(), kPersistencePath);
   for (const HoldingSpaceItem* item : items) {
     if (item->progress().IsComplete())
-      update->GetList().Append(item->Serialize());
+      update->Append(item->Serialize());
   }
 }
 
@@ -79,8 +79,8 @@
     return;
 
   // Remove the `items` from persistent storage.
-  ListPrefUpdate update(profile()->GetPrefs(), kPersistencePath);
-  update->GetList().EraseIf([&items](const base::Value& persisted_item) {
+  ScopedListPrefUpdate update(profile()->GetPrefs(), kPersistencePath);
+  update->EraseIf([&items](const base::Value& persisted_item) {
     const std::string& persisted_item_id = HoldingSpaceItem::DeserializeId(
         base::Value::AsDictionaryValue(persisted_item));
     return base::Contains(items, persisted_item_id, &HoldingSpaceItem::id);
@@ -98,8 +98,8 @@
     return;
 
   // Attempt to find the finalized `item` in persistent storage.
-  ListPrefUpdate update(profile()->GetPrefs(), kPersistencePath);
-  base::Value::List& list = update->GetList();
+  ScopedListPrefUpdate update(profile()->GetPrefs(), kPersistencePath);
+  base::Value::List& list = update.Get();
   auto item_it = base::ranges::find(
       list, item->id(), [](const base::Value& persisted_item) {
         return HoldingSpaceItem::DeserializeId(
diff --git a/chrome/browser/ui/ash/keyboard/chrome_keyboard_bounds_observer.cc b/chrome/browser/ui/ash/keyboard/chrome_keyboard_bounds_observer.cc
index 94d26bd1..13e1255d 100644
--- a/chrome/browser/ui/ash/keyboard/chrome_keyboard_bounds_observer.cc
+++ b/chrome/browser/ui/ash/keyboard/chrome_keyboard_bounds_observer.cc
@@ -15,6 +15,7 @@
 #include "ui/aura/window.h"
 #include "ui/base/ime/ash/ime_bridge.h"
 #include "ui/base/ime/input_method.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom.h"
 #include "ui/base/ime/text_input_client.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/display/display.h"
@@ -178,7 +179,8 @@
 void ChromeKeyboardBoundsObserver::UpdateInsets(
     aura::Window* window,
     content::RenderWidgetHostView* view) {
-  if (view->ShouldVirtualKeyboardOverlayContent()) {
+  if (view->GetVirtualKeyboardMode() ==
+      ui::mojom::VirtualKeyboardMode::kOverlaysContent) {
     view->SetInsets(gfx::Insets());
     return;
   }
diff --git a/chrome/browser/ui/ash/launcher_page_switches_interactive_uitest.cc b/chrome/browser/ui/ash/launcher_page_switches_interactive_uitest.cc
deleted file mode 100644
index 4764d3c..0000000
--- a/chrome/browser/ui/ash/launcher_page_switches_interactive_uitest.cc
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2019 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/public/cpp/app_list/app_list_types.h"
-#include "ash/public/cpp/pagination/pagination_model.h"
-#include "ash/public/cpp/pagination/pagination_model_observer.h"
-#include "ash/public/cpp/test/shell_test_api.h"
-#include "base/command_line.h"
-#include "base/run_loop.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/ui/app_list/test/chrome_app_list_test_support.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_list.h"
-#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/test/base/perf/drag_event_generator.h"
-#include "chrome/test/base/perf/performance_test.h"
-#include "content/public/test/browser_test.h"
-#include "ui/base/test/ui_controls.h"
-#include "ui/display/display.h"
-#include "ui/display/screen.h"
-#include "ui/wm/core/wm_core_switches.h"
-
-namespace {
-
-class PageSwitchWaiter : public ash::PaginationModelObserver {
- public:
-  explicit PageSwitchWaiter(ash::PaginationModel* model) : model_(model) {
-    model_->AddObserver(this);
-  }
-
-  PageSwitchWaiter(const PageSwitchWaiter&) = delete;
-  PageSwitchWaiter& operator=(const PageSwitchWaiter&) = delete;
-
-  ~PageSwitchWaiter() override { model_->RemoveObserver(this); }
-
-  void Wait() { run_loop_.Run(); }
-
- private:
-  // ash::PaginationModelObserver:
-  void TransitionEnded() override {
-    // Needs one frame presented after transition animation ends to get
-    // the metrics recorded.
-    ash::ShellTestApi().WaitForNextFrame(run_loop_.QuitClosure());
-  }
-
-  ash::PaginationModel* model_;
-  base::RunLoop run_loop_;
-};
-
-}  // namespace
-
-class LauncherPageSwitchesTest : public UIPerformanceTest,
-                                 public ::testing::WithParamInterface<bool> {
- public:
-  LauncherPageSwitchesTest() = default;
-
-  LauncherPageSwitchesTest(const LauncherPageSwitchesTest&) = delete;
-  LauncherPageSwitchesTest& operator=(const LauncherPageSwitchesTest&) = delete;
-
-  ~LauncherPageSwitchesTest() override = default;
-
-  // UIPerformanceTest:
-  void SetUpOnMainThread() override {
-    UIPerformanceTest::SetUpOnMainThread();
-    is_tablet_mode_ = GetParam();
-
-    test::PopulateDummyAppListItems(100);
-    if (base::SysInfo::IsRunningOnChromeOS()) {
-      base::RunLoop run_loop;
-      base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-          FROM_HERE, run_loop.QuitClosure(), base::Seconds(5));
-      run_loop.Run();
-    }
-
-    // In tablet mode, the test will wait for the browser window to finish
-    // animating (and for the home screen to become visible) to know when to
-    // continue, so make sure the window has animations.
-    auto* cmd = base::CommandLine::ForCurrentProcess();
-    if (cmd->HasSwitch(wm::switches::kWindowAnimationsDisabled))
-      cmd->RemoveSwitch(wm::switches::kWindowAnimationsDisabled);
-
-    ash::ShellTestApi shell_test_api;
-
-    // switch to tablet-mode if necessary.
-    if (is_tablet_mode_)
-      shell_test_api.SetTabletModeEnabledForTest(true);
-
-    // Open the fullscreen app; required for page switching.
-    BrowserView* browser_view =
-        BrowserView::GetBrowserViewForBrowser(browser());
-    aura::Window* browser_window = browser_view->GetWidget()->GetNativeWindow();
-    ui_controls::SendKeyPress(browser_window, ui::VKEY_BROWSER_SEARCH,
-                              /*control=*/false,
-                              /*shift=*/true,
-                              /*alt=*/false,
-                              /* command = */ false);
-    shell_test_api.WaitForLauncherAnimationState(
-        ash::AppListViewState::kFullscreenAllApps);
-  }
-
-  // UIPerformanceTest:
-  std::vector<std::string> GetUMAHistogramNames() const override {
-    return {
-        is_tablet_mode_
-            ? "Apps.PaginationTransition.AnimationSmoothness.TabletMode"
-            : "Apps.PaginationTransition.AnimationSmoothness.ClamshellMode",
-    };
-  }
-
- private:
-  bool is_tablet_mode_ = false;
-};
-
-IN_PROC_BROWSER_TEST_P(LauncherPageSwitchesTest, SwitchToNextPage) {
-  ash::PaginationModel* model = ash::ShellTestApi().GetAppListPaginationModel();
-  ASSERT_TRUE(model);
-  EXPECT_LT(1, model->total_pages());
-  EXPECT_EQ(0, model->selected_page());
-
-  PageSwitchWaiter waiter(model);
-  model->SelectPageRelative(1, /*animate=*/true);
-  waiter.Wait();
-}
-
-IN_PROC_BROWSER_TEST_P(LauncherPageSwitchesTest, SwitchToFarPage) {
-  ash::PaginationModel* model = ash::ShellTestApi().GetAppListPaginationModel();
-  ASSERT_TRUE(model);
-  EXPECT_LT(2, model->total_pages());
-  EXPECT_EQ(0, model->selected_page());
-
-  PageSwitchWaiter waiter(model);
-  model->SelectPageRelative(2, /*animate=*/true);
-  waiter.Wait();
-}
-
-INSTANTIATE_TEST_SUITE_P(All,
-                         LauncherPageSwitchesTest,
-                         /*tablet_mode=*/::testing::Bool());
-
-// The test gets very flaky in tablet-mode, so it's in clamshell mode only for
-// now.
-// TODO(mukai): investigate why and enable this test case with tablet-mode too.
-class LauncherPageDragTest : public UIPerformanceTest {
- public:
-  LauncherPageDragTest() = default;
-
-  LauncherPageDragTest(const LauncherPageDragTest&) = delete;
-  LauncherPageDragTest& operator=(const LauncherPageDragTest&) = delete;
-
-  ~LauncherPageDragTest() override = default;
-
-  // UIPerformanceTest:
-  void SetUpOnMainThread() override {
-    UIPerformanceTest::SetUpOnMainThread();
-
-    test::PopulateDummyAppListItems(100);
-
-    ash::ShellTestApi shell_test_api;
-
-    // Open the fullscreen app; required for page switching.
-    BrowserView* browser_view =
-        BrowserView::GetBrowserViewForBrowser(browser());
-    aura::Window* browser_window = browser_view->GetWidget()->GetNativeWindow();
-    ui_controls::SendKeyPress(browser_window, ui::VKEY_BROWSER_SEARCH,
-                              /*control=*/false,
-                              /*shift=*/true,
-                              /*alt=*/false,
-                              /* command = */ false);
-    shell_test_api.WaitForLauncherAnimationState(
-        ash::AppListViewState::kFullscreenAllApps);
-
-    if (base::SysInfo::IsRunningOnChromeOS()) {
-      base::RunLoop run_loop;
-      base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-          FROM_HERE, run_loop.QuitClosure(), base::Seconds(5));
-      run_loop.Run();
-    }
-  }
-
-  // UIPerformanceTest:
-  std::vector<std::string> GetUMAHistogramNames() const override {
-    return {
-        "Apps.PaginationTransition.DragScroll.PresentationTime.ClamshellMode",
-        "Apps.PaginationTransition.DragScroll.PresentationTime.MaxLatency."
-        "ClamshellMode",
-    };
-  }
-};
-
-IN_PROC_BROWSER_TEST_F(LauncherPageDragTest, Run) {
-  ash::ShellTestApi shell_test_api;
-
-  gfx::Rect display_bounds =
-      display::Screen::GetScreen()
-          ->GetDisplayNearestWindow(browser()->window()->GetNativeWindow())
-          .bounds();
-  gfx::Point start_point = display_bounds.CenterPoint();
-  gfx::Point end_point(start_point);
-  end_point.set_y(10);
-  auto generator = ui_test_utils::DragEventGenerator::CreateForTouch(
-      std::make_unique<ui_test_utils::InterpolatedProducer>(
-          start_point, end_point, base::Milliseconds(1000)));
-
-  ash::PaginationModel* model = ash::ShellTestApi().GetAppListPaginationModel();
-  ASSERT_TRUE(model);
-  PageSwitchWaiter waiter(model);
-  generator->Wait();
-  waiter.Wait();
-}
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc
index 26fe05fc..67bec02 100644
--- a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc
+++ b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc
@@ -675,7 +675,7 @@
     default_app_ids.push_back(default_app_id);
   InsertPinsAfterChromeAndBeforeFirstPinnedApp(syncable_service,
                                                default_app_ids);
-  ListPrefUpdate update(pref_service, GetShelfDefaultPinLayoutPref());
+  ScopedListPrefUpdate update(pref_service, GetShelfDefaultPinLayoutPref());
   update->Append(kDefaultPinnedAppsKey);
 }
 
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_client.cc b/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
index 0424495..8ea7c24 100644
--- a/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
+++ b/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
@@ -380,6 +380,11 @@
   // PrerenderManager.
   content::WebContents* web_contents = controller_->GetWebContents();
   if (web_contents) {
+    if (SearchPrefetchService* search_prefetch_service =
+            SearchPrefetchServiceFactory::GetForProfile(profile_)) {
+      search_prefetch_service->OnURLOpenedFromOmnibox(log, web_contents);
+    }
+
     auto* prerender_manager = PrerenderManager::FromWebContents(web_contents);
     if (!prerender_manager ||
         !prerender_manager->HasSearchResultPagePrerendered()) {
diff --git a/chrome/browser/ui/page_action/page_action_icon_type.h b/chrome/browser/ui/page_action/page_action_icon_type.h
index c6c85900..52cffc9d 100644
--- a/chrome/browser/ui/page_action/page_action_icon_type.h
+++ b/chrome/browser/ui/page_action/page_action_icon_type.h
@@ -5,16 +5,20 @@
 #ifndef CHROME_BROWSER_UI_PAGE_ACTION_PAGE_ACTION_ICON_TYPE_H_
 #define CHROME_BROWSER_UI_PAGE_ACTION_PAGE_ACTION_ICON_TYPE_H_
 
+// Used for histograms, do not reorder. When adding to this enum, please also
+// modify the corresponding references in tools/metrics/histograms/enums.xml
+// and tools/metrics/histograms/metadata/page/histograms.xml and add a static
+// assert below.
 enum class PageActionIconType {
-  kBookmarkStar,
+  kBookmarkStar = 0,
   kClickToCall,
   kCookieControls,
+  kFileSystemAccess,
   kFind,
   kHighEfficiency,
   kIntentPicker,
   kLocalCardMigration,
   kManagePasswords,
-  kFileSystemAccess,
   kPaymentsOfferNotification,
   kPriceTracking,
   kPwaInstall,
@@ -27,9 +31,36 @@
   kSideSearch,
   kSmsRemoteFetcher,
   kTranslate,
-  kVirtualCardManualFallback,
   kVirtualCardEnroll,
+  kVirtualCardManualFallback,
   kZoom,
+  kMaxValue = kZoom,
 };
 
+static_assert(static_cast<int>(PageActionIconType::kBookmarkStar) == 0);
+static_assert(static_cast<int>(PageActionIconType::kClickToCall) == 1);
+static_assert(static_cast<int>(PageActionIconType::kCookieControls) == 2);
+static_assert(static_cast<int>(PageActionIconType::kFileSystemAccess) == 3);
+static_assert(static_cast<int>(PageActionIconType::kFind) == 4);
+static_assert(static_cast<int>(PageActionIconType::kHighEfficiency) == 5);
+static_assert(static_cast<int>(PageActionIconType::kIntentPicker) == 6);
+static_assert(static_cast<int>(PageActionIconType::kLocalCardMigration) == 7);
+static_assert(static_cast<int>(PageActionIconType::kManagePasswords) == 8);
+static_assert(
+    static_cast<int>(PageActionIconType::kPaymentsOfferNotification) == 9);
+static_assert(static_cast<int>(PageActionIconType::kPriceTracking) == 10);
+static_assert(static_cast<int>(PageActionIconType::kPwaInstall) == 11);
+static_assert(static_cast<int>(PageActionIconType::kQRCodeGenerator) == 12);
+static_assert(static_cast<int>(PageActionIconType::kReaderMode) == 13);
+static_assert(static_cast<int>(PageActionIconType::kSaveAutofillAddress) == 14);
+static_assert(static_cast<int>(PageActionIconType::kSaveCard) == 15);
+static_assert(static_cast<int>(PageActionIconType::kSendTabToSelf) == 16);
+static_assert(static_cast<int>(PageActionIconType::kSharingHub) == 17);
+static_assert(static_cast<int>(PageActionIconType::kSideSearch) == 18);
+static_assert(static_cast<int>(PageActionIconType::kSmsRemoteFetcher) == 19);
+static_assert(static_cast<int>(PageActionIconType::kTranslate) == 20);
+static_assert(static_cast<int>(PageActionIconType::kVirtualCardEnroll) == 21);
+static_assert(
+    static_cast<int>(PageActionIconType::kVirtualCardManualFallback) == 22);
+static_assert(static_cast<int>(PageActionIconType::kZoom) == 23);
 #endif  // CHROME_BROWSER_UI_PAGE_ACTION_PAGE_ACTION_ICON_TYPE_H_
diff --git a/chrome/browser/ui/tabs/pinned_tab_codec.cc b/chrome/browser/ui/tabs/pinned_tab_codec.cc
index bed575f8..82ac7ba 100644
--- a/chrome/browser/ui/tabs/pinned_tab_codec.cc
+++ b/chrome/browser/ui/tabs/pinned_tab_codec.cc
@@ -87,11 +87,11 @@
   if (!prefs)
     return;
 
-  ListPrefUpdate update(prefs, prefs::kPinnedTabs);
-  base::Value* values = update.Get();
-  values->ClearList();
+  ScopedListPrefUpdate update(prefs, prefs::kPinnedTabs);
+  base::Value::List& values = update.Get();
+  values.clear();
   for (const auto& tab : tabs)
-    values->Append(EncodeTab(tab.url));
+    values.Append(EncodeTab(tab.url));
 }
 
 // static
diff --git a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
index 56c0012..6a70701 100644
--- a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
+++ b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
@@ -301,10 +301,10 @@
 #endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
 
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->Append(static_cast<int>(policy::SystemFeature::kBrowserSettings));
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->Append(static_cast<int>(policy::SystemFeature::kBrowserSettings));
   }
   EXPECT_FALSE(model.IsEnabledAt(options_index));
 
@@ -315,10 +315,10 @@
 #endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
 
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->ClearList();
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->clear();
   }
   EXPECT_TRUE(model.IsEnabledAt(options_index));
 
diff --git a/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc b/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc
index 885e361..7250a6d 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc
+++ b/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc
@@ -17,10 +17,14 @@
     content::WebContents* web_contents,
     OnTrackPriceCallback on_track_price_callback,
     Type type)
-    : LocationBarBubbleDelegateView(anchor_view, web_contents) {
-  type_ = type;
+    : LocationBarBubbleDelegateView(anchor_view, web_contents),
+      type_(type),
+      action_callback_(std::move(on_track_price_callback)) {
   SetShowCloseButton(true);
   SetButtons(ui::DIALOG_BUTTON_CANCEL | ui::DIALOG_BUTTON_OK);
+  auto run_callback = [](PriceTrackingBubbleDialogView* bubble, bool is_track) {
+    std::move(bubble->action_callback_).Run(is_track);
+  };
   // TODO(meiliang@): Update the body to use the string that includes the
   // bookmark name.
   auto body = l10n_util::GetStringUTF16(
@@ -34,7 +38,8 @@
     SetButtonLabel(ui::DIALOG_BUTTON_CANCEL,
                    l10n_util::GetStringUTF16(
                        IDS_OMNIBOX_TRACK_PRICE_DIALOG_CANCEL_BUTTON));
-    SetAcceptCallback(std::move(on_track_price_callback));
+    SetAcceptCallback(
+        base::BindOnce(run_callback, base::Unretained(this), true));
   } else if (type == PriceTrackingBubbleDialogView::Type::TYPE_NORMAL) {
     SetTitle(
         l10n_util::GetStringUTF16(IDS_OMNIBOX_TRACKING_PRICE_DIALOG_TITLE));
@@ -44,6 +49,8 @@
     SetButtonLabel(ui::DIALOG_BUTTON_CANCEL,
                    l10n_util::GetStringUTF16(
                        IDS_OMNIBOX_TRACKING_PRICE_DIALOG_UNTRACK_BUTTON));
+    SetCancelCallback(
+        base::BindOnce(run_callback, base::Unretained(this), false));
     // TODO(meiliang@): Update the body to use the new normal bubble string.
   }
 
diff --git a/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h b/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h
index 8291de0..bdd991d 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h
+++ b/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h
@@ -14,7 +14,7 @@
 
 class PriceTrackingBubbleDialogView : public LocationBarBubbleDelegateView {
  public:
-  using OnTrackPriceCallback = base::OnceCallback<void()>;
+  using OnTrackPriceCallback = base::OnceCallback<void(bool)>;
 
   enum Type { TYPE_FUE, TYPE_NORMAL };
 
@@ -28,6 +28,7 @@
 
  private:
   Type type_;
+  OnTrackPriceCallback action_callback_;
   views::Label* body_label_;
 
   base::WeakPtrFactory<PriceTrackingBubbleDialogView> weak_factory_{this};
diff --git a/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc b/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc
index 4248730..df1d647 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc
+++ b/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc
@@ -4,15 +4,21 @@
 
 #include "chrome/browser/ui/views/commerce/price_tracking_icon_view.h"
 
+#include "chrome/browser/bookmarks/bookmark_model_factory.h"
+#include "chrome/browser/commerce/shopping_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser_element_identifiers.h"
 #include "chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h"
 #include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
 #include "chrome/common/pref_names.h"
+#include "components/bookmarks/browser/bookmark_model.h"
+#include "components/commerce/core/price_tracking_utils.h"
 #include "components/omnibox/browser/vector_icons.h"
 #include "components/prefs/pref_service.h"
 #include "components/strings/grit/components_strings.h"
+#include "content/public/browser/web_contents.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/gfx/vector_icon_types.h"
 #include "ui/views/view_class_properties.h"
 
 PriceTrackingIconView::PriceTrackingIconView(
@@ -29,6 +35,8 @@
   SetProperty(views::kElementIdentifierKey, kPriceTrackingChipElementId);
 }
 
+PriceTrackingIconView::~PriceTrackingIconView() = default;
+
 views::BubbleDialogDelegate* PriceTrackingIconView::GetBubble() const {
   return bubble_coordinator_.GetBubble();
 }
@@ -44,45 +52,96 @@
 void PriceTrackingIconView::OnExecuting(
     PageActionIconView::ExecuteSource execute_source) {
   if (profile_->GetPrefs()->GetBoolean(prefs::kShouldShowPriceTrackFUEBubble)) {
-    bubble_coordinator_.Show(GetWebContents(),
-                             base::BindOnce(&PriceTrackingIconView::TrackPrice,
-                                            base::Unretained(this)),
-                             PriceTrackingBubbleDialogView::Type::TYPE_FUE);
+    bubble_coordinator_.Show(
+        GetWebContents(),
+        base::BindOnce(&PriceTrackingIconView::UpdatePriceTrackingState,
+                       base::Unretained(this)),
+        PriceTrackingBubbleDialogView::Type::TYPE_FUE);
   } else {
-    bubble_coordinator_.Show(GetWebContents(),
-                             base::BindOnce(&PriceTrackingIconView::TrackPrice,
-                                            base::Unretained(this)),
-                             PriceTrackingBubbleDialogView::Type::TYPE_NORMAL);
+    if (!IsPriceTracking()) {
+      UpdatePriceTrackingState(true);
+    }
 
-    // TODO(meiliang@): Call enable price tracking util and use UpdateImpl() as
-    // the callback if the page is not price tracked yet.
+    bubble_coordinator_.Show(
+        GetWebContents(),
+        base::BindOnce(&PriceTrackingIconView::UpdatePriceTrackingState,
+                       base::Unretained(this)),
+        PriceTrackingBubbleDialogView::Type::TYPE_NORMAL);
   }
 }
 
 const gfx::VectorIcon& PriceTrackingIconView::GetVectorIcon() const {
-  return is_tracking_price_ ? omnibox::kPriceTrackingEnabledFilledIcon
-                            : omnibox::kPriceTrackingDisabledIcon;
+  return IsPriceTracking() ? omnibox::kPriceTrackingEnabledFilledIcon
+                           : omnibox::kPriceTrackingDisabledIcon;
 }
 
 void PriceTrackingIconView::UpdateImpl() {
-  SetLabel(l10n_util::GetStringUTF16(is_tracking_price_
+  SetLabel(l10n_util::GetStringUTF16(IsPriceTracking()
                                          ? IDS_OMNIBOX_TRACKING_PRICE
                                          : IDS_OMNIBOX_TRACK_PRICE));
   SetPaintLabelOverSolidBackground(true);
   SetVisible(is_visible_);
   UpdateIconImage();
+  vector_icon_for_testing_ = &GetVectorIcon();
+  ResetForceMode();
 }
 
 void PriceTrackingIconView::ForceVisibleForTesting(bool is_tracking_price) {
+  force_mode_ = true;
   is_visible_ = true;
   is_tracking_price_ = is_tracking_price;
   UpdateImpl();
 }
 
-void PriceTrackingIconView::TrackPrice() {
-  if (profile_->GetPrefs()->GetBoolean(prefs::kShouldShowPriceTrackFUEBubble)) {
+const std::u16string& PriceTrackingIconView::GetIconLabelForTesting() {
+  return label()->GetText();
+}
+
+const gfx::VectorIcon* PriceTrackingIconView::GetVectorIconForTesting() {
+  return vector_icon_for_testing_;
+}
+
+void PriceTrackingIconView::UpdatePriceTrackingState(bool enable) {
+  if (enable &&
+      profile_->GetPrefs()->GetBoolean(prefs::kShouldShowPriceTrackFUEBubble)) {
     profile_->GetPrefs()->SetBoolean(prefs::kShouldShowPriceTrackFUEBubble,
                                      false);
   }
-  // TODO(meiliang@): Call commerce::SetPriceTrackingStateForBookmark
+
+  bookmarks::BookmarkModel* const model =
+      BookmarkModelFactory::GetForBrowserContext(profile_);
+  const bookmarks::BookmarkNode* node =
+      model->GetMostRecentlyAddedUserNodeForURL(
+          GetWebContents()->GetLastCommittedURL());
+  commerce::SetPriceTrackingStateForBookmark(
+      commerce::ShoppingServiceFactory::GetForBrowserContext(profile_), model,
+      node, enable,
+      base::BindOnce(&PriceTrackingIconView::OnPriceTrackingStateUpdated,
+                     weak_ptr_factory_.GetWeakPtr()));
+
+  force_mode_ = true;
+  is_tracking_price_ = enable;
+  UpdateImpl();
+}
+
+void PriceTrackingIconView::OnPriceTrackingStateUpdated(bool success) {
+  // TODO(crbug.com/1364739): Handles error if |success| is false.
+}
+
+bool PriceTrackingIconView::IsPriceTracking() const {
+  if (force_mode_) {
+    return is_tracking_price_;
+  }
+  if (!GetWebContents())
+    return false;
+  bookmarks::BookmarkModel* const bookmark_model =
+      BookmarkModelFactory::GetForBrowserContext(profile_);
+  const bookmarks::BookmarkNode* bookmark_node =
+      bookmark_model->GetMostRecentlyAddedUserNodeForURL(
+          GetWebContents()->GetLastCommittedURL());
+  return commerce::IsBookmarkPriceTracked(bookmark_model, bookmark_node);
+}
+
+void PriceTrackingIconView::ResetForceMode() {
+  force_mode_ = false;
 }
diff --git a/chrome/browser/ui/views/commerce/price_tracking_icon_view.h b/chrome/browser/ui/views/commerce/price_tracking_icon_view.h
index f12dabb7d..eabf2a0 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_icon_view.h
+++ b/chrome/browser/ui/views/commerce/price_tracking_icon_view.h
@@ -8,6 +8,7 @@
 #include "base/memory/raw_ptr.h"
 #include "chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h"
 #include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
+#include "ui/gfx/vector_icon_types.h"
 
 class Profile;
 
@@ -19,28 +20,43 @@
   PriceTrackingIconView(IconLabelBubbleView::Delegate* parent_delegate,
                         Delegate* delegate,
                         Profile* profile);
+  ~PriceTrackingIconView() override;
 
   // PageActionIconView:
   views::BubbleDialogDelegate* GetBubble() const override;
   std::u16string GetTextForTooltipAndAccessibleName() const override;
   void OnExecuting(PageActionIconView::ExecuteSource execute_source) override;
+  const gfx::VectorIcon& GetVectorIcon() const override;
 
   void ForceVisibleForTesting(bool is_tracking_price);
+  const std::u16string& GetIconLabelForTesting();
+  const gfx::VectorIcon* GetVectorIconForTesting();
 
  protected:
   // PageActionIconView:
-  const gfx::VectorIcon& GetVectorIcon() const override;
   void UpdateImpl() override;
 
  private:
-  void TrackPrice();
+  void UpdatePriceTrackingState(bool enable);
+  void OnPriceTrackingStateUpdated(bool success);
+  bool IsPriceTracking() const;
+  void ResetForceMode();
 
   raw_ptr<Profile> profile_;
   PriceTrackingBubbleCoordinator bubble_coordinator_;
+  // This is used to update this icon view immediately without waiting for the
+  // server response. This is also used in test.
+  bool force_mode_ = false;
+  bool is_tracking_price_ = false;
+  // This is needed for test to verify the current icon because |force_mode_|
+  // need to reset immediately after UpdateImpl() which might change the result
+  // of GetVectorIcon().
+  const gfx::VectorIcon* vector_icon_for_testing_;
 
   // Currently, these are being set by test.
-  bool is_tracking_price_ = false;
   bool is_visible_ = false;
+
+  base::WeakPtrFactory<PriceTrackingIconView> weak_ptr_factory_{this};
 };
 
 #endif  // CHROME_BROWSER_UI_VIEWS_COMMERCE_PRICE_TRACKING_ICON_VIEW_H_
diff --git a/chrome/browser/ui/views/commerce/price_tracking_icon_view_interactive_uitest.cc b/chrome/browser/ui/views/commerce/price_tracking_icon_view_interactive_uitest.cc
index fb3e62f..8de8e29 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_icon_view_interactive_uitest.cc
+++ b/chrome/browser/ui/views/commerce/price_tracking_icon_view_interactive_uitest.cc
@@ -4,24 +4,39 @@
 
 #include "chrome/browser/ui/views/commerce/price_tracking_icon_view.h"
 
+#include "chrome/browser/bookmarks/bookmark_model_factory.h"
+#include "chrome/browser/commerce/shopping_service_factory.h"
+#include "chrome/browser/signin/identity_test_environment_profile_adaptor.h"
 #include "chrome/browser/ui/browser_element_identifiers.h"
 #include "chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/common/pref_names.h"
+#include "chrome/test/base/browser_with_test_window_test.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/interactive_test_utils.h"
+#include "components/bookmarks/browser/bookmark_utils.h"
+#include "components/bookmarks/test/bookmark_test_helpers.h"
 #include "components/commerce/core/commerce_feature_list.h"
+#include "components/commerce/core/mock_shopping_service.h"
+#include "components/commerce/core/test_utils.h"
+#include "components/omnibox/browser/vector_icons.h"
 #include "components/prefs/pref_service.h"
+#include "components/strings/grit/components_strings.h"
 #include "content/public/test/browser_test.h"
 #include "ui/base/interaction/element_identifier.h"
 #include "ui/base/interaction/element_tracker.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/events/base_event_utils.h"
 #include "ui/views/interaction/element_tracker_views.h"
 #include "ui/views/test/button_test_api.h"
 #include "ui/views/test/widget_test.h"
 #include "ui/views/widget/any_widget_observer.h"
 
+namespace {
+const char kTestURL[] = "http://www.google.com";
+}  // namespace
+
 class PriceTrackingIconViewInteractiveTest : public InProcessBrowserTest {
  public:
   PriceTrackingIconViewInteractiveTest() {
@@ -35,6 +50,18 @@
 
   ~PriceTrackingIconViewInteractiveTest() override = default;
 
+  void SetUpOnMainThread() override {
+    bookmarks::BookmarkModel* bookmark_model =
+        BookmarkModelFactory::GetForBrowserContext(browser()->profile());
+    bookmarks::test::WaitForBookmarkModelToLoad(bookmark_model);
+
+    bookmarks::AddIfNotBookmarked(bookmark_model, GURL(kTestURL),
+                                  std::u16string());
+
+    commerce::AddProductBookmark(bookmark_model, u"title", GURL(kTestURL), 0,
+                                 true);
+  }
+
   PriceTrackingIconView* GetChip() {
     auto* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
     auto* location_bar_view = browser_view->toolbar()->location_bar();
@@ -108,3 +135,82 @@
   ClickPriceTrackingIconView();
   EXPECT_TRUE(icon_view->GetBubble());
 }
+
+IN_PROC_BROWSER_TEST_F(PriceTrackingIconViewInteractiveTest,
+                       EnablePriceTrackOnPress) {
+  browser()->profile()->GetPrefs()->SetBoolean(
+      prefs::kShouldShowPriceTrackFUEBubble, false);
+  auto* icon_view = GetChip();
+  icon_view->ForceVisibleForTesting(/*is_tracking_price=*/false);
+
+  ClickPriceTrackingIconView();
+  EXPECT_TRUE(icon_view->GetBubble());
+  EXPECT_EQ(icon_view->GetIconLabelForTesting(),
+            l10n_util::GetStringUTF16(IDS_OMNIBOX_TRACKING_PRICE));
+  EXPECT_STREQ(icon_view->GetVectorIconForTesting()->name,
+               omnibox::kPriceTrackingEnabledFilledIcon.name);
+}
+
+class PriceTrackingBubbleInteractiveTest
+    : public PriceTrackingIconViewInteractiveTest {
+ public:
+  PriceTrackingBubbleInteractiveTest() = default;
+
+  PriceTrackingBubbleInteractiveTest(
+      const PriceTrackingBubbleInteractiveTest&) = delete;
+  PriceTrackingBubbleInteractiveTest& operator=(
+      const PriceTrackingBubbleInteractiveTest&) = delete;
+
+  ~PriceTrackingBubbleInteractiveTest() override = default;
+};
+
+IN_PROC_BROWSER_TEST_F(PriceTrackingBubbleInteractiveTest,
+                       TrackPriceOnFUEBubble) {
+  // Show PriceTackingIconView.
+  auto* icon_view = GetChip();
+  icon_view->ForceVisibleForTesting(/*is_tracking_price=*/false);
+
+  // Click PriceTackingIconView and show the PriceTrackingBubble.
+  ClickPriceTrackingIconView();
+  auto* bubble =
+      static_cast<PriceTrackingBubbleDialogView*>(icon_view->GetBubble());
+  EXPECT_TRUE(bubble);
+  EXPECT_EQ(bubble->GetTypeForTesting(),
+            PriceTrackingBubbleDialogView::Type::TYPE_FUE);
+
+  // Click the Accept(Track price) bubble.
+  bubble->Accept();
+
+  // Verify the PriceTackingIconView updates its state.
+  EXPECT_EQ(icon_view->GetIconLabelForTesting(),
+            l10n_util::GetStringUTF16(IDS_OMNIBOX_TRACKING_PRICE));
+  EXPECT_STREQ(icon_view->GetVectorIconForTesting()->name,
+               omnibox::kPriceTrackingEnabledFilledIcon.name);
+}
+
+IN_PROC_BROWSER_TEST_F(PriceTrackingBubbleInteractiveTest,
+                       UnrackPriceOnNormalBubble) {
+  browser()->profile()->GetPrefs()->SetBoolean(
+      prefs::kShouldShowPriceTrackFUEBubble, false);
+
+  // Show PriceTackingIconView.
+  auto* icon_view = GetChip();
+  icon_view->ForceVisibleForTesting(/*is_tracking_price=*/false);
+
+  // Click PriceTackingIconView and show the PriceTrackingBubble.
+  ClickPriceTrackingIconView();
+  auto* bubble =
+      static_cast<PriceTrackingBubbleDialogView*>(icon_view->GetBubble());
+  EXPECT_TRUE(bubble);
+  EXPECT_EQ(bubble->GetTypeForTesting(),
+            PriceTrackingBubbleDialogView::Type::TYPE_NORMAL);
+
+  // Click the Cancel(Untrack) button.
+  bubble->Cancel();
+
+  // Verify the PriceTackingIconView updates its state.
+  EXPECT_EQ(icon_view->GetIconLabelForTesting(),
+            l10n_util::GetStringUTF16(IDS_OMNIBOX_TRACK_PRICE));
+  EXPECT_STREQ(icon_view->GetVectorIconForTesting()->name,
+               omnibox::kPriceTrackingDisabledIcon.name);
+}
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
index 254cf5d..fac869fe 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
@@ -11,6 +11,7 @@
 #include "base/callback.h"
 #include "base/containers/contains.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/ranges/algorithm.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/media/webrtc/desktop_media_list.h"
@@ -806,10 +807,8 @@
 
   size_t fallback_pane_index = std::distance(
       categories_.begin(),
-      std::find_if(
-          categories_.begin(), categories_.end(), [](const auto& category) {
-            return category.type == DesktopMediaList::Type::kWebContents;
-          }));
+      base::ranges::find(categories_, DesktopMediaList::Type::kWebContents,
+                         &DisplaySurfaceCategory::type));
 
   if (fallback_pane_index >= categories_.size()) {
     Reject();
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index 6ec4d6e..c5c0bc6e 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -98,6 +98,7 @@
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/render_widget_host_view.h"
 #include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_contents_observer.h"
 #include "content/public/common/content_features.h"
 #include "content/public/common/url_constants.h"
 #include "extensions/browser/extension_registry.h"
@@ -785,6 +786,9 @@
 }
 
 void LocationBarView::Update(WebContents* contents) {
+  if (contents)
+    page_action_icon_controller_->UpdateWebContents(contents);
+
   RefreshContentSettingViews();
 
   RefreshPageActionIconViews();
diff --git a/chrome/browser/ui/views/location_bar/star_view.cc b/chrome/browser/ui/views/location_bar/star_view.cc
index c837ba3..c9232ce 100644
--- a/chrome/browser/ui/views/location_bar/star_view.cc
+++ b/chrome/browser/ui/views/location_bar/star_view.cc
@@ -50,7 +50,8 @@
                          IDC_BOOKMARK_THIS_TAB,
                          icon_label_bubble_delegate,
                          page_action_icon_delegate,
-                         "BookmarksStar"),
+                         "BookmarksStar",
+                         false),
       browser_(browser) {
   DCHECK(browser_);
 
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_controller.cc b/chrome/browser/ui/views/page_action/page_action_icon_controller.cc
index 8126842..63791877 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_controller.cc
+++ b/chrome/browser/ui/views/page_action/page_action_icon_controller.cc
@@ -6,7 +6,10 @@
 
 #include "base/bind.h"
 #include "base/feature_list.h"
+#include "base/immediate_crash.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/ranges/algorithm.h"
+#include "base/strings/strcat.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h"
 #include "chrome/browser/sharing/sms/sms_remote_fetcher_ui_controller.h"
@@ -41,10 +44,20 @@
 #include "chrome/browser/ui/views/toolbar/toolbar_icon_container_view.h"
 #include "chrome/browser/ui/views/translate/translate_icon_view.h"
 #include "chrome/common/chrome_features.h"
+#include "content/public/browser/navigation_handle.h"
 #include "content/public/common/content_features.h"
 #include "ui/views/animation/ink_drop.h"
 #include "ui/views/layout/box_layout.h"
 
+namespace {
+
+void RecordCTRMetrics(const char* name, PageActionCTREvent event) {
+  base::UmaHistogramEnumeration(
+      base::StrCat({"PageActionController.", name, ".Icon.CTR"}), event);
+}
+
+}  // namespace
+
 PageActionIconController::PageActionIconController() = default;
 PageActionIconController::~PageActionIconController() = default;
 
@@ -67,6 +80,7 @@
       icon->SetIconColor(*params.icon_color);
     if (params.font_list)
       icon->SetFontList(*params.font_list);
+    icon->AddPageIconViewObserver(this);
     auto* icon_ptr = icon.get();
     if (params.button_observer)
       params.button_observer->ObserveButton(icon_ptr);
@@ -253,6 +267,16 @@
   return result != page_action_icon_views_.end() ? result->second : nullptr;
 }
 
+PageActionIconType PageActionIconController::GetIconType(
+    PageActionIconView* view) {
+  for (auto& page_action : page_action_icon_views_) {
+    if (page_action.second == view) {
+      return page_action.first;
+    }
+  }
+  IMMEDIATE_CRASH();
+}
+
 void PageActionIconController::UpdateAll() {
   for (auto icon_item : page_action_icon_views_)
     icon_item.second->Update();
@@ -289,6 +313,23 @@
     icon_item.second->SetFontList(font_list);
 }
 
+void PageActionIconController::OnPageActionIconViewShown(
+    PageActionIconView* view) {
+  if (!view->should_record_metrics_if_shown()) {
+    return;
+  }
+  RecordOverallMetrics();
+  RecordIndividualMetrics(GetIconType(view), view);
+}
+
+void PageActionIconController::OnPageActionIconViewClicked(
+    PageActionIconView* view) {
+  if (!view->ephemeral()) {
+    return;
+  }
+  RecordClickMetrics(GetIconType(view), view);
+}
+
 void PageActionIconController::ZoomChangedForActiveTab(bool can_show_bubble) {
   if (zoom_icon_)
     zoom_icon_->ZoomChangedForActiveTab(can_show_bubble);
@@ -306,3 +347,72 @@
 void PageActionIconController::OnDefaultZoomLevelChanged() {
   ZoomChangedForActiveTab(false);
 }
+
+void PageActionIconController::UpdateWebContents(
+    content::WebContents* contents) {
+  Observe(contents);
+}
+
+void PageActionIconController::ReadyToCommitNavigation(
+    content::NavigationHandle* navigation_handle) {
+  if (!navigation_handle->IsInPrimaryMainFrame()) {
+    return;
+  }
+  for (auto icon_item : page_action_icon_views_) {
+    if (!icon_item.second->ephemeral()) {
+      continue;
+    }
+    // Reset metrics logging, so that all page actions will log metrics the
+    // first time they are displayed on the new page.
+    icon_item.second->set_should_record_metrics_if_shown(true);
+  }
+}
+
+void PageActionIconController::PrimaryPageChanged(content::Page& page) {
+  // When the primary page has changed, log metrics for individual page actions
+  // as well as overall metrics.
+  RecordOverallMetrics();
+  for (auto icon_item : page_action_icon_views_) {
+    if (!icon_item.second->ephemeral() || !icon_item.second->GetVisible() ||
+        !icon_item.second->should_record_metrics_if_shown()) {
+      continue;
+    }
+    RecordIndividualMetrics(icon_item.first, icon_item.second);
+  }
+}
+
+int PageActionIconController::VisibleEphemeralActionCount() const {
+  return base::ranges::count_if(
+      page_action_icon_views_,
+      [](std::pair<PageActionIconType, PageActionIconView*> view) {
+        return view.second->ephemeral() && view.second->GetVisible();
+      });
+}
+
+void PageActionIconController::RecordOverallMetrics() const {
+  base::UmaHistogramExactLinear("PageActionController.NumberActionsShown",
+                                VisibleEphemeralActionCount(), 20);
+}
+
+void PageActionIconController::RecordIndividualMetrics(
+    PageActionIconType type,
+    PageActionIconView* view) const {
+  CHECK(view->ephemeral());
+  base::UmaHistogramEnumeration("PageActionController.Icon.CTR",
+                                PageActionCTREvent::kShown);
+  RecordCTRMetrics(view->name_for_histograms(), PageActionCTREvent::kShown);
+  base::UmaHistogramEnumeration("PageActionController.ActionTypeShown", type);
+  view->set_should_record_metrics_if_shown(false);
+}
+
+void PageActionIconController::RecordClickMetrics(
+    PageActionIconType type,
+    PageActionIconView* view) const {
+  CHECK(view->ephemeral());
+  base::UmaHistogramEnumeration("PageActionController.Icon.CTR",
+                                PageActionCTREvent::kClicked);
+  RecordCTRMetrics(view->name_for_histograms(), PageActionCTREvent::kClicked);
+  base::UmaHistogramExactLinear(
+      "PageActionController.Icon.NumberActionsShownWhenClicked",
+      VisibleEphemeralActionCount(), 20);
+}
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_controller.h b/chrome/browser/ui/views/page_action/page_action_icon_controller.h
index a916444..3f902a7 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_controller.h
+++ b/chrome/browser/ui/views/page_action/page_action_icon_controller.h
@@ -10,8 +10,12 @@
 #include "base/scoped_observation.h"
 #include "chrome/browser/ui/page_action/page_action_icon_type.h"
 #include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
+#include "chrome/browser/ui/views/page_action/page_action_icon_view_observer.h"
 #include "components/zoom/zoom_event_manager.h"
 #include "components/zoom/zoom_event_manager_observer.h"
+#include "content/public/browser/navigation_handle.h"
+#include "content/public/browser/page.h"
+#include "content/public/browser/web_contents_observer.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/gfx/color_palette.h"
 #include "ui/views/view.h"
@@ -20,7 +24,9 @@
 struct PageActionIconParams;
 class ZoomView;
 
-class PageActionIconController : public zoom::ZoomEventManagerObserver {
+class PageActionIconController : public PageActionIconViewObserver,
+                                 public zoom::ZoomEventManagerObserver,
+                                 public content::WebContentsObserver {
  public:
   PageActionIconController();
   PageActionIconController(const PageActionIconController&) = delete;
@@ -31,6 +37,7 @@
             PageActionIconContainer* icon_container);
 
   PageActionIconView* GetIconView(PageActionIconType type);
+  PageActionIconType GetIconType(PageActionIconView* view);
 
   // Updates the visual state of all enabled page action icons.
   void UpdateAll();
@@ -50,14 +57,44 @@
   // See comment in browser_window.h for more info.
   void ZoomChangedForActiveTab(bool can_show_bubble);
 
+  // Observe the new web contents.
+  void UpdateWebContents(content::WebContents* contents);
+
+  // WebContentsObserver
+  void ReadyToCommitNavigation(
+      content::NavigationHandle* navigation_handle) override;
+  void PrimaryPageChanged(content::Page& page) override;
+
   std::vector<const PageActionIconView*> GetPageActionIconViewsForTesting()
       const;
 
  private:
+  // PageActionIconViewObserver:
+  void OnPageActionIconViewShown(PageActionIconView* view) override;
+  void OnPageActionIconViewClicked(PageActionIconView* view) override;
+
   // ZoomEventManagerObserver:
   // Updates the view for the zoom icon when default zoom levels change.
   void OnDefaultZoomLevelChanged() override;
 
+  // Returns the number of page actions which are currently visible. Does not
+  // include permanent page actions, such as the bookmarks star and sharing
+  // hub.
+  int VisibleEphemeralActionCount() const;
+
+  // Logs UMA data about the set of currently visible page actions overall, eg.
+  // the total number of page actions shown.
+  void RecordOverallMetrics() const;
+
+  // Logs UMA data about an individual visible page action, eg. the type of
+  // action shown.
+  void RecordIndividualMetrics(PageActionIconType type,
+                               PageActionIconView* view) const;
+
+  // Logs UMA data when an individual visible page action is clicked.
+  void RecordClickMetrics(PageActionIconType type,
+                          PageActionIconView* view) const;
+
   raw_ptr<PageActionIconContainer> icon_container_ = nullptr;
 
   raw_ptr<ZoomView> zoom_icon_ = nullptr;
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.cc b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
index bc8ef3d..46d8e80 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view.cc
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/ui/omnibox/omnibox_theme.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h"
 #include "chrome/browser/ui/views/page_action/page_action_icon_loading_indicator_view.h"
+#include "chrome/browser/ui/views/page_action/page_action_icon_view_observer.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -60,12 +61,14 @@
     IconLabelBubbleView::Delegate* parent_delegate,
     PageActionIconView::Delegate* delegate,
     const char* name_for_histograms,
+    bool ephemeral,
     const gfx::FontList& font_list)
     : IconLabelBubbleView(font_list, parent_delegate),
       command_updater_(command_updater),
       delegate_(delegate),
       command_id_(command_id),
-      name_for_histograms_(name_for_histograms) {
+      name_for_histograms_(name_for_histograms),
+      ephemeral_(ephemeral) {
   DCHECK(delegate_);
 
   image()->SetFlipCanvasOnPaintForRTLUI(true);
@@ -79,6 +82,16 @@
 
 PageActionIconView::~PageActionIconView() = default;
 
+void PageActionIconView::AddPageIconViewObserver(
+    PageActionIconViewObserver* observer) {
+  observer_list_.AddObserver(observer);
+}
+
+void PageActionIconView::RemovePageIconViewObserver(
+    PageActionIconViewObserver* observer) {
+  observer_list_.RemoveObserver(observer);
+}
+
 bool PageActionIconView::IsBubbleShowing() const {
   // If the bubble is being destroyed, it's considered showing though it may be
   // already invisible currently.
@@ -134,6 +147,9 @@
 }
 
 void PageActionIconView::NotifyClick(const ui::Event& event) {
+  for (PageActionIconViewObserver& observer : observer_list_) {
+    observer.OnPageActionIconViewClicked(this);
+  }
   // Intentionally skip the immediate parent function
   // IconLabelBubbleView::NotifyClick(). It calls ShowBubble() which
   // is redundant here since we use Chrome command to show the bubble.
@@ -282,6 +298,16 @@
   loading_indicator_->SetVisible(false);
 }
 
+void PageActionIconView::SetVisible(bool visible) {
+  bool was_visible = GetVisible();
+  IconLabelBubbleView::SetVisible(visible);
+  if (!was_visible && visible) {
+    for (PageActionIconViewObserver& observer : observer_list_) {
+      observer.OnPageActionIconViewShown(this);
+    }
+  }
+}
+
 BEGIN_METADATA(PageActionIconView, IconLabelBubbleView)
 ADD_PROPERTY_METADATA(SkColor, IconColor, ui::metadata::SkColorConverter)
 ADD_PROPERTY_METADATA(bool, Active)
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.h b/chrome/browser/ui/views/page_action/page_action_icon_view.h
index e782a41..3f48f65 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view.h
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view.h
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/memory/raw_ptr.h"
+#include "base/observer_list.h"
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/views/location_bar/icon_label_bubble_view.h"
 #include "third_party/skia/include/core/SkColor.h"
@@ -20,6 +21,7 @@
 class CommandUpdater;
 class OmniboxView;
 class PageActionIconLoadingIndicatorView;
+class PageActionIconViewObserver;
 
 namespace content {
 class WebContents;
@@ -33,6 +35,13 @@
 class BubbleDialogDelegate;
 }
 
+// Used for histograms, do not reorder.
+enum class PageActionCTREvent {
+  kShown = 0,
+  kClicked,
+  kMaxValue = kClicked,
+};
+
 // Represents an inbuilt (as opposed to an extension) page action icon that
 // shows a bubble when clicked.
 class PageActionIconView : public IconLabelBubbleView {
@@ -62,6 +71,9 @@
   PageActionIconView& operator=(const PageActionIconView&) = delete;
   ~PageActionIconView() override;
 
+  void AddPageIconViewObserver(PageActionIconViewObserver* observer);
+  void RemovePageIconViewObserver(PageActionIconViewObserver* observer);
+
   // Updates the color of the icon, this must be set before the icon is drawn.
   void SetIconColor(SkColor icon_color);
   SkColor GetIconColor() const;
@@ -83,6 +95,14 @@
   SkColor GetLabelColorForTesting() const;
 
   const char* name_for_histograms() const { return name_for_histograms_; }
+  bool ephemeral() const { return ephemeral_; }
+
+  bool should_record_metrics_if_shown() const {
+    return should_record_metrics_if_shown_;
+  }
+  void set_should_record_metrics_if_shown(bool record) {
+    should_record_metrics_if_shown_ = record;
+  }
 
   void ExecuteForTesting();
 
@@ -92,6 +112,9 @@
   // doing so will cause the indicator being invisible. Investigate and fix.
   void InstallLoadingIndicatorForTesting();
 
+  // IconLabelBubbleView:
+  void SetVisible(bool visible) override;
+
   PageActionIconLoadingIndicatorView* loading_indicator_for_testing() {
     return loading_indicator_;
   }
@@ -108,6 +131,7 @@
                      IconLabelBubbleView::Delegate* parent_delegate,
                      Delegate* delegate,
                      const char* name_for_histograms,
+                     bool ephemeral = true,
                      const gfx::FontList& = gfx::FontList());
 
   // Returns true if a related bubble is showing.
@@ -191,13 +215,21 @@
   // String that represents the page action type for metrics purposes.
   const char* const name_for_histograms_;
 
+  // Should be true if this page action should only sometimes be displayed.
+  const bool ephemeral_;
+
   // The active node_data. The precise definition of "active" is unique to each
   // subclass, but generally indicates that the associated feature is acting on
   // the web page.
   bool active_ = false;
 
+  // Whether metrics should be recorded when setting this to visible.
+  bool should_record_metrics_if_shown_ = false;
+
   // The loading indicator, showing a throbber animation on top of the icon.
   raw_ptr<PageActionIconLoadingIndicatorView> loading_indicator_ = nullptr;
+
+  base::ObserverList<PageActionIconViewObserver>::Unchecked observer_list_;
 };
 
 #endif  // CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_VIEW_H_
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view_observer.h b/chrome/browser/ui/views/page_action/page_action_icon_view_observer.h
new file mode 100644
index 0000000..8e42dea
--- /dev/null
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view_observer.h
@@ -0,0 +1,22 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_VIEW_OBSERVER_H_
+#define CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_VIEW_OBSERVER_H_
+
+class PageActionIconView;
+
+class PageActionIconViewObserver {
+ public:
+  // Called after PageActionIconView::SetVisible() if going from false to true.
+  virtual void OnPageActionIconViewShown(PageActionIconView* view) {}
+
+  // Called at the beginning of PageActionIconView::NotifyClick().
+  virtual void OnPageActionIconViewClicked(PageActionIconView* view) {}
+
+ protected:
+  virtual ~PageActionIconViewObserver() = default;
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_VIEW_OBSERVER_H_
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc b/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc
index 4131027..fe35db4 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc
@@ -69,6 +69,7 @@
                            parent_delegate,
                            delegate,
                            "TestName",
+                           true,
                            font_list) {
     SetUpForInOutAnimation();
   }
diff --git a/chrome/browser/ui/views/sharing_hub/sharing_hub_icon_view.cc b/chrome/browser/ui/views/sharing_hub/sharing_hub_icon_view.cc
index 3e1f48d..4dc922ce 100644
--- a/chrome/browser/ui/views/sharing_hub/sharing_hub_icon_view.cc
+++ b/chrome/browser/ui/views/sharing_hub/sharing_hub_icon_view.cc
@@ -53,7 +53,8 @@
                          IDC_SHARING_HUB,
                          icon_label_bubble_delegate,
                          page_action_icon_delegate,
-                         "SharingHub") {
+                         "SharingHub",
+                         false) {
   SetID(VIEW_ID_SHARING_HUB_BUTTON);
   SetVisible(false);
   SetLabel(
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc
index 6565576..bd5f776 100644
--- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc
+++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc
@@ -638,8 +638,8 @@
 
 void NewTabPageHandler::SetModuleDisabled(const std::string& module_id,
                                           bool disabled) {
-  ListPrefUpdate update(profile_->GetPrefs(), prefs::kNtpDisabledModules);
-  base::Value::List& list = update->GetList();
+  ScopedListPrefUpdate update(profile_->GetPrefs(), prefs::kNtpDisabledModules);
+  base::Value::List& list = update.Get();
   base::Value module_id_value(module_id);
   if (disabled) {
     if (!base::Contains(list, module_id_value))
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
index 13fdbf35..c142344d 100644
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -671,10 +671,10 @@
   const base::Value::List& app_page_names =
       prefs->GetList(prefs::kNtpAppPageNames);
   if (!app_page_names.size()) {
-    ListPrefUpdate update(prefs, prefs::kNtpAppPageNames);
-    base::Value* list = update.Get();
-    list->Append(l10n_util::GetStringUTF16(IDS_APP_DEFAULT_PAGE_NAME));
-    dictionary->Set("appPageNames", list->Clone());
+    ScopedListPrefUpdate update(prefs, prefs::kNtpAppPageNames);
+    base::Value::List& list = update.Get();
+    list.Append(l10n_util::GetStringUTF16(IDS_APP_DEFAULT_PAGE_NAME));
+    dictionary->Set("appPageNames", list.Clone());
   } else {
     dictionary->Set("appPageNames", app_page_names.Clone());
   }
@@ -1170,12 +1170,12 @@
 
   base::AutoReset<bool> auto_reset(&ignore_changes_, true);
   PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
-  ListPrefUpdate update(prefs, prefs::kNtpAppPageNames);
-  base::Value* list = update.Get();
-  if (page_index < list->GetListDeprecated().size()) {
-    list->GetListDeprecated()[page_index] = base::Value(name);
+  ScopedListPrefUpdate update(prefs, prefs::kNtpAppPageNames);
+  base::Value::List& list = update.Get();
+  if (page_index < list.size()) {
+    list[page_index] = base::Value(name);
   } else {
-    list->Append(name);
+    list.Append(name);
   }
 }
 
diff --git a/chrome/browser/ui/webui/realbox/realbox_handler.cc b/chrome/browser/ui/webui/realbox/realbox_handler.cc
index 3f9465b..ca7050e7 100644
--- a/chrome/browser/ui/webui/realbox/realbox_handler.cc
+++ b/chrome/browser/ui/webui/realbox/realbox_handler.cc
@@ -645,6 +645,10 @@
 
   OmniboxEventGlobalTracker::GetInstance()->OnURLOpened(&log);
 
+  if (auto* search_prefetch_service =
+          SearchPrefetchServiceFactory::GetForProfile(profile_)) {
+    search_prefetch_service->OnURLOpenedFromOmnibox(&log, web_contents_);
+  }
   predictors::AutocompleteActionPredictorFactory::GetForProfile(profile_)
       ->OnOmniboxOpenedUrl(log);
 
diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
index b100975..df29cd1 100644
--- a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
+++ b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
@@ -6,7 +6,6 @@
 
 #include <stdint.h>
 
-#include <algorithm>
 #include <string>
 
 #include "base/bind.h"
@@ -16,6 +15,7 @@
 #include "base/feature_list.h"
 #include "base/no_destructor.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/time/clock.h"
@@ -317,10 +317,8 @@
   } else {
     // |stages_| must be sorted by decreasing TimeDelta.
     std::array<base::TimeDelta, kNumStages>::iterator it =
-        std::find_if(stages_.begin(), stages_.end(),
-                     [time_passed](const base::TimeDelta& delta) {
-                       return time_passed >= delta;
-                     });
+        base::ranges::lower_bound(stages_, time_passed,
+                                  base::ranges::greater());
     if (it != stages_.end())
       new_stage = StageIndexToAnnoyanceLevel(it - stages_.begin());
     if (it != stages_.begin())
diff --git a/chrome/browser/vr/elements/ui_element.cc b/chrome/browser/vr/elements/ui_element.cc
index 1c8b443..5104926 100644
--- a/chrome/browser/vr/elements/ui_element.cc
+++ b/chrome/browser/vr/elements/ui_element.cc
@@ -7,8 +7,10 @@
 #include <limits>
 
 #include "base/check_op.h"
+#include "base/containers/adapters.h"
 #include "base/cxx17_backports.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/time/time.h"
@@ -685,10 +687,8 @@
   to_remove->parent_ = nullptr;
   size_t old_size = children_.size();
 
-  auto it = std::find_if(std::begin(children_), std::end(children_),
-                         [to_remove](const std::unique_ptr<UiElement>& child) {
-                           return child.get() == to_remove;
-                         });
+  auto it = base::ranges::find(children_, to_remove,
+                               &std::unique_ptr<UiElement>::get);
   DCHECK(it != std::end(children_));
 
   std::unique_ptr<UiElement> removed(it->release());
@@ -1001,16 +1001,13 @@
 }
 
 UiElement* UiElement::FirstLaidOutChild() const {
-  auto i = std::find_if(
-      children_.begin(), children_.end(),
-      [](const std::unique_ptr<UiElement>& e) { return e->requires_layout(); });
+  auto i = base::ranges::find_if(children_, &UiElement::requires_layout);
   return i == children_.end() ? nullptr : i->get();
 }
 
 UiElement* UiElement::LastLaidOutChild() const {
-  auto i = std::find_if(
-      children_.rbegin(), children_.rend(),
-      [](const std::unique_ptr<UiElement>& e) { return e->requires_layout(); });
+  auto i = base::ranges::find_if(base::Reversed(children_),
+                                 &UiElement::requires_layout);
   return i == children_.rend() ? nullptr : i->get();
 }
 
diff --git a/chrome/browser/web_applications/web_app.cc b/chrome/browser/web_applications/web_app.cc
index e060e3b..d40e3be5 100644
--- a/chrome/browser/web_applications/web_app.cc
+++ b/chrome/browser/web_applications/web_app.cc
@@ -593,12 +593,6 @@
 base::Value WebApp::AsDebugValue() const {
   base::Value root(base::Value::Type::DICTIONARY);
 
-  auto ConvertToString = [](const auto& value) {
-    std::stringstream ss;
-    ss << value;
-    return ss.str();
-  };
-
   auto ConvertList = [](const auto& list) {
     base::Value list_json(base::Value::Type::LIST);
     for (const auto& item : list)
@@ -655,7 +649,7 @@
   root.SetStringKey("dark_mode_background_color",
                     ColorToString(dark_mode_background_color_));
 
-  root.SetStringKey("capture_links", ConvertToString(capture_links_));
+  root.SetStringKey("capture_links", base::StreamableToString(capture_links_));
 
   root.SetKey("chromeos_data",
               chromeos_data_ ? chromeos_data_->AsDebugValue() : base::Value());
@@ -682,7 +676,8 @@
       "downloaded_icon_sizes", base::Value(base::Value::Type::DICTIONARY));
   for (IconPurpose purpose : kIconPurposes) {
     downloaded_icon_sizes_json.SetKey(
-        ConvertToString(purpose), ConvertList(downloaded_icon_sizes(purpose)));
+        base::StreamableToString(purpose),
+        ConvertList(downloaded_icon_sizes(purpose)));
   }
 
   base::Value& downloaded_shortcuts_menu_icons_sizes =
@@ -693,7 +688,7 @@
     base::Value entry(base::Value::Type::DICTIONARY);
     entry.SetIntKey("index", i);
     for (IconPurpose purpose : kIconPurposes) {
-      entry.SetKey(ConvertToString(purpose),
+      entry.SetKey(base::StreamableToString(purpose),
                    ConvertList(icon_sizes.GetSizesForPurpose(purpose)));
     }
     downloaded_shortcuts_menu_icons_sizes.Append(std::move(entry));
@@ -718,13 +713,15 @@
   }
 
   base::Value::Dict external_map;
-  for (auto it : management_to_external_config_map_)
-    external_map.Set(ConvertToString(it.first), it.second.AsDebugValue());
+  for (auto it : management_to_external_config_map_) {
+    external_map.Set(base::StreamableToString(it.first),
+                     it.second.AsDebugValue());
+  }
 
   root.SetKey("management_type_to_external_configuration_map",
               base::Value(std::move(external_map)));
 
-  root.SetStringKey("install_time", ConvertToString(install_time_));
+  root.SetStringKey("install_time", base::StreamableToString(install_time_));
 
   root.SetBoolKey("is_generated_icon", is_generated_icon_);
 
@@ -737,15 +734,17 @@
 
   root.SetBoolKey("is_uninstalling", is_uninstalling_);
 
-  root.SetStringKey("last_badging_time", ConvertToString(last_badging_time_));
+  root.SetStringKey("last_badging_time",
+                    base::StreamableToString(last_badging_time_));
 
-  root.SetStringKey("last_launch_time", ConvertToString(last_launch_time_));
+  root.SetStringKey("last_launch_time",
+                    base::StreamableToString(last_launch_time_));
 
   if (launch_handler_) {
     base::Value& launch_handler_json = *root.SetKey(
         "launch_handler", base::Value(base::Value::Type::DICTIONARY));
     launch_handler_json.SetStringKey(
-        "client_mode", ConvertToString(launch_handler_->client_mode));
+        "client_mode", base::StreamableToString(launch_handler_->client_mode));
   } else {
     root.SetKey("launch_handler", base::Value());
   }
@@ -755,15 +754,15 @@
   root.SetKey("manifest_id", ConvertOptional(manifest_id_));
 
   root.SetStringKey("manifest_update_time",
-                    ConvertToString(manifest_update_time_));
+                    base::StreamableToString(manifest_update_time_));
 
-  root.SetStringKey("manifest_url", ConvertToString(manifest_url_));
+  root.SetStringKey("manifest_url", base::StreamableToString(manifest_url_));
 
   root.SetStringKey("lock_screen_start_url",
-                    ConvertToString(lock_screen_start_url_));
+                    base::StreamableToString(lock_screen_start_url_));
 
   root.SetStringKey("note_taking_new_note_url",
-                    ConvertToString(note_taking_new_note_url_));
+                    base::StreamableToString(note_taking_new_note_url_));
 
   root.SetStringKey("parent_app_id",
                     parent_app_id_ ? *parent_app_id_ : AppId());
@@ -800,7 +799,7 @@
           ? RunOnOsLoginModeToString(*run_on_os_login_os_integration_state_)
           : "not set");
 
-  root.SetStringKey("scope", ConvertToString(scope_));
+  root.SetStringKey("scope", base::StreamableToString(scope_));
 
   root.SetKey("share_target",
               share_target_ ? share_target_->AsDebugValue() : base::Value());
@@ -812,11 +811,13 @@
       *root.SetKey("sources", base::Value(base::Value::Type::LIST));
   for (int i = WebAppManagement::Type::kMinValue;
        i <= WebAppManagement::Type::kMaxValue; ++i) {
-    if (sources_[i])
-      sources.Append(ConvertToString(static_cast<WebAppManagement::Type>(i)));
+    if (sources_[i]) {
+      sources.Append(
+          base::StreamableToString(static_cast<WebAppManagement::Type>(i)));
+    }
   }
 
-  root.SetStringKey("start_url", ConvertToString(start_url_));
+  root.SetStringKey("start_url", base::StreamableToString(start_url_));
 
   root.SetKey("sync_fallback_data", sync_fallback_data_.AsDebugValue());
 
@@ -846,21 +847,23 @@
     if (absl::holds_alternative<TabStrip::Visibility>(
             tab_strip_.value().new_tab_button)) {
       tab_strip_json.SetStringKey(
-          "new_tab_button", ConvertToString(absl::get<TabStrip::Visibility>(
-                                tab_strip_.value().new_tab_button)));
+          "new_tab_button",
+          base::StreamableToString(absl::get<TabStrip::Visibility>(
+              tab_strip_.value().new_tab_button)));
     } else {
       base::Value& new_tab_button_json = *tab_strip_json.SetKey(
           "new_tab_button", base::Value(base::Value::Type::DICTIONARY));
       new_tab_button_json.SetStringKey(
-          "url", ConvertToString(absl::get<blink::Manifest::NewTabButtonParams>(
-                                     tab_strip_.value().new_tab_button)
-                                     .url.value_or(GURL(""))));
+          "url", base::StreamableToString(
+                     absl::get<blink::Manifest::NewTabButtonParams>(
+                         tab_strip_.value().new_tab_button)
+                         .url.value_or(GURL(""))));
     }
 
     if (absl::holds_alternative<TabStrip::Visibility>(
             tab_strip_.value().home_tab)) {
       tab_strip_json.SetStringKey(
-          "home_tab", ConvertToString(absl::get<TabStrip::Visibility>(
+          "home_tab", base::StreamableToString(absl::get<TabStrip::Visibility>(
                           tab_strip_.value().home_tab)));
     } else {
       tab_strip_json.SetKey("home_tab",
diff --git a/chrome/browser/web_applications/web_app_constants.cc b/chrome/browser/web_applications/web_app_constants.cc
index a44478d5..32604ed 100644
--- a/chrome/browser/web_applications/web_app_constants.cc
+++ b/chrome/browser/web_applications/web_app_constants.cc
@@ -16,6 +16,7 @@
 static_assert(WebAppManagement::kMinValue == 0,
               "Source enum should be zero based");
 
+namespace WebAppManagement {
 std::ostream& operator<<(std::ostream& os, WebAppManagement::Type type) {
   switch (type) {
     case WebAppManagement::Type::kSystem:
@@ -36,6 +37,7 @@
       return os << "CommandLine";
   }
 }
+}  // namespace WebAppManagement
 
 static_assert(OsHookType::kShortcuts == 0,
               "OsHookType enum should be zero based");
diff --git a/chrome/browser/web_applications/web_app_constants.h b/chrome/browser/web_applications/web_app_constants.h
index 9607f2ca..df5e541 100644
--- a/chrome/browser/web_applications/web_app_constants.h
+++ b/chrome/browser/web_applications/web_app_constants.h
@@ -53,9 +53,9 @@
   kDefault,
   kMaxValue = kDefault,
 };
-}  // namespace WebAppManagement
 
 std::ostream& operator<<(std::ostream& os, WebAppManagement::Type type);
+}  // namespace WebAppManagement
 
 // Type of OS hook.
 //
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
index 2b62322..017cc36 100644
--- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc
+++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
@@ -243,8 +243,7 @@
 void AuthenticatorRequestDialogModel::
     StartGuidedFlowForMostLikelyTransportOrShowMechanismSelection() {
   const auto priority_mechanism_it =
-      std::find_if(mechanisms_.begin(), mechanisms_.end(),
-                   [](const Mechanism& m) -> bool { return m.priority; });
+      base::ranges::find_if(mechanisms_, &Mechanism::priority);
 
   if (pending_step_) {
     SetCurrentStep(*pending_step_);
@@ -1228,12 +1227,9 @@
 
   auto& authenticators =
       ephemeral_state_.saved_authenticators_.authenticator_list();
-  auto platform_authenticator_it =
-      std::find_if(authenticators.begin(), authenticators.end(),
-                   [](const auto& authenticator) {
-                     return authenticator.transport ==
-                            device::FidoTransportProtocol::kInternal;
-                   });
+  auto platform_authenticator_it = base::ranges::find(
+      authenticators, device::FidoTransportProtocol::kInternal,
+      &AuthenticatorReference::transport);
 
   if (platform_authenticator_it == authenticators.end()) {
     return;
diff --git a/chrome/browser/webauthn/observable_authenticator_list.cc b/chrome/browser/webauthn/observable_authenticator_list.cc
index 0cdcdef..9727ca8 100644
--- a/chrome/browser/webauthn/observable_authenticator_list.cc
+++ b/chrome/browser/webauthn/observable_authenticator_list.cc
@@ -4,9 +4,9 @@
 
 #include "chrome/browser/webauthn/observable_authenticator_list.h"
 
-#include <algorithm>
 #include <utility>
 
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/webauthn/authenticator_list_observer.h"
 
 ObservableAuthenticatorList::ObservableAuthenticatorList() = default;
@@ -69,9 +69,6 @@
 ObservableAuthenticatorList::AuthenticatorListIterator
 ObservableAuthenticatorList::GetAuthenticatorIterator(
     base::StringPiece authenticator_id) {
-  return std::find_if(authenticator_list_.begin(), authenticator_list_.end(),
-                      [authenticator_id](const auto& authenticator) {
-                        return authenticator.authenticator_id ==
-                               authenticator_id;
-                      });
+  return base::ranges::find(authenticator_list_, authenticator_id,
+                            &AuthenticatorReference::authenticator_id);
 }
diff --git a/chrome/browser/win/conflicts/module_blocklist_cache_util_unittest.cc b/chrome/browser/win/conflicts/module_blocklist_cache_util_unittest.cc
index a0aded6..0af2cdd09 100644
--- a/chrome/browser/win/conflicts/module_blocklist_cache_util_unittest.cc
+++ b/chrome/browser/win/conflicts/module_blocklist_cache_util_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/win/conflicts/module_blocklist_cache_util.h"
 
-#include <algorithm>
 #include <memory>
 #include <random>
 #include <set>
@@ -16,6 +15,7 @@
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/hash/md5.h"
+#include "base/ranges/algorithm.h"
 #include "base/time/time.h"
 #include "chrome/browser/win/conflicts/module_list_filter.h"
 #include "chrome/chrome_elf/sha1/sha1.h"
@@ -244,12 +244,10 @@
   EXPECT_EQ(kTestModuleCount - kAllowlistedModulesCount,
             blocklisted_modules.size());
   for (const auto& module : allowlisted_modules) {
-    auto iter =
-        std::find_if(blocklisted_modules.begin(), blocklisted_modules.end(),
-                     [&module](const auto& element) {
-                       return internal::ModuleEqual()(module, element);
-                     });
-    EXPECT_EQ(blocklisted_modules.end(), iter);
+    EXPECT_TRUE(base::ranges::none_of(
+        blocklisted_modules, [&module](const auto& element) {
+          return internal::ModuleEqual()(module, element);
+        }));
   }
 }
 
@@ -280,11 +278,10 @@
   EXPECT_EQ(kTestModuleCount, blocklisted_modules.size());
   // For each entires, make sure they were updated.
   for (const auto& module : updated_modules) {
-    auto iter =
-        std::find_if(blocklisted_modules.begin(), blocklisted_modules.end(),
-                     [&module](const auto& element) {
-                       return internal::ModuleEqual()(module, element);
-                     });
+    auto iter = base::ranges::find_if(
+        blocklisted_modules, [&module](const auto& element) {
+          return internal::ModuleEqual()(module, element);
+        });
     ASSERT_NE(blocklisted_modules.end(), iter);
     EXPECT_EQ(kNewTimeDateStamp, iter->time_date_stamp);
   }
@@ -326,12 +323,10 @@
   // The 5 elements were removed.
   EXPECT_EQ(kTestModuleCount - kModulesToRemove, blocklisted_modules.size());
   for (const auto& module : expired_modules) {
-    auto iter =
-        std::find_if(blocklisted_modules.begin(), blocklisted_modules.end(),
-                     [&module](const auto& element) {
-                       return internal::ModuleEqual()(module, element);
-                     });
-    EXPECT_EQ(blocklisted_modules.end(), iter);
+    EXPECT_TRUE(base::ranges::none_of(
+        blocklisted_modules, [&module](const auto& element) {
+          return internal::ModuleEqual()(module, element);
+        }));
   }
 }
 
@@ -367,12 +362,10 @@
   EXPECT_EQ(kTestModuleCount - kNewlyBlocklistedModuleCount,
             blocklisted_modules.size());
   for (const auto& module : excess_modules) {
-    auto iter =
-        std::find_if(blocklisted_modules.begin(), blocklisted_modules.end(),
-                     [&module](const auto& element) {
-                       return internal::ModuleEqual()(module, element);
-                     });
-    EXPECT_EQ(blocklisted_modules.end(), iter);
+    EXPECT_TRUE(base::ranges::none_of(
+        blocklisted_modules, [&module](const auto& element) {
+          return internal::ModuleEqual()(module, element);
+        }));
   }
 }
 
@@ -409,12 +402,10 @@
   // Enough elements were removed.
   EXPECT_EQ(kMaxModuleBlocklistCacheSize, blocklisted_modules.size());
   for (const auto& module : excess_modules) {
-    auto iter =
-        std::find_if(blocklisted_modules.begin(), blocklisted_modules.end(),
-                     [&module](const auto& element) {
-                       return internal::ModuleEqual()(module, element);
-                     });
-    EXPECT_EQ(blocklisted_modules.end(), iter);
+    EXPECT_TRUE(base::ranges::none_of(
+        blocklisted_modules, [&module](const auto& element) {
+          return internal::ModuleEqual()(module, element);
+        }));
   }
 }
 
@@ -453,12 +444,10 @@
 
   EXPECT_EQ(kTestModuleCount, blocklisted_modules.size());
   for (const auto& module : duplicated_modules) {
-    auto iter =
-        std::find_if(blocklisted_modules.begin(), blocklisted_modules.end(),
-                     [&module](const auto& element) {
-                       return internal::ModuleEqual()(module, element) &&
-                              module.time_date_stamp == element.time_date_stamp;
-                     });
-    EXPECT_NE(blocklisted_modules.end(), iter);
+    EXPECT_TRUE(base::ranges::any_of(
+        blocklisted_modules, [&module](const auto& element) {
+          return internal::ModuleEqual()(module, element) &&
+                 module.time_date_stamp == element.time_date_stamp;
+        }));
   }
 }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java
index 7b1a464..69c9b9e 100644
--- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java
+++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java
@@ -6,8 +6,11 @@
 
 import android.view.View;
 
+import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.List;
 /**
  * Interface to provide chromium calling points for an external surface.
@@ -15,11 +18,69 @@
 public interface SurfaceActionsHandler {
     String KEY = "GeneralActions";
 
+    @IntDef({OpenMode.UNKNOWN, OpenMode.SAME_TAB, OpenMode.NEW_TAB, OpenMode.INCOGNITO_TAB,
+            OpenMode.DOWNLOAD_LINK, OpenMode.READ_LATER, OpenMode.THANK_CREATOR,
+            OpenMode.NEW_TAB_IN_GROUP})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface OpenMode {
+        int UNKNOWN = 0;
+        // The URL is opened in the same tab (default).
+        int SAME_TAB = 1;
+        // The URL is opened in a new tab.
+        int NEW_TAB = 2;
+        // The URL is opened in an incognito tab.
+        int INCOGNITO_TAB = 3;
+        // The URL is downloaded.
+        int DOWNLOAD_LINK = 4;
+        // The URL is added for later reading.
+        int READ_LATER = 5;
+        // The URL to thank the current creator is opened in a Chrome Custom Tab
+        // (CCT).
+        int THANK_CREATOR = 6;
+        // The URL is opened in a new tab that is organized as group.
+        int NEW_TAB_IN_GROUP = 7;
+    }
+
+    /**
+     * Options when opening URLs with openUrl().
+     */
+    interface OpenUrlOptions {
+        /**
+         * The WebFeed associated with this navigation, for use with shouldShowWebFeedAccelerator(),
+         * this is the WebFeed that should be followed if the user taps the accelerator.
+         */
+        default String webFeedName() {
+            return "";
+        }
+        /** Whether to show the Web Feed accelerator on the page after navigation. */
+        default boolean shouldShowWebFeedAccelerator() {
+            return false;
+        }
+        /** Returns the title. Currently used only for READ_LATER. */
+        default String getTitle() {
+            return "";
+        }
+        /** The View from which the user tap originated. May be null.*/
+        @Nullable
+        default View actionSourceView() {
+            return null;
+        }
+    }
+
+    /**
+     * Navigates the current tab to a particular URL.
+     * @param openMode The OpenMode to use.
+     * @param url The url for which to navigate.
+     * @param options Additional options for opening the URL.
+     */
+    default void openUrl(@OpenMode int openMode, String url, OpenUrlOptions options) {}
+
     /**
      * Navigates the current tab to a particular URL.
      * @param url The url for which to navigate.
      * @param actionSourceView The View from which the user tap originated. May be null.
      */
+    @Deprecated
     default void navigateTab(String url, View actionSourceView) {}
 
     /**
@@ -27,22 +88,27 @@
      * @param url The url for which to navigate.
      * @param actionSourceView The View from which the user tap originated. May be null.
      */
+    @Deprecated
     default void navigateNewTab(String url, View actionSourceView) {}
 
     /**
      * Navigate a new incognito tab to a URL.
      */
+    @Deprecated
     default void navigateIncognitoTab(String url) {}
 
     /**
      * Get an offline page for a URL.
      */
+    @Deprecated
     default void downloadLink(String url) {}
 
     /** Add the url to the reading list and make it available offline. */
+    @Deprecated
     default void addToReadingList(String title, String url) {}
 
     /** Opens Crow CCT for the URL. */
+    @Deprecated
     default void navigateCrow(String url) {}
 
     /**
@@ -120,5 +186,6 @@
      * @param url The url for which to navigate.
      * @param actionSourceView The View from which the user tap originated. May be null.
      */
+    @Deprecated
     default void navigateNewTabInGroup(String url, View actionSourceView) {}
 }
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 12cc067..011408b 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1663675099-cda4ac060569fae9d457ef34e2ad0dfdd3bbbaaf.profdata
+chrome-mac-arm-main-1663718373-a9635b5325275571e41377fd03c6b3687d76af1a.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 24cf34b..c09bf69 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1663696799-8e81660c0980727e184ec55329b9a8d34ffbec55.profdata
+chrome-mac-main-1663718373-47a0e5ea627434d8d143cfa04a066fd6b1399399.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 519843a..dbd37c85 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1663675099-9146ce015c2ad093773fb92d8c840fb2f42b35a2.profdata
+chrome-win32-main-1663696799-4fc03c5380fa726835345339d175c1ed92d21d86.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index be5812d..54cd5078 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1663696799-38787519a7ce5366b2c02a8f740d9b97d850b4ad.profdata
+chrome-win64-main-1663707471-915312b4d950f690a9545487f07786d549fa3ef2.profdata
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index f194a3f..dfa531b74 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -863,11 +863,6 @@
 BASE_FEATURE(kPluginVm, "PluginVm", base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
-// Allows prediction operations (e.g., prefetching) on all connection types.
-BASE_FEATURE(kPredictivePrefetchingAllowedOnAllConnectionTypes,
-             "PredictivePrefetchingAllowedOnAllConnectionTypes",
-             base::FEATURE_ENABLED_BY_DEFAULT);
-
 // Allows Chrome to do preconnect when prerender fails.
 BASE_FEATURE(kPrerenderFallbackToPreconnect,
              "PrerenderFallbackToPreconnect",
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index a700c33..31ed5d8d 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -503,9 +503,6 @@
 #endif
 
 COMPONENT_EXPORT(CHROME_FEATURES)
-BASE_DECLARE_FEATURE(kPredictivePrefetchingAllowedOnAllConnectionTypes);
-
-COMPONENT_EXPORT(CHROME_FEATURES)
 BASE_DECLARE_FEATURE(kPrerenderFallbackToPreconnect);
 
 COMPONENT_EXPORT(CHROME_FEATURES) BASE_DECLARE_FEATURE(kPrivacyGuide2);
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index c27fca0a..fc8501f 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -478,6 +478,12 @@
 // attestation.
 const char kAttestationExtensionAllowlist[] = "attestation.extension_allowlist";
 
+// A boolean specifying whether the Desk API is enabled for third party web
+// applications. If set to true, the Desk API bridge component extension will be
+// installed.
+const char kDeskAPIThirdPartyAccessEnabled[] =
+    "desk_api_third_party_access_enabled";
+
 // The list of extensions allowed to skip print job confirmation dialog when
 // they use the chrome.printing.submitJob() function. Note that this used to be
 // `kPrintingAPIExtensionsWhitelist`, hence the difference between the variable
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 264c4ee..7d44889 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -375,6 +375,7 @@
 extern const char kSharedStorage[];
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 #if BUILDFLAG(IS_CHROMEOS)
+extern const char kDeskAPIThirdPartyAccessEnabled[];
 extern const char kForceMaximizeOnFirstRun[];
 extern const char kInsightsExtensionEnabled[];
 extern const char kOOMKillsDailyCount[];
diff --git a/chrome/services/ipp_parser/public/mojom/ipp_parser.mojom b/chrome/services/ipp_parser/public/mojom/ipp_parser.mojom
index 1827be8..ad9e5b4 100644
--- a/chrome/services/ipp_parser/public/mojom/ipp_parser.mojom
+++ b/chrome/services/ipp_parser/public/mojom/ipp_parser.mojom
@@ -55,7 +55,7 @@
 
 // Implemented by the CupsIppParserService; supports parsing arbitrary IPP
 // requests.
-[ServiceSandbox=sandbox.mojom.Sandbox.kUtility]
+[ServiceSandbox=sandbox.mojom.Sandbox.kService]
 interface IppParser {
   // Treats |to_parse| as an IPP request and attempts to parse into IppRequest
   // format. Returns empty IppRequest on failure.
diff --git a/chrome/services/media_gallery_util/public/mojom/media_parser.mojom b/chrome/services/media_gallery_util/public/mojom/media_parser.mojom
index 4bb6ea5..42d2f39 100644
--- a/chrome/services/media_gallery_util/public/mojom/media_parser.mojom
+++ b/chrome/services/media_gallery_util/public/mojom/media_parser.mojom
@@ -61,7 +61,7 @@
   GetCpuInfo() => (int64 libyuv_cpu_flags, int64 ffmpeg_cpu_flags);
 };
 
-[ServiceSandbox=sandbox.mojom.Sandbox.kUtility]
+[ServiceSandbox=sandbox.mojom.Sandbox.kService]
 interface MediaParserFactory {
   // Creates a MediaParser. |libyuv_cpuf_lags| are the flags returned by
   // libyuv::InitCpuFlags() from third-party/libyuv and |libavutil_cpu_flags|
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 1d30926..bd48bce 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -9678,7 +9678,9 @@
       ]
       deps += [
         "//components/commerce/core:feature_list",
+        "//components/commerce/core:shopping_service_test_support",
         "//components/live_caption:utils",
+        "//components/omnibox/browser:vector_icons",
         "//components/optimization_guide/core:test_support",
         "//components/optimization_guide/proto:optimization_guide_proto",
         "//components/performance_manager:performance_manager",
diff --git a/chrome/test/data/android/page_with_editable.html b/chrome/test/data/android/page_with_editable.html
new file mode 100644
index 0000000..8e98981
--- /dev/null
+++ b/chrome/test/data/android/page_with_editable.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script>
+      const params = new URLSearchParams(window.location.search);
+      let metaTagContent = 'width=device-width';
+      if (params.has('resize-layout'))
+        metaTagContent += ',virtual-keyboard=resize-layout';
+
+      let meta = document.createElement('meta');
+      meta.name = 'viewport';
+      meta.content = metaTagContent;
+      document.head.appendChild(meta);
+    </script>
+  </head>
+  <body>
+    <input id="inputElement" type="text"></input>
+    <p id="output"></p>
+  </body>
+</html>
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 04c3a04..5eaa67b 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -20037,5 +20037,41 @@
         }
       }
     ]
+  },
+  "DeskAPIThirdPartyAccessEnabled": {
+    "os": [
+      "chromeos_ash",
+      "chromeos_lacros"
+    ],
+    "policy_pref_mapping_tests": [
+      {
+        "policies": {
+          "DeskAPIThirdPartyAccessEnabled": true
+        },
+        "prefs": {
+          "desk_api_third_party_access_enabled": {
+            "value": true
+          }
+        }
+      },
+      {
+        "policies": {
+          "DeskAPIThirdPartyAccessEnabled": false
+        },
+        "prefs": {
+          "desk_api_third_party_access_enabled": {
+            "value": false
+          }
+        }
+      },
+      {
+        "policies": {},
+        "prefs": {
+          "desk_api_third_party_access_enabled": {
+            "default_value": false
+          }
+        }
+      }
+    ]
   }
 }
diff --git a/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_browsertest.js b/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_browsertest.js
index 3d950ef..805ba2f 100644
--- a/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_browsertest.js
+++ b/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_browsertest.js
@@ -55,7 +55,8 @@
   'OnboardingChooseWpDisableMethodPageTest',
   'OnboardingEnterRsuWpDisableCodePageTest',
   'OnboardingLandingPageTest',
-  'OnboardingNetworkPageTest',
+  // TODO(crbug/1296829): Re-enable once test is fixed.
+  // 'OnboardingNetworkPageTest',
   'OnboardingSelectComponentsPageTest',
   'OnboardingUpdatePageTest',
   'OnboardingWaitForManualWpDisablePageTest',
diff --git a/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_unified_test.js b/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_unified_test.js
index 47dc026..2682350 100644
--- a/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_unified_test.js
+++ b/chrome/test/data/webui/chromeos/shimless_rma/shimless_rma_unified_test.js
@@ -54,7 +54,8 @@
     'OnboardingEnterRsuWpDisableCodePageTest',
     onboardingEnterRsuWpDisableCodePageTest);
 runSuite('OnboardingLandingPageTest', onboardingLandingPageTest);
-runSuite('OnboardingNetworkPageTest', onboardingNetworkPageTest);
+// TODO(crbug/1296829): Re-enable once test is fixed.
+// runSuite('OnboardingNetworkPageTest', onboardingNetworkPageTest);
 runSuite(
     'OnboardingSelectComponentsPageTest', onboardingSelectComponentsPageTest);
 runSuite('OnboardingUpdatePageTest', onboardingUpdatePageTest);
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni
index 2c0ace0..21e8e56 100644
--- a/chromeos/tast_control.gni
+++ b/chromeos/tast_control.gni
@@ -247,6 +247,10 @@
 
   # https://crbug.com/1365284
   "crostini.RestartApp.clamshell_stable",
+
+  # https://crbug.com/1366112
+  "crostini.ResizeInstallation.stable",
+
 ]
 
 # To create filters to be used on specific builders add them like this:
diff --git a/chromeos/ui/wm/BUILD.gn b/chromeos/ui/wm/BUILD.gn
index cf722f58..d13d73c 100644
--- a/chromeos/ui/wm/BUILD.gn
+++ b/chromeos/ui/wm/BUILD.gn
@@ -38,6 +38,7 @@
 
   if (is_chromeos_ash) {
     sources += [ "desks/ash/desks_helper.cc" ]
+    deps += [ "//ash/constants" ]
   }
 
   if (is_chromeos_lacros) {
diff --git a/chromeos/ui/wm/window_util.cc b/chromeos/ui/wm/window_util.cc
index 296839e..bfe14e2 100644
--- a/chromeos/ui/wm/window_util.cc
+++ b/chromeos/ui/wm/window_util.cc
@@ -4,6 +4,7 @@
 
 #include "chromeos/ui/wm/window_util.h"
 
+#include "ash/constants/app_types.h"
 #include "chromeos/ui/base/display_util.h"
 #include "chromeos/ui/base/tablet_state.h"
 #include "chromeos/ui/wm/constants.h"
@@ -96,6 +97,12 @@
 }
 
 bool CanFloatWindow(aura::Window* window) {
+  // Only app window can be floated.
+  // Only app window can be floated.
+  if (window->GetProperty(aura::client::kAppType) ==
+      static_cast<int>(ash::AppType::NON_APP)) {
+    return false;
+  }
   return TabletState::Get()->InTabletMode() ? CanFloatWindowInTablet(window)
                                             : CanFloatWindowInClamshell(window);
 }
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index 3b72964d6..ea3b8785 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -427,6 +427,8 @@
     "webdata/autofill_wallet_offer_sync_bridge.h",
     "webdata/autofill_wallet_sync_bridge.cc",
     "webdata/autofill_wallet_sync_bridge.h",
+    "webdata/autofill_wallet_usage_data_sync_bridge.cc",
+    "webdata/autofill_wallet_usage_data_sync_bridge.h",
     "webdata/autofill_webdata_backend.h",
     "webdata/autofill_webdata_backend_impl.cc",
     "webdata/autofill_webdata_backend_impl.h",
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc
new file mode 100644
index 0000000..0c4d69a
--- /dev/null
+++ b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc
@@ -0,0 +1,103 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h"
+
+#include <utility>
+
+#include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
+#include "components/sync/model/client_tag_based_model_type_processor.h"
+
+namespace autofill {
+
+namespace {
+
+// Address to this variable used as the user data key.
+const int kAutofillWalletUsageDataSyncBridgeUserDataKey = 0;
+
+}  // namespace
+
+// static
+void AutofillWalletUsageDataSyncBridge::CreateForWebDataServiceAndBackend(
+    AutofillWebDataBackend* web_data_backend,
+    AutofillWebDataService* web_data_service) {
+  web_data_service->GetDBUserData()->SetUserData(
+      &kAutofillWalletUsageDataSyncBridgeUserDataKey,
+      std::make_unique<AutofillWalletUsageDataSyncBridge>(
+          std::make_unique<syncer::ClientTagBasedModelTypeProcessor>(
+              syncer::AUTOFILL_WALLET_USAGE,
+              /*dump_stack=*/base::RepeatingClosure()),
+          web_data_backend));
+}
+
+// static
+AutofillWalletUsageDataSyncBridge*
+AutofillWalletUsageDataSyncBridge::FromWebDataService(
+    AutofillWebDataService* web_data_service) {
+  return static_cast<AutofillWalletUsageDataSyncBridge*>(
+      web_data_service->GetDBUserData()->GetUserData(
+          &kAutofillWalletUsageDataSyncBridgeUserDataKey));
+}
+
+AutofillWalletUsageDataSyncBridge::AutofillWalletUsageDataSyncBridge(
+    std::unique_ptr<syncer::ModelTypeChangeProcessor> change_processor,
+    AutofillWebDataBackend* web_data_backend)
+    : ModelTypeSyncBridge(std::move(change_processor)),
+      web_data_backend_(web_data_backend) {
+  DCHECK(web_data_backend_);
+}
+
+AutofillWalletUsageDataSyncBridge::~AutofillWalletUsageDataSyncBridge() =
+    default;
+
+std::unique_ptr<syncer::MetadataChangeList>
+AutofillWalletUsageDataSyncBridge::CreateMetadataChangeList() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+
+absl::optional<syncer::ModelError>
+AutofillWalletUsageDataSyncBridge::MergeSyncData(
+    std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
+    syncer::EntityChangeList entity_data) {
+  NOTIMPLEMENTED();
+  return absl::nullopt;
+}
+
+absl::optional<syncer::ModelError>
+AutofillWalletUsageDataSyncBridge::ApplySyncChanges(
+    std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
+    syncer::EntityChangeList entity_data) {
+  NOTIMPLEMENTED();
+  return absl::nullopt;
+}
+
+void AutofillWalletUsageDataSyncBridge::GetData(StorageKeyList storage_keys,
+                                                DataCallback callback) {
+  NOTIMPLEMENTED();
+}
+
+void AutofillWalletUsageDataSyncBridge::GetAllDataForDebugging(
+    DataCallback callback) {
+  NOTIMPLEMENTED();
+}
+
+std::string AutofillWalletUsageDataSyncBridge::GetClientTag(
+    const syncer::EntityData& entity_data) {
+  NOTIMPLEMENTED();
+  return "";
+}
+
+std::string AutofillWalletUsageDataSyncBridge::GetStorageKey(
+    const syncer::EntityData& entity_data) {
+  NOTIMPLEMENTED();
+  return "";
+}
+
+void AutofillWalletUsageDataSyncBridge::ApplyStopSyncChanges(
+    std::unique_ptr<syncer::MetadataChangeList> delete_metadata_change_list) {
+  NOTIMPLEMENTED();
+}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h
new file mode 100644
index 0000000..c3dbf77
--- /dev/null
+++ b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h
@@ -0,0 +1,72 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WALLET_USAGE_DATA_SYNC_BRIDGE_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WALLET_USAGE_DATA_SYNC_BRIDGE_H_
+
+#include <memory>
+#include <string>
+
+#include "base/supports_user_data.h"
+#include "components/sync/model/metadata_change_list.h"
+#include "components/sync/model/model_error.h"
+#include "components/sync/model/model_type_change_processor.h"
+#include "components/sync/model/model_type_sync_bridge.h"
+
+namespace autofill {
+
+class AutofillWebDataBackend;
+class AutofillWebDataService;
+
+// Sync bridge responsible for applying remote changes of autofill wallet susage
+// data to the local database.
+class AutofillWalletUsageDataSyncBridge : public base::SupportsUserData::Data,
+                                          public syncer::ModelTypeSyncBridge {
+ public:
+  // Factory method that hides dealing with change_processor and also stores the
+  // created bridge within |web_data_service|. This method should only be
+  // called on |web_data_service|'s DB thread.
+  static void CreateForWebDataServiceAndBackend(
+      AutofillWebDataBackend* webdata_backend,
+      AutofillWebDataService* web_data_service);
+
+  static AutofillWalletUsageDataSyncBridge* FromWebDataService(
+      AutofillWebDataService* web_data_service);
+
+  explicit AutofillWalletUsageDataSyncBridge(
+      std::unique_ptr<syncer::ModelTypeChangeProcessor> change_processor,
+      AutofillWebDataBackend* web_data_backend);
+
+  AutofillWalletUsageDataSyncBridge(const AutofillWalletUsageDataSyncBridge&) =
+      delete;
+  AutofillWalletUsageDataSyncBridge& operator=(
+      const AutofillWalletUsageDataSyncBridge&) = delete;
+
+  ~AutofillWalletUsageDataSyncBridge() override;
+
+  // ModelTypeSyncBridge
+  std::unique_ptr<syncer::MetadataChangeList> CreateMetadataChangeList()
+      override;
+  absl::optional<syncer::ModelError> MergeSyncData(
+      std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
+      syncer::EntityChangeList entity_data) override;
+  absl::optional<syncer::ModelError> ApplySyncChanges(
+      std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
+      syncer::EntityChangeList entity_changes) override;
+  void GetData(StorageKeyList storage_keys, DataCallback callback) override;
+  void GetAllDataForDebugging(DataCallback callback) override;
+  std::string GetClientTag(const syncer::EntityData& entity_data) override;
+  std::string GetStorageKey(const syncer::EntityData& entity_data) override;
+  void ApplyStopSyncChanges(std::unique_ptr<syncer::MetadataChangeList>
+                                delete_metadata_change_list) override;
+
+ private:
+  // AutofillWalletUsageSyncBridge is owned by |web_data_backend_| through
+  // SupportsUserData, so it's guaranteed to outlive |this|.
+  const raw_ptr<AutofillWebDataBackend> web_data_backend_;
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WALLET_USAGE_DATA_SYNC_BRIDGE_H_
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/AutofillAssistantClient.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/AutofillAssistantClient.java
index 8a6d5df..17f8e92cb 100644
--- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/AutofillAssistantClient.java
+++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/AutofillAssistantClient.java
@@ -85,13 +85,6 @@
         return AutofillAssistantClientJni.get().createForWebContents(webContents, dependencies);
     }
 
-    /**
-     * Notifies that an onboarding UI is shown or hidden.
-     */
-    public static void onOnboardingUiChange(WebContents webContents, boolean shown) {
-        AutofillAssistantClientJni.get().onOnboardingUiChange(webContents, shown);
-    }
-
     @CalledByNative
     private AutofillAssistantClient(
             long nativeClientAndroid, AssistantAccessTokenUtil accessTokenUtil) {
@@ -393,7 +386,6 @@
         AutofillAssistantClient fromWebContents(WebContents webContents);
         AutofillAssistantClient createForWebContents(
                 WebContents webContents, AssistantDependencies dependencies);
-        void onOnboardingUiChange(WebContents webContents, boolean shown);
         void onAccessToken(long nativeClientAndroid, AutofillAssistantClient caller,
                 boolean success, String accessToken);
         void onPaymentsClientToken(
diff --git a/components/autofill_assistant/browser/android/client_android.cc b/components/autofill_assistant/browser/android/client_android.cc
index 2b70b8a..6f9829ce 100644
--- a/components/autofill_assistant/browser/android/client_android.cc
+++ b/components/autofill_assistant/browser/android/client_android.cc
@@ -95,16 +95,6 @@
   return client_android->GetJavaObject();
 }
 
-static void JNI_AutofillAssistantClient_OnOnboardingUiChange(
-    JNIEnv* env,
-    const JavaParamRef<jobject>& jweb_contents,
-    jboolean shown) {
-  RuntimeManager* runtime_manager = RuntimeManager::GetForWebContents(
-      content::WebContents::FromJavaWebContents(jweb_contents));
-  if (runtime_manager)
-    runtime_manager->SetUIState(shown ? UIState::kShown : UIState::kNotShown);
-}
-
 ClientAndroid::ClientAndroid(content::WebContents* web_contents,
                              const ScopedJavaGlobalRef<jobject>& jdependencies)
     : content::WebContentsUserData<ClientAndroid>(*web_contents),
diff --git a/components/autofill_assistant/browser/controller.cc b/components/autofill_assistant/browser/controller.cc
index 9d9dfa74..fa88428c 100644
--- a/components/autofill_assistant/browser/controller.cc
+++ b/components/autofill_assistant/browser/controller.cc
@@ -194,6 +194,11 @@
 }
 
 void Controller::SetUiShown(bool shown) {
+  if (trigger_context_ && trigger_context_->GetIsExternallyTriggered()) {
+    // UIState can only be modified by non-headless runs. For headless runs, the
+    // client is in charge of keeping the UIState value updated.
+    return;
+  }
   ui_shown_ = shown;
   if (runtime_manager_) {
     // By default, browsing features are suppressed during `UIState::kShown`.
diff --git a/components/breadcrumbs/core/BUILD.gn b/components/breadcrumbs/core/BUILD.gn
index 9d8851b..1437ee5 100644
--- a/components/breadcrumbs/core/BUILD.gn
+++ b/components/breadcrumbs/core/BUILD.gn
@@ -12,6 +12,7 @@
     "breadcrumb_manager_browser_agent.h",
     "breadcrumb_manager_keyed_service.cc",
     "breadcrumb_manager_keyed_service.h",
+    "breadcrumb_manager_observer.cc",
     "breadcrumb_manager_observer.h",
     "breadcrumb_manager_tab_helper.cc",
     "breadcrumb_manager_tab_helper.h",
@@ -19,8 +20,6 @@
     "breadcrumb_persistent_storage_manager.h",
     "breadcrumb_persistent_storage_util.cc",
     "breadcrumb_persistent_storage_util.h",
-    "breadcrumb_util.cc",
-    "breadcrumb_util.h",
     "breadcrumbs_status.cc",
     "breadcrumbs_status.h",
     "crash_reporter_breadcrumb_constants.h",
diff --git a/components/breadcrumbs/core/application_breadcrumbs_logger.cc b/components/breadcrumbs/core/application_breadcrumbs_logger.cc
index 2df51b82..38b1273 100644
--- a/components/breadcrumbs/core/application_breadcrumbs_logger.cc
+++ b/components/breadcrumbs/core/application_breadcrumbs_logger.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/strings/stringprintf.h"
 #include "components/breadcrumbs/core/application_breadcrumbs_not_user_action.inc"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h"
 #include "components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h"
 
@@ -30,13 +31,9 @@
               std::move(is_metrics_enabled_callback))) {
   base::AddActionCallback(user_action_callback_);
 
-  // Start crash reporter listening for breadcrumbs logged to
-  // |breadcrumb_manager_|. Collected breadcrumbs will be attached to crash
-  // reports.
-  CrashReporterBreadcrumbObserver::GetInstance().ObserveBreadcrumbManager(
-      &breadcrumb_manager_);
-
-  persistent_storage_manager_->MonitorBreadcrumbManager(&breadcrumb_manager_);
+  // Start crash reporter listening for breadcrumb events. Collected breadcrumbs
+  // will be attached to crash reports.
+  CrashReporterBreadcrumbObserver::GetInstance();
 
   AddEvent("Startup");
 }
@@ -44,10 +41,6 @@
 ApplicationBreadcrumbsLogger::~ApplicationBreadcrumbsLogger() {
   AddEvent("Shutdown");
   base::RemoveActionCallback(user_action_callback_);
-  CrashReporterBreadcrumbObserver::GetInstance().StopObservingBreadcrumbManager(
-      &breadcrumb_manager_);
-  persistent_storage_manager_->StopMonitoringBreadcrumbManager(
-      &breadcrumb_manager_);
 }
 
 BreadcrumbPersistentStorageManager*
@@ -56,11 +49,11 @@
 }
 
 std::list<std::string> ApplicationBreadcrumbsLogger::GetEventsForTesting() {
-  return breadcrumb_manager_.GetEvents();
+  return breadcrumbs::BreadcrumbManager::GetInstance().GetEvents();
 }
 
 void ApplicationBreadcrumbsLogger::AddEvent(const std::string& event) {
-  breadcrumb_manager_.AddEvent(event);
+  breadcrumbs::BreadcrumbManager::GetInstance().AddEvent(event);
 }
 
 void ApplicationBreadcrumbsLogger::OnUserAction(const std::string& action,
diff --git a/components/breadcrumbs/core/application_breadcrumbs_logger.h b/components/breadcrumbs/core/application_breadcrumbs_logger.h
index 17fb2ce..6ea0d3f 100644
--- a/components/breadcrumbs/core/application_breadcrumbs_logger.h
+++ b/components/breadcrumbs/core/application_breadcrumbs_logger.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_BREADCRUMBS_CORE_APPLICATION_BREADCRUMBS_LOGGER_H_
 #define COMPONENTS_BREADCRUMBS_CORE_APPLICATION_BREADCRUMBS_LOGGER_H_
 
+#include <list>
 #include <memory>
 #include <string>
 
@@ -13,8 +14,6 @@
 #include "base/memory/memory_pressure_listener.h"
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/user_metrics.h"
-#include "components/breadcrumbs/core/breadcrumb_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_util.h"
 #include "components/breadcrumbs/core/breadcrumbs_status.h"
 
 namespace base {
@@ -25,8 +24,8 @@
 
 class BreadcrumbPersistentStorageManager;
 
-// Listens for and logs application wide breadcrumb events to the
-// BreadcrumbManager passed in the constructor.
+// Listens for and logs application-wide breadcrumb events to the
+// BreadcrumbManager.
 class ApplicationBreadcrumbsLogger {
  public:
   // Breadcrumbs will be stored in a file in |storage_dir|.
@@ -45,33 +44,29 @@
   std::list<std::string> GetEventsForTesting();
 
  protected:
-  // Adds an event to |breadcrumb_manager_|.
+  // Adds an event to the BreadcrumbManager.
   void AddEvent(const std::string& event);
 
  private:
-  // Callback which processes and logs the user action |action| to
-  // |breadcrumb_manager_|.
+  // Callback which processes and logs the user action |action| to the
+  // BreadcrumbManager.
   void OnUserAction(const std::string& action, base::TimeTicks action_time);
 
-  // Callback which processes and logs memory pressure warnings to
-  // |breadcrumb_manager_|.
+  // Callback which processes and logs memory pressure warnings to the
+  // BreadcrumbManager.
   void OnMemoryPressure(
       base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level);
 
   // Returns true if |action| (UMA User Action) is user triggered.
   static bool IsUserTriggeredAction(const std::string& action);
 
-  // Stores application-wide breadcrumb events.
-  breadcrumbs::BreadcrumbManager breadcrumb_manager_{
-      breadcrumbs::GetStartTime()};
-
   // The callback invoked whenever a user action is registered.
   base::ActionCallback user_action_callback_;
   // A memory pressure listener which observes memory pressure events.
   std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
 
   // A strong pointer to the persistent breadcrumb manager listening for events
-  // from |breadcrumb_manager_| to store to disk.
+  // from the BreadcrumbManager to store to disk.
   std::unique_ptr<breadcrumbs::BreadcrumbPersistentStorageManager>
       persistent_storage_manager_;
 };
diff --git a/components/breadcrumbs/core/application_breadcrumbs_logger_unittest.cc b/components/breadcrumbs/core/application_breadcrumbs_logger_unittest.cc
index c47fa4d0..1cb26e6d 100644
--- a/components/breadcrumbs/core/application_breadcrumbs_logger_unittest.cc
+++ b/components/breadcrumbs/core/application_breadcrumbs_logger_unittest.cc
@@ -10,7 +10,6 @@
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
 #include "components/breadcrumbs/core/breadcrumb_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
diff --git a/components/breadcrumbs/core/breadcrumb_manager.cc b/components/breadcrumbs/core/breadcrumb_manager.cc
index 52256c2..696c245 100644
--- a/components/breadcrumbs/core/breadcrumb_manager.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager.cc
@@ -32,10 +32,11 @@
 
 }  // namespace
 
-BreadcrumbManager::BreadcrumbManager(base::TimeTicks start_time)
-    : start_time_(start_time) {}
-
-BreadcrumbManager::~BreadcrumbManager() = default;
+// static
+BreadcrumbManager& BreadcrumbManager::GetInstance() {
+  static base::NoDestructor<BreadcrumbManager> breadcrumb_manager;
+  return *breadcrumb_manager;
+}
 
 const std::list<std::string> BreadcrumbManager::GetEvents() {
   DropOldEvents();
@@ -81,6 +82,9 @@
   DropOldEvents();
 }
 
+BreadcrumbManager::BreadcrumbManager() = default;
+BreadcrumbManager::~BreadcrumbManager() = default;
+
 void BreadcrumbManager::DropOldEvents() {
   bool old_buckets_dropped = false;
   // Drop buckets that are more than kEventExpirationMinutes old.
@@ -127,6 +131,11 @@
   observers_.RemoveObserver(observer);
 }
 
+void BreadcrumbManager::ResetForTesting() {
+  start_time_ = base::TimeTicks::Now();
+  event_buckets_.clear();
+}
+
 BreadcrumbManager::EventBucket::EventBucket(int minutes_elapsed)
     : minutes_elapsed(minutes_elapsed) {}
 BreadcrumbManager::EventBucket::EventBucket(const EventBucket&) = default;
diff --git a/components/breadcrumbs/core/breadcrumb_manager.h b/components/breadcrumbs/core/breadcrumb_manager.h
index 71fc4eb7..6f4afaf 100644
--- a/components/breadcrumbs/core/breadcrumb_manager.h
+++ b/components/breadcrumbs/core/breadcrumb_manager.h
@@ -8,6 +8,7 @@
 #include <list>
 #include <string>
 
+#include "base/no_destructor.h"
 #include "base/observer_list.h"
 #include "base/time/time.h"
 
@@ -22,13 +23,11 @@
 // stale data.
 class BreadcrumbManager {
  public:
-  // |start_time| will be used to determine logged events' timestamps, and
-  // should almost always be breadcrumbs::GetStartTime(), with a few exceptions
-  // for tests that rely on specific start times.
-  explicit BreadcrumbManager(base::TimeTicks start_time);
+  // Returns the singleton BreadcrumbManager. Creates it if it does not exist.
+  static BreadcrumbManager& GetInstance();
+
   BreadcrumbManager(const BreadcrumbManager&) = delete;
   BreadcrumbManager& operator=(const BreadcrumbManager&) = delete;
-  ~BreadcrumbManager();
 
   // Returns a list of the collected breadcrumb events which are still relevant.
   // Events returned will have a timestamp prepended to the original `event`
@@ -46,7 +45,16 @@
   void AddObserver(BreadcrumbManagerObserver* observer);
   void RemoveObserver(BreadcrumbManagerObserver* observer);
 
+  // Resets timestamps to 0:00:00 and removes all events. Does not remove
+  // observers or notify observers about removed events.
+  void ResetForTesting();
+
  private:
+  friend class base::NoDestructor<BreadcrumbManager>;
+
+  BreadcrumbManager();
+  ~BreadcrumbManager();
+
   // Drops events which are considered stale. Note that stale events are not
   // guaranteed to be removed. Explicitly, stale events will be retained while
   // newer events are limited.
@@ -57,7 +65,7 @@
 
   // The time when breadcrumbs logging started, used to calculate elapsed time
   // for event timestamps.
-  const base::TimeTicks start_time_;
+  base::TimeTicks start_time_ = base::TimeTicks::Now();
 
   // List of events, paired with the time they were logged in minutes. Newer
   // events are at the end of the list.
diff --git a/components/breadcrumbs/core/breadcrumb_manager_keyed_service.cc b/components/breadcrumbs/core/breadcrumb_manager_keyed_service.cc
index 01232c3a..39374e7 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_keyed_service.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager_keyed_service.cc
@@ -6,62 +6,34 @@
 
 #include "base/strings/stringprintf.h"
 #include "components/breadcrumbs/core/breadcrumb_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_util.h"
 
 namespace breadcrumbs {
 
 void BreadcrumbManagerKeyedService::AddEvent(const std::string& event) {
   std::string event_log =
       base::StringPrintf("%s%s", browsing_mode_.c_str(), event.c_str());
-  breadcrumb_manager_->AddEvent(event_log);
+  BreadcrumbManager::GetInstance().AddEvent(event_log);
 }
 
 void BreadcrumbManagerKeyedService::AddObserver(
     BreadcrumbManagerObserver* observer) {
-  breadcrumb_manager_->AddObserver(observer);
+  BreadcrumbManager::GetInstance().AddObserver(observer);
 }
 
 void BreadcrumbManagerKeyedService::RemoveObserver(
     BreadcrumbManagerObserver* observer) {
-  breadcrumb_manager_->RemoveObserver(observer);
+  BreadcrumbManager::GetInstance().RemoveObserver(observer);
 }
 
 const std::list<std::string> BreadcrumbManagerKeyedService::GetEvents() const {
-  return breadcrumb_manager_->GetEvents();
-}
-
-void BreadcrumbManagerKeyedService::StartPersisting(
-    BreadcrumbPersistentStorageManager* persistent_storage_manager) {
-  DCHECK(persistent_storage_manager);
-
-  if (persistent_storage_manager_)
-    StopPersisting();
-
-  persistent_storage_manager_ = persistent_storage_manager;
-  persistent_storage_manager_->MonitorBreadcrumbManagerService(this);
-}
-
-void BreadcrumbManagerKeyedService::StopPersisting() {
-  if (!persistent_storage_manager_)
-    return;
-
-  persistent_storage_manager_->StopMonitoringBreadcrumbManagerService(this);
-  persistent_storage_manager_ = nullptr;
-}
-
-BreadcrumbPersistentStorageManager*
-BreadcrumbManagerKeyedService::GetPersistentStorageManager() {
-  return persistent_storage_manager_;
+  return BreadcrumbManager::GetInstance().GetEvents();
 }
 
 BreadcrumbManagerKeyedService::BreadcrumbManagerKeyedService(
     bool is_off_the_record)
     // Set "I" for Incognito (Chrome branded OffTheRecord implementation) and
     // empty string for Normal browsing mode.
-    : browsing_mode_(is_off_the_record ? "I " : ""),
-      breadcrumb_manager_(std::make_unique<BreadcrumbManager>(GetStartTime())) {
-}
+    : browsing_mode_(is_off_the_record ? "I " : "") {}
 
 BreadcrumbManagerKeyedService::~BreadcrumbManagerKeyedService() = default;
 
diff --git a/components/breadcrumbs/core/breadcrumb_manager_keyed_service.h b/components/breadcrumbs/core/breadcrumb_manager_keyed_service.h
index 85c1c473..4466085 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_keyed_service.h
+++ b/components/breadcrumbs/core/breadcrumb_manager_keyed_service.h
@@ -6,19 +6,14 @@
 #define COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_MANAGER_KEYED_SERVICE_H_
 
 #include <list>
-#include <memory>
 #include <string>
 
-#include "base/memory/raw_ptr.h"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "components/keyed_service/core/keyed_service.h"
 
 namespace breadcrumbs {
 
-class BreadcrumbManager;
-class BreadcrumbManagerObserver;
-class BreadcrumbPersistentStorageManager;
-
-// Associates a BreadcrumbManager instance with a browser (BrowserState on iOS,
+// Logs breadcrumbs associated with a browser (BrowserState on iOS,
 // BrowserContext on Desktop) - either incognito or normal.
 class BreadcrumbManagerKeyedService : public KeyedService {
  public:
@@ -37,23 +32,10 @@
   void AddObserver(BreadcrumbManagerObserver* observer);
   void RemoveObserver(BreadcrumbManagerObserver* observer);
 
-  // Returns events from the underlying `breadcrumb_manager_`. See
+  // Returns events from the BreadcrumbManager. See
   // `BreadcrumbManager::GetEvents` for returned event details.
   const std::list<std::string> GetEvents() const;
 
-  // Persists all events logged to |breadcrumb_manager_| to
-  // |persistent_storage_manager|. If StartPersisting has already been called,
-  // breadcrumbs will no longer be persisted to the previous
-  // |persistent_storage_manager|.
-  // NOTE: |persistent_storage_manager| must be non-null.
-  void StartPersisting(
-      BreadcrumbPersistentStorageManager* persistent_storage_manager);
-  // Stops persisting events to |persistent_storage_manager_|. No-op if
-  // |persistent_storage_manager_| is not set.
-  void StopPersisting();
-  // Returns the current |persistent_storage_manager_|.
-  BreadcrumbPersistentStorageManager* GetPersistentStorageManager();
-
  private:
   // A short string identifying the browser used to initialize the receiver. For
   // example, "I" for "I"ncognito browsing mode. This value is prepended to
@@ -62,14 +44,6 @@
   // Note: Normal browsing mode uses an empty string in order to prevent
   // prepending most events with the same static value.
   std::string browsing_mode_;
-
-  // The associated BreadcrumbManager to store events added with |AddEvent|.
-  std::unique_ptr<BreadcrumbManager> breadcrumb_manager_;
-
-  // The current BreadcrumbPersistentStorageManager persisting events logged to
-  // |breadcrumb_manager_|, set by StartPersisting. May be null.
-  raw_ptr<BreadcrumbPersistentStorageManager> persistent_storage_manager_ =
-      nullptr;
 };
 
 }  // namespace breadcrumbs
diff --git a/components/breadcrumbs/core/breadcrumb_manager_keyed_service_unittest.cc b/components/breadcrumbs/core/breadcrumb_manager_keyed_service_unittest.cc
index 09a02ba..f8d05ad 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_keyed_service_unittest.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager_keyed_service_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
 
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
@@ -22,6 +23,8 @@
 
   const std::string event = breadcrumb_manager_service->GetEvents().front();
 
+  BreadcrumbManager::GetInstance().ResetForTesting();
+
   std::unique_ptr<BreadcrumbManagerKeyedService>
       otr_breadcrumb_manager_service =
           std::make_unique<BreadcrumbManagerKeyedService>(
diff --git a/components/breadcrumbs/core/breadcrumb_manager_observer.cc b/components/breadcrumbs/core/breadcrumb_manager_observer.cc
new file mode 100644
index 0000000..da09c39
--- /dev/null
+++ b/components/breadcrumbs/core/breadcrumb_manager_observer.cc
@@ -0,0 +1,15 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/breadcrumbs/core/breadcrumb_manager_observer.h"
+
+namespace breadcrumbs {
+
+BreadcrumbManagerObserver::BreadcrumbManagerObserver() {
+  breadcrumb_manager_observation_.Observe(&BreadcrumbManager::GetInstance());
+}
+
+BreadcrumbManagerObserver::~BreadcrumbManagerObserver() = default;
+
+}  // namespace breadcrumbs
\ No newline at end of file
diff --git a/components/breadcrumbs/core/breadcrumb_manager_observer.h b/components/breadcrumbs/core/breadcrumb_manager_observer.h
index 88c4c1e..dd80f8f 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_observer.h
+++ b/components/breadcrumbs/core/breadcrumb_manager_observer.h
@@ -8,11 +8,11 @@
 #include <string>
 
 #include "base/observer_list_types.h"
+#include "base/scoped_observation.h"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 
 namespace breadcrumbs {
 
-class BreadcrumbManager;
-
 class BreadcrumbManagerObserver : public base::CheckedObserver {
  public:
   BreadcrumbManagerObserver(const BreadcrumbManagerObserver&) = delete;
@@ -30,7 +30,13 @@
   virtual void OldEventsRemoved(BreadcrumbManager* manager) {}
 
  protected:
-  BreadcrumbManagerObserver() = default;
+  BreadcrumbManagerObserver();
+  ~BreadcrumbManagerObserver() override;
+
+ private:
+  // Tracks observed BreadcrumbManager and stops observing on destruction.
+  base::ScopedObservation<BreadcrumbManager, BreadcrumbManagerObserver>
+      breadcrumb_manager_observation_{this};
 };
 
 }  // namespace breadcrumbs
diff --git a/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc b/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc
index 5d0d577e..3f22c7d 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc
@@ -10,7 +10,6 @@
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "components/breadcrumbs/core/breadcrumb_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
@@ -49,16 +48,11 @@
 
 class BreadcrumbManagerObserverTest : public PlatformTest {
  protected:
-  BreadcrumbManagerObserverTest() { manager_.AddObserver(&observer_); }
-
-  ~BreadcrumbManagerObserverTest() override {
-    manager_.RemoveObserver(&observer_);
-  }
+  BreadcrumbManagerObserverTest() = default;
+  ~BreadcrumbManagerObserverTest() override = default;
 
   base::test::TaskEnvironment task_env_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
-
-  BreadcrumbManager manager_{GetStartTime()};
   FakeBreadcrumbManagerObserver observer_;
 };
 
@@ -69,9 +63,10 @@
   ASSERT_TRUE(observer_.event_added_last_received_event_.empty());
 
   const std::string event = "event";
-  manager_.AddEvent(event);
+  BreadcrumbManager::GetInstance().AddEvent(event);
 
-  EXPECT_EQ(&manager_, observer_.event_added_last_received_manager_);
+  EXPECT_EQ(&BreadcrumbManager::GetInstance(),
+            observer_.event_added_last_received_manager_);
   // A timestamp will be prepended to the event passed to |AddEvent|.
   EXPECT_NE(std::string::npos,
             observer_.event_added_last_received_event_.find(event));
@@ -83,13 +78,14 @@
   ASSERT_FALSE(observer_.old_events_removed_last_received_manager_);
 
   const std::string event = "event";
-  manager_.AddEvent(event);
+  BreadcrumbManager::GetInstance().AddEvent(event);
   task_env_.FastForwardBy(base::Hours(1));
-  manager_.AddEvent(event);
+  BreadcrumbManager::GetInstance().AddEvent(event);
   task_env_.FastForwardBy(base::Hours(1));
-  manager_.AddEvent(event);
+  BreadcrumbManager::GetInstance().AddEvent(event);
 
-  EXPECT_EQ(&manager_, observer_.old_events_removed_last_received_manager_);
+  EXPECT_EQ(&BreadcrumbManager::GetInstance(),
+            observer_.old_events_removed_last_received_manager_);
 }
 
 }  // namespace breadcrumbs
diff --git a/components/breadcrumbs/core/breadcrumb_manager_unittest.cc b/components/breadcrumbs/core/breadcrumb_manager_unittest.cc
index 0a674100..5963c98 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_unittest.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager_unittest.cc
@@ -9,12 +9,25 @@
 
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
-#include "components/breadcrumbs/core/breadcrumb_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
 namespace breadcrumbs {
 
+namespace {
+
+// Adds `event` to the BreadcrumbManager.
+void AddEvent(const std::string& event) {
+  BreadcrumbManager::GetInstance().AddEvent(event);
+}
+
+// Returns the last event added to the BreadcrumbManager.
+std::string GetLastEvent() {
+  return BreadcrumbManager::GetInstance().GetEvents().back();
+}
+
+}  // namespace
+
 // Test fixture for testing BreadcrumbManager class.
 class BreadcrumbManagerTest : public PlatformTest {
  protected:
@@ -22,19 +35,14 @@
 
   base::test::TaskEnvironment task_env_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
-
-  // Set the start time to the current time at the start of each test rather
-  // than breadcrumbs::GetStartTime(), to ensure that timestamps start at
-  // 0:00:00. Otherwise, failures in earlier tests may progress MOCK_TIME by a
-  // few seconds, throwing off timestamps and causing these tests to also fail.
-  BreadcrumbManager breadcrumb_manager_{base::TimeTicks::Now()};
 };
 
 // Tests that an event is logged and returned.
 TEST_F(BreadcrumbManagerTest, AddEvent) {
   const std::string event_message = "event";
-  breadcrumb_manager_.AddEvent(event_message);
-  const std::list<std::string>& events = breadcrumb_manager_.GetEvents();
+  AddEvent(event_message);
+  const std::list<std::string>& events =
+      BreadcrumbManager::GetInstance().GetEvents();
   ASSERT_EQ(1ul, events.size());
   // Events returned from |GetEvents| will have a timestamp prepended.
   EXPECT_NE(std::string::npos, events.front().find(event_message));
@@ -43,21 +51,21 @@
 // Tests that old event buckets are dropped.
 TEST_F(BreadcrumbManagerTest, OldEventsDropped) {
   // Log an event from one and two hours ago.
-  breadcrumb_manager_.AddEvent("event1");
+  AddEvent("event1");
   task_env_.FastForwardBy(base::Hours(1));
-  breadcrumb_manager_.AddEvent("event2");
+  AddEvent("event2");
   task_env_.FastForwardBy(base::Hours(1));
 
   // Log three events separated by three minutes to ensure they receive their
   // own event bucket. Otherwise, some old events may be returned to ensure a
   // minimum number of available events. See |MinimumEventsReturned| test below.
-  breadcrumb_manager_.AddEvent("event3");
+  AddEvent("event3");
   task_env_.FastForwardBy(base::Minutes(3));
-  breadcrumb_manager_.AddEvent("event4");
+  AddEvent("event4");
   task_env_.FastForwardBy(base::Minutes(3));
-  breadcrumb_manager_.AddEvent("event5");
+  AddEvent("event5");
 
-  std::list<std::string> events = breadcrumb_manager_.GetEvents();
+  std::list<std::string> events = BreadcrumbManager::GetInstance().GetEvents();
   ASSERT_EQ(3ul, events.size());
   // Validate the three most recent events are the ones which were returned.
   EXPECT_EQ("2:00:00 event3", events.front());
@@ -70,28 +78,28 @@
 // Tests that expired events are returned if not enough new events exist.
 TEST_F(BreadcrumbManagerTest, MinimumEventsReturned) {
   // Log an event from one and two hours ago.
-  breadcrumb_manager_.AddEvent("event1");
+  AddEvent("event1");
   task_env_.FastForwardBy(base::Hours(1));
-  breadcrumb_manager_.AddEvent("event2");
+  AddEvent("event2");
   task_env_.FastForwardBy(base::Hours(1));
-  breadcrumb_manager_.AddEvent("event3");
+  AddEvent("event3");
 
-  EXPECT_EQ(2ul, breadcrumb_manager_.GetEvents().size());
+  EXPECT_EQ(2ul, BreadcrumbManager::GetInstance().GetEvents().size());
 }
 
 // Tests that event timestamps are formatted as expected.
 TEST_F(BreadcrumbManagerTest, EventTimestampsFormatted) {
-  breadcrumb_manager_.AddEvent("event1");
-  EXPECT_EQ("0:00:00 event1", breadcrumb_manager_.GetEvents().back());
+  AddEvent("event1");
+  EXPECT_EQ("0:00:00 event1", GetLastEvent());
   task_env_.FastForwardBy(base::Seconds(100));
-  breadcrumb_manager_.AddEvent("event2");
-  EXPECT_EQ("0:01:40 event2", breadcrumb_manager_.GetEvents().back());
+  AddEvent("event2");
+  EXPECT_EQ("0:01:40 event2", GetLastEvent());
   task_env_.FastForwardBy(base::Hours(100));
-  breadcrumb_manager_.AddEvent("event3");
-  EXPECT_EQ("100:01:40 event3", breadcrumb_manager_.GetEvents().back());
+  AddEvent("event3");
+  EXPECT_EQ("100:01:40 event3", GetLastEvent());
   task_env_.FastForwardBy(base::Minutes(100));
-  breadcrumb_manager_.AddEvent("event4");
-  EXPECT_EQ("101:41:40 event4", breadcrumb_manager_.GetEvents().back());
+  AddEvent("event4");
+  EXPECT_EQ("101:41:40 event4", GetLastEvent());
 }
 
 }  // namespace breadcrumbs
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc
index df62db42..f8b5d64 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc
@@ -20,7 +20,6 @@
 #include "base/task/thread_pool.h"
 #include "build/build_config.h"
 #include "components/breadcrumbs/core/breadcrumb_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
 #include "components/breadcrumbs/core/breadcrumb_persistent_storage_util.h"
 
 namespace breadcrumbs {
@@ -173,26 +172,6 @@
       std::move(callback));
 }
 
-void BreadcrumbPersistentStorageManager::MonitorBreadcrumbManager(
-    BreadcrumbManager* manager) {
-  manager->AddObserver(this);
-}
-
-void BreadcrumbPersistentStorageManager::MonitorBreadcrumbManagerService(
-    BreadcrumbManagerKeyedService* service) {
-  service->AddObserver(this);
-}
-
-void BreadcrumbPersistentStorageManager::StopMonitoringBreadcrumbManager(
-    BreadcrumbManager* manager) {
-  manager->RemoveObserver(this);
-}
-
-void BreadcrumbPersistentStorageManager::StopMonitoringBreadcrumbManagerService(
-    BreadcrumbManagerKeyedService* service) {
-  service->RemoveObserver(this);
-}
-
 void BreadcrumbPersistentStorageManager::CombineEventsAndRewriteAllBreadcrumbs(
     const std::vector<std::string> pending_breadcrumbs,
     std::vector<std::string> existing_events) {
@@ -244,9 +223,8 @@
   last_written_time_ = base::TimeTicks::Now();
   file_position_ = 0;
 
-  // Load persisted events directly from file because the correct order can not
-  // be reconstructed from the multiple BreadcrumbManagers with the partial
-  // timestamps embedded in each event.
+  // Load persisted events directly from file.
+  // TODO(crbug.com/1360583): get events from BreadcrumbManager instead.
   GetStoredEvents(base::BindOnce(&BreadcrumbPersistentStorageManager::
                                      CombineEventsAndRewriteAllBreadcrumbs,
                                  weak_ptr_factory_.GetWeakPtr(),
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h
index 6648390..af91f52 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h
@@ -12,6 +12,7 @@
 #include "base/files/file_path.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "components/breadcrumbs/core/breadcrumb_manager_observer.h"
 #include "components/breadcrumbs/core/breadcrumbs_status.h"
 #include "components/breadcrumbs/core/crash_reporter_breadcrumb_constants.h"
@@ -19,9 +20,6 @@
 
 namespace breadcrumbs {
 
-class BreadcrumbManager;
-class BreadcrumbManagerKeyedService;
-
 // The filesize for the file at |breadcrumbs_file_path_|. The file will always
 // be this constant size because it is accessed using a memory mapped file. The
 // file is twice as large as |kMaxDataLength| which leaves room for appending
@@ -34,7 +32,8 @@
 // application sessions.
 class BreadcrumbPersistentStorageManager : public BreadcrumbManagerObserver {
  public:
-  // Breadcrumbs will be stored in a file in |directory|.
+  // Observes the BreadcrumbManager and stores observed breadcrumb events to a
+  // file in `directory`.
   explicit BreadcrumbPersistentStorageManager(
       const base::FilePath& directory,
       base::RepeatingCallback<bool()> is_metrics_enabled_callback);
@@ -48,19 +47,6 @@
   void GetStoredEvents(
       base::OnceCallback<void(std::vector<std::string>)> callback);
 
-  // Starts observing |manager| for events. Existing events will be persisted
-  // immediately.
-  void MonitorBreadcrumbManager(BreadcrumbManager* manager);
-  // Starts observing |service| for events. Existing events will be persisted
-  // immediately.
-  void MonitorBreadcrumbManagerService(BreadcrumbManagerKeyedService* service);
-
-  // Stops observing |manager|.
-  void StopMonitoringBreadcrumbManager(BreadcrumbManager* manager);
-  // Stops observing |service|.
-  void StopMonitoringBreadcrumbManagerService(
-      BreadcrumbManagerKeyedService* service);
-
  private:
   // Returns whether metrics consent has been provided and the persistent
   // storage manager can therefore create its breadcrumbs files. Deletes any
@@ -82,7 +68,7 @@
       const std::vector<std::string> pending_breadcrumbs,
       std::vector<std::string> existing_events);
 
-  // Writes events from observed managers to |breadcrumbs_file_|, overwriting
+  // Writes events from BreadcrumbManager to `breadcrumbs_file_`, overwriting
   // any existing persisted breadcrumbs.
   void RewriteAllExistingBreadcrumbs();
 
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager_unittest.cc b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager_unittest.cc
index 9ccfd987..c0e81bd 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager_unittest.cc
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager_unittest.cc
@@ -72,12 +72,9 @@
         /*is_metrics_enabled_callback=*/base::BindRepeating(
             &BreadcrumbPersistentStorageManagerTest::is_metrics_enabled,
             base::Unretained(this)));
-    breadcrumb_manager_service_.StartPersisting(persistent_storage_.get());
   }
 
-  ~BreadcrumbPersistentStorageManagerTest() override {
-    breadcrumb_manager_service_.StopPersisting();
-  }
+  ~BreadcrumbPersistentStorageManagerTest() override = default;
 
   // Calls `GetStoredEvents()` and wait for its posted tasks to complete.
   std::vector<std::string> GetPersistedEvents() {
diff --git a/components/breadcrumbs/core/breadcrumb_util.cc b/components/breadcrumbs/core/breadcrumb_util.cc
deleted file mode 100644
index ee0ce2f..0000000
--- a/components/breadcrumbs/core/breadcrumb_util.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2021 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/breadcrumbs/core/breadcrumb_util.h"
-
-#include "base/time/time.h"
-
-namespace breadcrumbs {
-
-base::TimeTicks GetStartTime() {
-  static base::TimeTicks start_time = base::TimeTicks::Now();
-  return start_time;
-}
-
-}  // namespace breadcrumbs
\ No newline at end of file
diff --git a/components/breadcrumbs/core/breadcrumb_util.h b/components/breadcrumbs/core/breadcrumb_util.h
deleted file mode 100644
index 82878760..0000000
--- a/components/breadcrumbs/core/breadcrumb_util.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2021 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_UTIL_H_
-#define COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_UTIL_H_
-
-namespace base {
-class TimeTicks;
-}
-
-namespace breadcrumbs {
-
-// Returns the time when breadcrumbs logging started, for use in calculating
-// breadcrumbs timestamps.
-base::TimeTicks GetStartTime();
-
-}  // namespace breadcrumbs
-
-#endif  // COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_UTIL_H_
diff --git a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc
index edd2bf3..5677d94 100644
--- a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc
+++ b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc
@@ -9,6 +9,7 @@
 
 #include "base/containers/adapters.h"
 #include "base/no_destructor.h"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "components/breadcrumbs/core/crash_reporter_breadcrumb_constants.h"
 #include "components/crash/core/common/crash_key.h"
 
@@ -34,34 +35,6 @@
   return *instance;
 }
 
-void CrashReporterBreadcrumbObserver::ObserveBreadcrumbManager(
-    BreadcrumbManager* breadcrumb_manager) {
-  breadcrumb_manager_observations_.AddObservation(breadcrumb_manager);
-}
-
-void CrashReporterBreadcrumbObserver::StopObservingBreadcrumbManager(
-    BreadcrumbManager* breadcrumb_manager) {
-  breadcrumb_manager_observations_.RemoveObservation(breadcrumb_manager);
-}
-
-void CrashReporterBreadcrumbObserver::ObserveBreadcrumbManagerService(
-    BreadcrumbManagerKeyedService* breadcrumb_manager_service) {
-  breadcrumb_manager_service_observations_.AddObservation(
-      breadcrumb_manager_service);
-}
-
-void CrashReporterBreadcrumbObserver::StopObservingBreadcrumbManagerService(
-    BreadcrumbManagerKeyedService* breadcrumb_manager_service) {
-  // |breadcrumb_manager_service| may not be observed, because the incognito
-  // BrowserState deletes itself before initializing on iOS (see
-  // scene_controller::destroyAndRebuildIncognitoBrowserState).
-  if (breadcrumb_manager_service_observations_.IsObservingSource(
-          breadcrumb_manager_service)) {
-    breadcrumb_manager_service_observations_.RemoveObservation(
-        breadcrumb_manager_service);
-  }
-}
-
 void CrashReporterBreadcrumbObserver::SetPreviousSessionEvents(
     const std::vector<std::string>& events) {
   breadcrumbs_.insert(breadcrumbs_.begin(), events.begin(), events.end());
diff --git a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h
index 31de40f..e7460cedc 100644
--- a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h
+++ b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h
@@ -10,9 +10,7 @@
 
 #include "base/containers/circular_deque.h"
 #include "base/no_destructor.h"
-#include "base/scoped_multi_source_observation.h"
 #include "components/breadcrumbs/core/breadcrumb_manager.h"
-#include "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
 #include "components/breadcrumbs/core/breadcrumb_manager_observer.h"
 
 class CrashReporterBreadcrumbObserverTest;
@@ -22,28 +20,14 @@
 // Key for breadcrumbs attached to crash reports.
 extern const char kBreadcrumbsProductDataKey[];
 
-// Combines breadcrumbs from multiple BreadcrumbManagers and sends the merged
-// breadcrumb events to the embedder's crash reporter (e.g., crashpad, breakpad)
-// for attachment to crash reports.
+// Concatenates breadcrumbs from the BreadcrumbManager and sends the merged
+// string to the embedder's crash reporter (e.g., Crashpad, Breakpad) for
+// attachment to crash reports.
 class CrashReporterBreadcrumbObserver : public BreadcrumbManagerObserver {
  public:
-  // Creates a singleton instance.
+  // Creates a singleton instance that observes the BreadcrumbManager.
   static CrashReporterBreadcrumbObserver& GetInstance();
 
-  // Starts collecting breadcrumb events logged to |breadcrumb_manager|.
-  void ObserveBreadcrumbManager(BreadcrumbManager* breadcrumb_manager);
-
-  // Stops collecting breadcrumb events logged to |breadcrumb_manager|.
-  void StopObservingBreadcrumbManager(BreadcrumbManager* breadcrumb_manager);
-
-  // Starts collecting breadcrumb events logged to |breadcrumb_manager_service|.
-  void ObserveBreadcrumbManagerService(
-      BreadcrumbManagerKeyedService* breadcrumb_manager_service);
-
-  // Stops collecting breadcrumb events logged to |breadcrumb_manager_service|.
-  void StopObservingBreadcrumbManagerService(
-      BreadcrumbManagerKeyedService* breadcrumb_manager_service);
-
   // Sets breadcrumb events associated with the previous application session.
   // Note: this behaves the same as EventAdded(), but takes multiple events and
   // adds them to the start of the breadcrumbs log.
@@ -67,17 +51,6 @@
   // report. Older events are at the front. A maximum size is enforced for
   // privacy purposes, so old events may be removed when new events are added.
   base::circular_deque<std::string> breadcrumbs_;
-
-  // Tracks observed BreadcrumbManagers and stops observing them on destruction.
-  base::ScopedMultiSourceObservation<BreadcrumbManager,
-                                     BreadcrumbManagerObserver>
-      breadcrumb_manager_observations_{this};
-
-  // Tracks observed BreadcrumbManagerKeyedServices and stops observing them on
-  // destruction.
-  base::ScopedMultiSourceObservation<BreadcrumbManagerKeyedService,
-                                     BreadcrumbManagerObserver>
-      breadcrumb_manager_service_observations_{this};
 };
 
 }  // namespace breadcrumbs
diff --git a/components/browser_sync/sync_api_component_factory_impl.cc b/components/browser_sync/sync_api_component_factory_impl.cc
index df5db159..1e38a5d 100644
--- a/components/browser_sync/sync_api_component_factory_impl.cc
+++ b/components/browser_sync/sync_api_component_factory_impl.cc
@@ -20,6 +20,7 @@
 #include "components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge.h"
 #include "components/autofill/core/browser/webdata/autofill_wallet_offer_sync_bridge.h"
 #include "components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h"
+#include "components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h"
 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
 #include "components/browser_sync/active_devices_provider_impl.h"
 #include "components/browser_sync/browser_sync_client.h"
@@ -112,6 +113,15 @@
       ->GetControllerDelegate();
 }
 
+base::WeakPtr<syncer::ModelTypeControllerDelegate>
+AutofillWalletUsageDataDelegateFromDataService(
+    autofill::AutofillWebDataService* service) {
+  return autofill::AutofillWalletUsageDataSyncBridge::FromWebDataService(
+             service)
+      ->change_processor()
+      ->GetControllerDelegate();
+}
+
 // Helper function that deals will null (e.g. tests, iOS webview).
 base::WeakPtr<syncer::SyncableService> SyncableServiceForPrefs(
     sync_preferences::PrefServiceSyncable* prefs_service,
@@ -221,8 +231,8 @@
           sync_service));
     }
 
-    // Wallet offer data is enabled by default. Register unless explicitly
-    // disabled.
+    // Wallet offer sync depends on Wallet data sync. Register if neither
+    // Wallet data nor Wallet offer sync is explicitly disabled.
     if (!disabled_types.Has(syncer::AUTOFILL_WALLET_DATA) &&
         !disabled_types.Has(syncer::AUTOFILL_WALLET_OFFER)) {
       controllers.push_back(CreateWalletModelTypeController(
@@ -230,6 +240,17 @@
           base::BindRepeating(&AutofillWalletOfferDelegateFromDataService),
           sync_service));
     }
+
+    // Wallet usage data sync depends on Wallet data sync. Register if neither
+    // Wallet data nor Wallet usage data sync is explicitly disabled.
+    if (base::FeatureList::IsEnabled(syncer::kSyncAutofillWalletUsageData) &&
+        !disabled_types.Has(syncer::AUTOFILL_WALLET_DATA) &&
+        !disabled_types.Has(syncer::AUTOFILL_WALLET_USAGE)) {
+      controllers.push_back(CreateWalletModelTypeController(
+          syncer::AUTOFILL_WALLET_USAGE,
+          base::BindRepeating(&AutofillWalletUsageDataDelegateFromDataService),
+          sync_service));
+    }
   }
 
   // Bookmark sync is enabled by default.  Register unless explicitly
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc
index a79b955b..1136858 100644
--- a/components/feature_engagement/public/feature_constants.cc
+++ b/components/feature_engagement/public/feature_constants.cc
@@ -10,302 +10,400 @@
 namespace feature_engagement {
 
 // Features used by the In-Product Help system.
-const base::Feature kEnableAutomaticSnooze{"EnableAutomaticSnooze",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDemoMode{"IPH_DemoMode",
-                                 base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSnooze{"IPH_Snooze", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kEnableIPH{"EnableIPH", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kUseClientConfigIPH{"UseClientConfigIPH",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableAutomaticSnooze,
+             "EnableAutomaticSnooze",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDemoMode, "IPH_DemoMode", base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSnooze, "IPH_Snooze", base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kEnableIPH, "EnableIPH", base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kUseClientConfigIPH,
+             "UseClientConfigIPH",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Features used by various clients to show their In-Product Help messages.
-const base::Feature kIPHDummyFeature{"IPH_Dummy",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIPHDummyFeature, "IPH_Dummy", base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
     BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
-const base::Feature kIPHBatterySaverModeFeature{
-    "IPH_BatterySaverMode", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDesktopSharedHighlightingFeature{
-    "IPH_DesktopSharedHighlighting", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDesktopTabGroupsNewGroupFeature{
-    "IPH_DesktopTabGroupsNewGroup", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHExtensionsMenuFeature{
-    "IPH_ExtensionsMenu", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHFocusHelpBubbleScreenReaderPromoFeature{
-    "IPH_FocusHelpBubbleScreenReaderPromo", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHGMCCastStartStopFeature{
-    "IPH_GMCCastStartStop", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHHighEfficiencyInfoModeFeature{
-    "IPH_HighEfficiencyInfoMode", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHLiveCaptionFeature{"IPH_LiveCaption",
-                                           base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHTabAudioMutingFeature{"IPH_TabAudioMuting",
-                                              base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHPasswordsAccountStorageFeature{
-    "IPH_PasswordsAccountStorage", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHReadingListDiscoveryFeature{
-    "IPH_ReadingListDiscovery", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHReadingListEntryPointFeature{
-    "IPH_ReadingListEntryPoint", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHReadingListInSidePanelFeature{
-    "IPH_ReadingListInSidePanel", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHReopenTabFeature{"IPH_ReopenTab",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSideSearchAutoTriggeringFeature{
-    "IPH_SideSearchAutoTriggering", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSideSearchFeature{"IPH_SideSearch",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSideSearchPageActionLabelFeature{
-    "IPH_SideSearchPageActionLabel", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHTabSearchFeature{"IPH_TabSearch",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHWebUITabStripFeature{"IPH_WebUITabStrip",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDesktopSnoozeFeature{"IPH_DesktopSnoozeFeature",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDesktopPwaInstallFeature{
-    "IPH_DesktopPwaInstall", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHProfileSwitchFeature{"IPH_ProfileSwitch",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHIntentChipFeature{"IPH_IntentChip",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHWebUiHelpBubbleTestFeature(
-    "IPH_WebUiHelpBubbleTest",
-    base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHBatterySaverModeFeature,
+             "IPH_BatterySaverMode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDesktopSharedHighlightingFeature,
+             "IPH_DesktopSharedHighlighting",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDesktopTabGroupsNewGroupFeature,
+             "IPH_DesktopTabGroupsNewGroup",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHExtensionsMenuFeature,
+             "IPH_ExtensionsMenu",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFocusHelpBubbleScreenReaderPromoFeature,
+             "IPH_FocusHelpBubbleScreenReaderPromo",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHGMCCastStartStopFeature,
+             "IPH_GMCCastStartStop",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHHighEfficiencyInfoModeFeature,
+             "IPH_HighEfficiencyInfoMode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHLiveCaptionFeature,
+             "IPH_LiveCaption",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabAudioMutingFeature,
+             "IPH_TabAudioMuting",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPasswordsAccountStorageFeature,
+             "IPH_PasswordsAccountStorage",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadingListDiscoveryFeature,
+             "IPH_ReadingListDiscovery",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadingListEntryPointFeature,
+             "IPH_ReadingListEntryPoint",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadingListInSidePanelFeature,
+             "IPH_ReadingListInSidePanel",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReopenTabFeature,
+             "IPH_ReopenTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSideSearchAutoTriggeringFeature,
+             "IPH_SideSearchAutoTriggering",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSideSearchFeature,
+             "IPH_SideSearch",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSideSearchPageActionLabelFeature,
+             "IPH_SideSearchPageActionLabel",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabSearchFeature,
+             "IPH_TabSearch",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHWebUITabStripFeature,
+             "IPH_WebUITabStrip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDesktopSnoozeFeature,
+             "IPH_DesktopSnoozeFeature",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDesktopPwaInstallFeature,
+             "IPH_DesktopPwaInstall",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHProfileSwitchFeature,
+             "IPH_ProfileSwitch",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHIntentChipFeature,
+             "IPH_IntentChip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHWebUiHelpBubbleTestFeature,
+             "IPH_WebUiHelpBubbleTest",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
 #if BUILDFLAG(IS_ANDROID)
-const base::Feature kIPHAdaptiveButtonInTopToolbarCustomizationNewTabFeature{
-    "IPH_AdaptiveButtonInTopToolbarCustomization_NewTab",
-    base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHAdaptiveButtonInTopToolbarCustomizationShareFeature{
-    "IPH_AdaptiveButtonInTopToolbarCustomization_Share",
-    base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature
-    kIPHAdaptiveButtonInTopToolbarCustomizationVoiceSearchFeature{
-        "IPH_AdaptiveButtonInTopToolbarCustomization_VoiceSearch",
-        base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHAddToHomescreenMessageFeature{
-    "IPH_AddToHomescreenMessage", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHAutoDarkOptOutFeature{"IPH_AutoDarkOptOut",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHAutoDarkUserEducationMessageFeature{
-    "IPH_AutoDarkUserEducationMessage", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHAutoDarkUserEducationMessageOptInFeature{
-    "IPH_AutoDarkUserEducationMessageOptIn", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHContextualPageActionsPriceTrackingFeature{
-    "IPH_ContextualPageActions_PriceTracking",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHContextualPageActionsPriceTrackingActionChipFeature{
-    "IPH_ContextualPageActions_PriceTrackingActionChip",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHCrowFeature{"IPH_Crow",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDataSaverDetailFeature{
-    "IPH_DataSaverDetail", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHDataSaverMilestonePromoFeature{
-    "IPH_DataSaverMilestonePromo", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDataSaverPreviewFeature{
-    "IPH_DataSaverPreview", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadHomeFeature{"IPH_DownloadHome",
-                                            base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadIndicatorFeature{
-    "IPH_DownloadIndicator", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadPageFeature{"IPH_DownloadPage",
-                                            base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadPageScreenshotFeature{
-    "IPH_DownloadPageScreenshot", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHChromeHomeExpandFeature{
-    "IPH_ChromeHomeExpand", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHChromeHomePullToRefreshFeature{
-    "IPH_ChromeHomePullToRefresh", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadSettingsFeature{
-    "IPH_DownloadSettings", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadInfoBarDownloadContinuingFeature{
-    "IPH_DownloadInfoBarDownloadContinuing", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDownloadInfoBarDownloadsAreFasterFeature{
-    "IPH_DownloadInfoBarDownloadsAreFaster", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHQuietNotificationPromptsFeature{
-    "IPH_QuietNotificationPrompts", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHReadLaterContextMenuFeature{
-    "IPH_ReadLaterContextMenu", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHReadLaterAppMenuBookmarkThisPageFeature{
-    "IPH_ReadLaterAppMenuBookmarkThisPage", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHReadLaterAppMenuBookmarksFeature{
-    "IPH_ReadLaterAppMenuBookmarks", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHReadLaterBottomSheetFeature{
-    "IPH_ReadLaterBottomSheet", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHRequestDesktopSiteAppMenuFeature{
-    "IPH_RequestDesktopSiteAppMenu", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHShoppingListSaveFlowFeature{
-    "IPH_ShoppingListSaveFlow", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHEphemeralTabFeature{"IPH_EphemeralTab",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature
-    kIPHFeatureNotificationGuideDefaultBrowserNotificationShownFeature{
-        "IPH_FeatureNotificationGuideDefaultBrowserNotificationShown",
-        base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideSignInNotificationShownFeature{
-    "IPH_FeatureNotificationGuideSignInNotificationShown",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature
-    kIPHFeatureNotificationGuideIncognitoTabNotificationShownFeature{
-        "IPH_FeatureNotificationGuideIncognitoTabNotificationShown",
-        base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature
-    kIPHFeatureNotificationGuideNTPSuggestionCardNotificationShownFeature{
-        "IPH_FeatureNotificationGuideNTPSuggestionCardNotificationShown",
-        base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature
-    kIPHFeatureNotificationGuideVoiceSearchNotificationShownFeature{
-        "IPH_FeatureNotificationGuideVoiceSearchNotificationShown",
-        base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideDefaultBrowserPromoFeature{
-    "IPH_FeatureNotificationGuideDefaultBrowserPromo",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideSignInHelpBubbleFeature{
-    "IPH_FeatureNotificationGuideSignInHelpBubble",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideIncognitoTabHelpBubbleFeature{
-    "IPH_FeatureNotificationGuideIncognitoTabHelpBubble",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature
-    kIPHFeatureNotificationGuideNTPSuggestionCardHelpBubbleFeature{
-        "IPH_FeatureNotificationGuideNTPSuggestionCardHelpBubble",
-        base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideVoiceSearchHelpBubbleFeature{
-    "IPH_FeatureNotificationGuideVoiceSearchHelpBubble",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideIncognitoTabUsedFeature{
-    "IPH_FeatureNotificationGuideIncognitoTabUsed",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeatureNotificationGuideVoiceSearchUsedFeature{
-    "IPH_FeatureNotificationGuideVoiceSearchUsed",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeedCardMenuFeature{"IPH_FeedCardMenu",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHGenericAlwaysTriggerHelpUiFeature{
-    "IPH_GenericAlwaysTriggerHelpUiFeature", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHIdentityDiscFeature{"IPH_IdentityDisc",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHInstanceSwitcherFeature{
-    "IPH_InstanceSwitcher", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHKeyboardAccessoryAddressFillingFeature{
-    "IPH_KeyboardAccessoryAddressFilling", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHKeyboardAccessoryBarSwipingFeature{
-    "IPH_KeyboardAccessoryBarSwiping", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHKeyboardAccessoryPasswordFillingFeature{
-    "IPH_KeyboardAccessoryPasswordFilling", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHKeyboardAccessoryPaymentFillingFeature{
-    "IPH_KeyboardAccessoryPaymentFilling", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHKeyboardAccessoryPaymentOfferFeature{
-    "IPH_KeyboardAccessoryPaymentOffer", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHLowUserEngagementDetectorFeature{
-    "IPH_LowUserEngagementDetector", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHNewTabPageHomeButtonFeature{
-    "IPH_NewTabPageHomeButton", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHMicToolbarFeature{"IPH_MicToolbar",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHPageInfoFeature{"IPH_PageInfo",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHPageInfoStoreInfoFeature{
-    "IPH_PageInfoStoreInfo", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHPreviewsOmniboxUIFeature{
-    "IPH_PreviewsOmniboxUI", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHPriceDropNTPFeature{"IPH_PriceDropNTP",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHShoppingListMenuItemFeature{
-    "IPH_ShoppingListMenuItem", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHTabGroupsQuicklyComparePagesFeature{
-    "IPH_TabGroupsQuicklyComparePages", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHTabGroupsTapToSeeAnotherTabFeature{
-    "IPH_TabGroupsTapToSeeAnotherTab", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHTabGroupsYourTabsAreTogetherFeature{
-    "IPH_TabGroupsYourTabsTogether", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHTabGroupsDragAndDropFeature{
-    "IPH_TabGroupsDragAndDrop", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHTabSwitcherButtonFeature{
-    "IPH_TabSwitcherButton", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHTranslateMenuButtonFeature{
-    "IPH_TranslateMenuButton", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHVideoTutorialNTPChromeIntroFeature{
-    "IPH_VideoTutorial_NTP_ChromeIntro", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHVideoTutorialNTPDownloadFeature{
-    "IPH_VideoTutorial_NTP_Download", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHVideoTutorialNTPSearchFeature{
-    "IPH_VideoTutorial_NTP_Search", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHVideoTutorialNTPVoiceSearchFeature{
-    "IPH_VideoTutorial_NTP_VoiceSearch", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHVideoTutorialNTPSummaryFeature{
-    "IPH_VideoTutorial_NTP_Summary", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHVideoTutorialTryNowFeature{
-    "IPH_VideoTutorial_TryNow", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHExploreSitesTileFeature{
-    "IPH_ExploreSitesTile", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHFeedHeaderMenuFeature{"IPH_FeedHeaderMenu",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHWebFeedAwarenessFeature{
-    "IPH_WebFeedAwareness", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHFeedSwipeRefresh{"IPH_FeedSwipeRefresh",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHChromeReengagementNotification1Feature{
-    "IPH_ChromeReengagementNotification1", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHChromeReengagementNotification2Feature{
-    "IPH_ChromeReengagementNotification2", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHChromeReengagementNotification3Feature{
-    "IPH_ChromeReengagementNotification3", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHPwaInstallAvailableFeature{
-    "IPH_PwaInstallAvailableFeature", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHShareScreenshotFeature{
-    "IPH_ShareScreenshot", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSharingHubLinkToggleFeature{
-    "IPH_SharingHubLinkToggle", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHWebFeedFollowFeature{"IPH_WebFeedFollow",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHWebFeedPostFollowDialogFeature{
-    "IPH_WebFeedPostFollowDialog", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHSharedHighlightingBuilder{
-    "IPH_SharedHighlightingBuilder", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSharedHighlightingReceiverFeature{
-    "IPH_SharedHighlightingReceiver", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHSharingHubWebnotesStylizeFeature{
-    "IPH_SharingHubWebnotesStylize", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kIPHAdaptiveButtonInTopToolbarCustomizationNewTabFeature,
+             "IPH_AdaptiveButtonInTopToolbarCustomization_NewTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHAdaptiveButtonInTopToolbarCustomizationShareFeature,
+             "IPH_AdaptiveButtonInTopToolbarCustomization_Share",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHAdaptiveButtonInTopToolbarCustomizationVoiceSearchFeature,
+             "IPH_AdaptiveButtonInTopToolbarCustomization_VoiceSearch",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHAddToHomescreenMessageFeature,
+             "IPH_AddToHomescreenMessage",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHAutoDarkOptOutFeature,
+             "IPH_AutoDarkOptOut",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHAutoDarkUserEducationMessageFeature,
+             "IPH_AutoDarkUserEducationMessage",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHAutoDarkUserEducationMessageOptInFeature,
+             "IPH_AutoDarkUserEducationMessageOptIn",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHContextualPageActionsPriceTrackingFeature,
+             "IPH_ContextualPageActions_PriceTracking",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHContextualPageActionsPriceTrackingActionChipFeature,
+             "IPH_ContextualPageActions_PriceTrackingActionChip",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHCrowFeature, "IPH_Crow", base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDataSaverDetailFeature,
+             "IPH_DataSaverDetail",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDataSaverMilestonePromoFeature,
+             "IPH_DataSaverMilestonePromo",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDataSaverPreviewFeature,
+             "IPH_DataSaverPreview",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadHomeFeature,
+             "IPH_DownloadHome",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadIndicatorFeature,
+             "IPH_DownloadIndicator",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadPageFeature,
+             "IPH_DownloadPage",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadPageScreenshotFeature,
+             "IPH_DownloadPageScreenshot",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHChromeHomeExpandFeature,
+             "IPH_ChromeHomeExpand",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHChromeHomePullToRefreshFeature,
+             "IPH_ChromeHomePullToRefresh",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadSettingsFeature,
+             "IPH_DownloadSettings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadInfoBarDownloadContinuingFeature,
+             "IPH_DownloadInfoBarDownloadContinuing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDownloadInfoBarDownloadsAreFasterFeature,
+             "IPH_DownloadInfoBarDownloadsAreFaster",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHQuietNotificationPromptsFeature,
+             "IPH_QuietNotificationPrompts",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadLaterContextMenuFeature,
+             "IPH_ReadLaterContextMenu",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadLaterAppMenuBookmarkThisPageFeature,
+             "IPH_ReadLaterAppMenuBookmarkThisPage",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadLaterAppMenuBookmarksFeature,
+             "IPH_ReadLaterAppMenuBookmarks",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadLaterBottomSheetFeature,
+             "IPH_ReadLaterBottomSheet",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHRequestDesktopSiteAppMenuFeature,
+             "IPH_RequestDesktopSiteAppMenu",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHShoppingListSaveFlowFeature,
+             "IPH_ShoppingListSaveFlow",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHEphemeralTabFeature,
+             "IPH_EphemeralTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideDefaultBrowserNotificationShownFeature,
+             "IPH_FeatureNotificationGuideDefaultBrowserNotificationShown",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideSignInNotificationShownFeature,
+             "IPH_FeatureNotificationGuideSignInNotificationShown",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideIncognitoTabNotificationShownFeature,
+             "IPH_FeatureNotificationGuideIncognitoTabNotificationShown",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(
+    kIPHFeatureNotificationGuideNTPSuggestionCardNotificationShownFeature,
+    "IPH_FeatureNotificationGuideNTPSuggestionCardNotificationShown",
+    base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideVoiceSearchNotificationShownFeature,
+             "IPH_FeatureNotificationGuideVoiceSearchNotificationShown",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideDefaultBrowserPromoFeature,
+             "IPH_FeatureNotificationGuideDefaultBrowserPromo",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideSignInHelpBubbleFeature,
+             "IPH_FeatureNotificationGuideSignInHelpBubble",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideIncognitoTabHelpBubbleFeature,
+             "IPH_FeatureNotificationGuideIncognitoTabHelpBubble",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideNTPSuggestionCardHelpBubbleFeature,
+             "IPH_FeatureNotificationGuideNTPSuggestionCardHelpBubble",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideVoiceSearchHelpBubbleFeature,
+             "IPH_FeatureNotificationGuideVoiceSearchHelpBubble",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideIncognitoTabUsedFeature,
+             "IPH_FeatureNotificationGuideIncognitoTabUsed",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeatureNotificationGuideVoiceSearchUsedFeature,
+             "IPH_FeatureNotificationGuideVoiceSearchUsed",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeedCardMenuFeature,
+             "IPH_FeedCardMenu",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHGenericAlwaysTriggerHelpUiFeature,
+             "IPH_GenericAlwaysTriggerHelpUiFeature",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHIdentityDiscFeature,
+             "IPH_IdentityDisc",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHInstanceSwitcherFeature,
+             "IPH_InstanceSwitcher",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHKeyboardAccessoryAddressFillingFeature,
+             "IPH_KeyboardAccessoryAddressFilling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHKeyboardAccessoryBarSwipingFeature,
+             "IPH_KeyboardAccessoryBarSwiping",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHKeyboardAccessoryPasswordFillingFeature,
+             "IPH_KeyboardAccessoryPasswordFilling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHKeyboardAccessoryPaymentFillingFeature,
+             "IPH_KeyboardAccessoryPaymentFilling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHKeyboardAccessoryPaymentOfferFeature,
+             "IPH_KeyboardAccessoryPaymentOffer",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHLowUserEngagementDetectorFeature,
+             "IPH_LowUserEngagementDetector",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHNewTabPageHomeButtonFeature,
+             "IPH_NewTabPageHomeButton",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHMicToolbarFeature,
+             "IPH_MicToolbar",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPageInfoFeature,
+             "IPH_PageInfo",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPageInfoStoreInfoFeature,
+             "IPH_PageInfoStoreInfo",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPreviewsOmniboxUIFeature,
+             "IPH_PreviewsOmniboxUI",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPriceDropNTPFeature,
+             "IPH_PriceDropNTP",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHShoppingListMenuItemFeature,
+             "IPH_ShoppingListMenuItem",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabGroupsQuicklyComparePagesFeature,
+             "IPH_TabGroupsQuicklyComparePages",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabGroupsTapToSeeAnotherTabFeature,
+             "IPH_TabGroupsTapToSeeAnotherTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabGroupsYourTabsAreTogetherFeature,
+             "IPH_TabGroupsYourTabsTogether",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabGroupsDragAndDropFeature,
+             "IPH_TabGroupsDragAndDrop",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTabSwitcherButtonFeature,
+             "IPH_TabSwitcherButton",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHTranslateMenuButtonFeature,
+             "IPH_TranslateMenuButton",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHVideoTutorialNTPChromeIntroFeature,
+             "IPH_VideoTutorial_NTP_ChromeIntro",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHVideoTutorialNTPDownloadFeature,
+             "IPH_VideoTutorial_NTP_Download",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHVideoTutorialNTPSearchFeature,
+             "IPH_VideoTutorial_NTP_Search",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHVideoTutorialNTPVoiceSearchFeature,
+             "IPH_VideoTutorial_NTP_VoiceSearch",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHVideoTutorialNTPSummaryFeature,
+             "IPH_VideoTutorial_NTP_Summary",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHVideoTutorialTryNowFeature,
+             "IPH_VideoTutorial_TryNow",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHExploreSitesTileFeature,
+             "IPH_ExploreSitesTile",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeedHeaderMenuFeature,
+             "IPH_FeedHeaderMenu",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHWebFeedAwarenessFeature,
+             "IPH_WebFeedAwareness",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFeedSwipeRefresh,
+             "IPH_FeedSwipeRefresh",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHChromeReengagementNotification1Feature,
+             "IPH_ChromeReengagementNotification1",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHChromeReengagementNotification2Feature,
+             "IPH_ChromeReengagementNotification2",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHChromeReengagementNotification3Feature,
+             "IPH_ChromeReengagementNotification3",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPwaInstallAvailableFeature,
+             "IPH_PwaInstallAvailableFeature",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHShareScreenshotFeature,
+             "IPH_ShareScreenshot",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSharingHubLinkToggleFeature,
+             "IPH_SharingHubLinkToggle",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHWebFeedFollowFeature,
+             "IPH_WebFeedFollow",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHWebFeedPostFollowDialogFeature,
+             "IPH_WebFeedPostFollowDialog",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSharedHighlightingBuilder,
+             "IPH_SharedHighlightingBuilder",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSharedHighlightingReceiverFeature,
+             "IPH_SharedHighlightingReceiver",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHSharingHubWebnotesStylizeFeature,
+             "IPH_SharingHubWebnotesStylize",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(IS_IOS)
-const base::Feature kIPHBottomToolbarTipFeature{
-    "IPH_BottomToolbarTip", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHLongPressToolbarTipFeature{
-    "IPH_LongPressToolbarTip", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHNewTabTipFeature{"IPH_NewTabTip",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHNewIncognitoTabTipFeature{
-    "IPH_NewIncognitoTabTip", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHBadgedReadingListFeature{
-    "IPH_BadgedReadingList", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHReadingListMessagesFeature{
-    "IPH_ReadingListMessages", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHBadgedTranslateManualTriggerFeature{
-    "IPH_BadgedTranslateManualTrigger", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDiscoverFeedHeaderFeature{
-    "IPH_DiscoverFeedHeaderMenu", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHDefaultSiteViewFeature{
-    "IPH_DefaultSiteView", base::FEATURE_ENABLED_BY_DEFAULT};
-const base::Feature kIPHPasswordSuggestionsFeature{
-    "IPH_PasswordSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHFollowWhileBrowsingFeature{
-    "IPH_FollowWhileBrowsing", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kIPHOverflowMenuTipFeature{
-    "IPH_OverflowMenuTip", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIPHBottomToolbarTipFeature,
+             "IPH_BottomToolbarTip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHLongPressToolbarTipFeature,
+             "IPH_LongPressToolbarTip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHNewTabTipFeature,
+             "IPH_NewTabTip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHNewIncognitoTabTipFeature,
+             "IPH_NewIncognitoTabTip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHBadgedReadingListFeature,
+             "IPH_BadgedReadingList",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHReadingListMessagesFeature,
+             "IPH_ReadingListMessages",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHBadgedTranslateManualTriggerFeature,
+             "IPH_BadgedTranslateManualTrigger",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDiscoverFeedHeaderFeature,
+             "IPH_DiscoverFeedHeaderMenu",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHDefaultSiteViewFeature,
+             "IPH_DefaultSiteView",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPasswordSuggestionsFeature,
+             "IPH_PasswordSuggestions",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHFollowWhileBrowsingFeature,
+             "IPH_FollowWhileBrowsing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHOverflowMenuTipFeature,
+             "IPH_OverflowMenuTip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_IOS)
 
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
     BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
-const base::Feature kIPHAutofillVirtualCardSuggestionFeature{
-    "IPH_AutofillVirtualCardSuggestion", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kIPHAutofillVirtualCardSuggestionFeature,
+             "IPH_AutofillVirtualCardSuggestion",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ||
         // BUILDFLAG(IS_FUCHSIA)
diff --git a/components/feature_engagement/public/feature_constants.h b/components/feature_engagement/public/feature_constants.h
index 7d3b0c43..ea7e451 100644
--- a/components/feature_engagement/public/feature_constants.h
+++ b/components/feature_engagement/public/feature_constants.h
@@ -13,50 +13,50 @@
 // A feature for enabling automatic snooze mode for In-Product Help (IPH). When
 // this flag is enabled, we don't show snooze button/UI on the IPH, but on
 // dismiss we will implicitly snooze it until the snooze limit count is reached.
-extern const base::Feature kEnableAutomaticSnooze;
+BASE_DECLARE_FEATURE(kEnableAutomaticSnooze);
 
 // A feature for enabling a demonstration mode for In-Product Help (IPH).
-extern const base::Feature kIPHDemoMode;
+BASE_DECLARE_FEATURE(kIPHDemoMode);
 
 // A feature for enabling a snooze mode for In-Product Help (IPH).
-extern const base::Feature kIPHSnooze;
+BASE_DECLARE_FEATURE(kIPHSnooze);
 
 // A feature for enabling In-Product Help (IPH) to use client side
 // configuration. When this flag is enabled, finch config will be ignored for
 // all IPHs.
-extern const base::Feature kUseClientConfigIPH;
+BASE_DECLARE_FEATURE(kUseClientConfigIPH);
 
 // A feature to ensure all arrays can contain at least one feature.
-extern const base::Feature kIPHDummyFeature;
+BASE_DECLARE_FEATURE(kIPHDummyFeature);
 
-extern const base::Feature kEnableIPH;
+BASE_DECLARE_FEATURE(kEnableIPH);
 
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
     BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
-extern const base::Feature kIPHBatterySaverModeFeature;
-extern const base::Feature kIPHDesktopSharedHighlightingFeature;
-extern const base::Feature kIPHDesktopTabGroupsNewGroupFeature;
-extern const base::Feature kIPHExtensionsMenuFeature;
-extern const base::Feature kIPHFocusHelpBubbleScreenReaderPromoFeature;
-extern const base::Feature kIPHGMCCastStartStopFeature;
-extern const base::Feature kIPHHighEfficiencyInfoModeFeature;
-extern const base::Feature kIPHLiveCaptionFeature;
-extern const base::Feature kIPHTabAudioMutingFeature;
-extern const base::Feature kIPHPasswordsAccountStorageFeature;
-extern const base::Feature kIPHReadingListDiscoveryFeature;
-extern const base::Feature kIPHReadingListEntryPointFeature;
-extern const base::Feature kIPHIntentChipFeature;
-extern const base::Feature kIPHReadingListInSidePanelFeature;
-extern const base::Feature kIPHReopenTabFeature;
-extern const base::Feature kIPHSideSearchAutoTriggeringFeature;
-extern const base::Feature kIPHSideSearchFeature;
-extern const base::Feature kIPHSideSearchPageActionLabelFeature;
-extern const base::Feature kIPHTabSearchFeature;
-extern const base::Feature kIPHWebUITabStripFeature;
-extern const base::Feature kIPHDesktopSnoozeFeature;
-extern const base::Feature kIPHDesktopPwaInstallFeature;
-extern const base::Feature kIPHProfileSwitchFeature;
-extern const base::Feature kIPHWebUiHelpBubbleTestFeature;
+BASE_DECLARE_FEATURE(kIPHBatterySaverModeFeature);
+BASE_DECLARE_FEATURE(kIPHDesktopSharedHighlightingFeature);
+BASE_DECLARE_FEATURE(kIPHDesktopTabGroupsNewGroupFeature);
+BASE_DECLARE_FEATURE(kIPHExtensionsMenuFeature);
+BASE_DECLARE_FEATURE(kIPHFocusHelpBubbleScreenReaderPromoFeature);
+BASE_DECLARE_FEATURE(kIPHGMCCastStartStopFeature);
+BASE_DECLARE_FEATURE(kIPHHighEfficiencyInfoModeFeature);
+BASE_DECLARE_FEATURE(kIPHLiveCaptionFeature);
+BASE_DECLARE_FEATURE(kIPHTabAudioMutingFeature);
+BASE_DECLARE_FEATURE(kIPHPasswordsAccountStorageFeature);
+BASE_DECLARE_FEATURE(kIPHReadingListDiscoveryFeature);
+BASE_DECLARE_FEATURE(kIPHReadingListEntryPointFeature);
+BASE_DECLARE_FEATURE(kIPHIntentChipFeature);
+BASE_DECLARE_FEATURE(kIPHReadingListInSidePanelFeature);
+BASE_DECLARE_FEATURE(kIPHReopenTabFeature);
+BASE_DECLARE_FEATURE(kIPHSideSearchAutoTriggeringFeature);
+BASE_DECLARE_FEATURE(kIPHSideSearchFeature);
+BASE_DECLARE_FEATURE(kIPHSideSearchPageActionLabelFeature);
+BASE_DECLARE_FEATURE(kIPHTabSearchFeature);
+BASE_DECLARE_FEATURE(kIPHWebUITabStripFeature);
+BASE_DECLARE_FEATURE(kIPHDesktopSnoozeFeature);
+BASE_DECLARE_FEATURE(kIPHDesktopPwaInstallFeature);
+BASE_DECLARE_FEATURE(kIPHProfileSwitchFeature);
+BASE_DECLARE_FEATURE(kIPHWebUiHelpBubbleTestFeature);
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
@@ -64,127 +64,121 @@
 // should also be declared in:
 // org.chromium.components.feature_engagement.FeatureConstants.
 #if BUILDFLAG(IS_ANDROID)
-extern const base::Feature
-    kIPHAdaptiveButtonInTopToolbarCustomizationNewTabFeature;
-extern const base::Feature
-    kIPHAdaptiveButtonInTopToolbarCustomizationShareFeature;
-extern const base::Feature
-    kIPHAdaptiveButtonInTopToolbarCustomizationVoiceSearchFeature;
-extern const base::Feature kIPHAddToHomescreenMessageFeature;
-extern const base::Feature kIPHAutoDarkOptOutFeature;
-extern const base::Feature kIPHAutoDarkUserEducationMessageFeature;
-extern const base::Feature kIPHAutoDarkUserEducationMessageOptInFeature;
-extern const base::Feature kIPHContextualPageActionsPriceTrackingFeature;
-extern const base::Feature
-    kIPHContextualPageActionsPriceTrackingActionChipFeature;
-extern const base::Feature kIPHCrowFeature;
-extern const base::Feature kIPHDataSaverDetailFeature;
-extern const base::Feature kIPHDataSaverMilestonePromoFeature;
-extern const base::Feature kIPHDataSaverPreviewFeature;
-extern const base::Feature kIPHDownloadHomeFeature;
-extern const base::Feature kIPHDownloadIndicatorFeature;
-extern const base::Feature kIPHDownloadPageFeature;
-extern const base::Feature kIPHDownloadPageScreenshotFeature;
-extern const base::Feature kIPHChromeHomeExpandFeature;
-extern const base::Feature kIPHChromeHomePullToRefreshFeature;
-extern const base::Feature kIPHDownloadSettingsFeature;
-extern const base::Feature kIPHDownloadInfoBarDownloadContinuingFeature;
-extern const base::Feature kIPHDownloadInfoBarDownloadsAreFasterFeature;
-extern const base::Feature kIPHEphemeralTabFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideDefaultBrowserNotificationShownFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideSignInNotificationShownFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideIncognitoTabNotificationShownFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideNTPSuggestionCardNotificationShownFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideVoiceSearchNotificationShownFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideDefaultBrowserPromoFeature;
-extern const base::Feature kIPHFeatureNotificationGuideSignInHelpBubbleFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideIncognitoTabHelpBubbleFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideNTPSuggestionCardHelpBubbleFeature;
-extern const base::Feature
-    kIPHFeatureNotificationGuideVoiceSearchHelpBubbleFeature;
-extern const base::Feature kIPHFeatureNotificationGuideIncognitoTabUsedFeature;
-extern const base::Feature kIPHFeatureNotificationGuideVoiceSearchUsedFeature;
-extern const base::Feature kIPHFeedCardMenuFeature;
-extern const base::Feature kIPHGenericAlwaysTriggerHelpUiFeature;
-extern const base::Feature kIPHHomePageButtonFeature;
-extern const base::Feature kIPHHomepageTileFeature;
-extern const base::Feature kIPHIdentityDiscFeature;
-extern const base::Feature kIPHInstanceSwitcherFeature;
-extern const base::Feature kIPHKeyboardAccessoryAddressFillingFeature;
-extern const base::Feature kIPHKeyboardAccessoryBarSwipingFeature;
-extern const base::Feature kIPHKeyboardAccessoryPasswordFillingFeature;
-extern const base::Feature kIPHKeyboardAccessoryPaymentFillingFeature;
-extern const base::Feature kIPHKeyboardAccessoryPaymentOfferFeature;
-extern const base::Feature kIPHLowUserEngagementDetectorFeature;
-extern const base::Feature kIPHMicToolbarFeature;
-extern const base::Feature kIPHNewTabPageHomeButtonFeature;
-extern const base::Feature kIPHPageInfoFeature;
-extern const base::Feature kIPHPageInfoStoreInfoFeature;
-extern const base::Feature kIPHPreviewsOmniboxUIFeature;
-extern const base::Feature kIPHPriceDropNTPFeature;
-extern const base::Feature kIPHQuietNotificationPromptsFeature;
-extern const base::Feature kIPHReadLaterContextMenuFeature;
-extern const base::Feature kIPHReadLaterAppMenuBookmarkThisPageFeature;
-extern const base::Feature kIPHReadLaterAppMenuBookmarksFeature;
-extern const base::Feature kIPHReadLaterBottomSheetFeature;
-extern const base::Feature kIPHRequestDesktopSiteAppMenuFeature;
-extern const base::Feature kIPHShoppingListMenuItemFeature;
-extern const base::Feature kIPHShoppingListSaveFlowFeature;
-extern const base::Feature kIPHTabGroupsQuicklyComparePagesFeature;
-extern const base::Feature kIPHTabGroupsTapToSeeAnotherTabFeature;
-extern const base::Feature kIPHTabGroupsYourTabsAreTogetherFeature;
-extern const base::Feature kIPHTabGroupsDragAndDropFeature;
-extern const base::Feature kIPHTabSwitcherButtonFeature;
-extern const base::Feature kIPHTranslateMenuButtonFeature;
-extern const base::Feature kIPHVideoTutorialNTPChromeIntroFeature;
-extern const base::Feature kIPHVideoTutorialNTPDownloadFeature;
-extern const base::Feature kIPHVideoTutorialNTPSearchFeature;
-extern const base::Feature kIPHVideoTutorialNTPVoiceSearchFeature;
-extern const base::Feature kIPHVideoTutorialNTPSummaryFeature;
-extern const base::Feature kIPHVideoTutorialTryNowFeature;
-extern const base::Feature kIPHExploreSitesTileFeature;
-extern const base::Feature kIPHFeedHeaderMenuFeature;
-extern const base::Feature kIPHWebFeedAwarenessFeature;
-extern const base::Feature kIPHFeedSwipeRefresh;
-extern const base::Feature kIPHChromeReengagementNotification1Feature;
-extern const base::Feature kIPHChromeReengagementNotification2Feature;
-extern const base::Feature kIPHChromeReengagementNotification3Feature;
-extern const base::Feature kIPHPwaInstallAvailableFeature;
-extern const base::Feature kIPHShareScreenshotFeature;
-extern const base::Feature kIPHSharingHubLinkToggleFeature;
-extern const base::Feature kIPHWebFeedFollowFeature;
-extern const base::Feature kIPHWebFeedPostFollowDialogFeature;
-extern const base::Feature kIPHSharedHighlightingBuilder;
-extern const base::Feature kIPHSharedHighlightingReceiverFeature;
-extern const base::Feature kIPHSharingHubWebnotesStylizeFeature;
+BASE_DECLARE_FEATURE(kIPHAdaptiveButtonInTopToolbarCustomizationNewTabFeature);
+BASE_DECLARE_FEATURE(kIPHAdaptiveButtonInTopToolbarCustomizationShareFeature);
+BASE_DECLARE_FEATURE(
+    kIPHAdaptiveButtonInTopToolbarCustomizationVoiceSearchFeature);
+BASE_DECLARE_FEATURE(kIPHAddToHomescreenMessageFeature);
+BASE_DECLARE_FEATURE(kIPHAutoDarkOptOutFeature);
+BASE_DECLARE_FEATURE(kIPHAutoDarkUserEducationMessageFeature);
+BASE_DECLARE_FEATURE(kIPHAutoDarkUserEducationMessageOptInFeature);
+BASE_DECLARE_FEATURE(kIPHContextualPageActionsPriceTrackingFeature);
+BASE_DECLARE_FEATURE(kIPHContextualPageActionsPriceTrackingActionChipFeature);
+BASE_DECLARE_FEATURE(kIPHCrowFeature);
+BASE_DECLARE_FEATURE(kIPHDataSaverDetailFeature);
+BASE_DECLARE_FEATURE(kIPHDataSaverMilestonePromoFeature);
+BASE_DECLARE_FEATURE(kIPHDataSaverPreviewFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadHomeFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadIndicatorFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadPageFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadPageScreenshotFeature);
+BASE_DECLARE_FEATURE(kIPHChromeHomeExpandFeature);
+BASE_DECLARE_FEATURE(kIPHChromeHomePullToRefreshFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadSettingsFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadInfoBarDownloadContinuingFeature);
+BASE_DECLARE_FEATURE(kIPHDownloadInfoBarDownloadsAreFasterFeature);
+BASE_DECLARE_FEATURE(kIPHEphemeralTabFeature);
+BASE_DECLARE_FEATURE(
+    kIPHFeatureNotificationGuideDefaultBrowserNotificationShownFeature);
+BASE_DECLARE_FEATURE(
+    kIPHFeatureNotificationGuideSignInNotificationShownFeature);
+BASE_DECLARE_FEATURE(
+    kIPHFeatureNotificationGuideIncognitoTabNotificationShownFeature);
+BASE_DECLARE_FEATURE(
+    kIPHFeatureNotificationGuideNTPSuggestionCardNotificationShownFeature);
+BASE_DECLARE_FEATURE(
+    kIPHFeatureNotificationGuideVoiceSearchNotificationShownFeature);
+BASE_DECLARE_FEATURE(kIPHFeatureNotificationGuideDefaultBrowserPromoFeature);
+BASE_DECLARE_FEATURE(kIPHFeatureNotificationGuideSignInHelpBubbleFeature);
+BASE_DECLARE_FEATURE(kIPHFeatureNotificationGuideIncognitoTabHelpBubbleFeature);
+BASE_DECLARE_FEATURE(
+    kIPHFeatureNotificationGuideNTPSuggestionCardHelpBubbleFeature);
+BASE_DECLARE_FEATURE(kIPHFeatureNotificationGuideVoiceSearchHelpBubbleFeature);
+BASE_DECLARE_FEATURE(kIPHFeatureNotificationGuideIncognitoTabUsedFeature);
+BASE_DECLARE_FEATURE(kIPHFeatureNotificationGuideVoiceSearchUsedFeature);
+BASE_DECLARE_FEATURE(kIPHFeedCardMenuFeature);
+BASE_DECLARE_FEATURE(kIPHGenericAlwaysTriggerHelpUiFeature);
+BASE_DECLARE_FEATURE(kIPHHomePageButtonFeature);
+BASE_DECLARE_FEATURE(kIPHHomepageTileFeature);
+BASE_DECLARE_FEATURE(kIPHIdentityDiscFeature);
+BASE_DECLARE_FEATURE(kIPHInstanceSwitcherFeature);
+BASE_DECLARE_FEATURE(kIPHKeyboardAccessoryAddressFillingFeature);
+BASE_DECLARE_FEATURE(kIPHKeyboardAccessoryBarSwipingFeature);
+BASE_DECLARE_FEATURE(kIPHKeyboardAccessoryPasswordFillingFeature);
+BASE_DECLARE_FEATURE(kIPHKeyboardAccessoryPaymentFillingFeature);
+BASE_DECLARE_FEATURE(kIPHKeyboardAccessoryPaymentOfferFeature);
+BASE_DECLARE_FEATURE(kIPHLowUserEngagementDetectorFeature);
+BASE_DECLARE_FEATURE(kIPHMicToolbarFeature);
+BASE_DECLARE_FEATURE(kIPHNewTabPageHomeButtonFeature);
+BASE_DECLARE_FEATURE(kIPHPageInfoFeature);
+BASE_DECLARE_FEATURE(kIPHPageInfoStoreInfoFeature);
+BASE_DECLARE_FEATURE(kIPHPreviewsOmniboxUIFeature);
+BASE_DECLARE_FEATURE(kIPHPriceDropNTPFeature);
+BASE_DECLARE_FEATURE(kIPHQuietNotificationPromptsFeature);
+BASE_DECLARE_FEATURE(kIPHReadLaterContextMenuFeature);
+BASE_DECLARE_FEATURE(kIPHReadLaterAppMenuBookmarkThisPageFeature);
+BASE_DECLARE_FEATURE(kIPHReadLaterAppMenuBookmarksFeature);
+BASE_DECLARE_FEATURE(kIPHReadLaterBottomSheetFeature);
+BASE_DECLARE_FEATURE(kIPHRequestDesktopSiteAppMenuFeature);
+BASE_DECLARE_FEATURE(kIPHShoppingListMenuItemFeature);
+BASE_DECLARE_FEATURE(kIPHShoppingListSaveFlowFeature);
+BASE_DECLARE_FEATURE(kIPHTabGroupsQuicklyComparePagesFeature);
+BASE_DECLARE_FEATURE(kIPHTabGroupsTapToSeeAnotherTabFeature);
+BASE_DECLARE_FEATURE(kIPHTabGroupsYourTabsAreTogetherFeature);
+BASE_DECLARE_FEATURE(kIPHTabGroupsDragAndDropFeature);
+BASE_DECLARE_FEATURE(kIPHTabSwitcherButtonFeature);
+BASE_DECLARE_FEATURE(kIPHTranslateMenuButtonFeature);
+BASE_DECLARE_FEATURE(kIPHVideoTutorialNTPChromeIntroFeature);
+BASE_DECLARE_FEATURE(kIPHVideoTutorialNTPDownloadFeature);
+BASE_DECLARE_FEATURE(kIPHVideoTutorialNTPSearchFeature);
+BASE_DECLARE_FEATURE(kIPHVideoTutorialNTPVoiceSearchFeature);
+BASE_DECLARE_FEATURE(kIPHVideoTutorialNTPSummaryFeature);
+BASE_DECLARE_FEATURE(kIPHVideoTutorialTryNowFeature);
+BASE_DECLARE_FEATURE(kIPHExploreSitesTileFeature);
+BASE_DECLARE_FEATURE(kIPHFeedHeaderMenuFeature);
+BASE_DECLARE_FEATURE(kIPHWebFeedAwarenessFeature);
+BASE_DECLARE_FEATURE(kIPHFeedSwipeRefresh);
+BASE_DECLARE_FEATURE(kIPHChromeReengagementNotification1Feature);
+BASE_DECLARE_FEATURE(kIPHChromeReengagementNotification2Feature);
+BASE_DECLARE_FEATURE(kIPHChromeReengagementNotification3Feature);
+BASE_DECLARE_FEATURE(kIPHPwaInstallAvailableFeature);
+BASE_DECLARE_FEATURE(kIPHShareScreenshotFeature);
+BASE_DECLARE_FEATURE(kIPHSharingHubLinkToggleFeature);
+BASE_DECLARE_FEATURE(kIPHWebFeedFollowFeature);
+BASE_DECLARE_FEATURE(kIPHWebFeedPostFollowDialogFeature);
+BASE_DECLARE_FEATURE(kIPHSharedHighlightingBuilder);
+BASE_DECLARE_FEATURE(kIPHSharedHighlightingReceiverFeature);
+BASE_DECLARE_FEATURE(kIPHSharingHubWebnotesStylizeFeature);
 #endif  // BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(IS_IOS)
-extern const base::Feature kIPHBottomToolbarTipFeature;
-extern const base::Feature kIPHLongPressToolbarTipFeature;
-extern const base::Feature kIPHNewTabTipFeature;
-extern const base::Feature kIPHNewIncognitoTabTipFeature;
-extern const base::Feature kIPHBadgedReadingListFeature;
-extern const base::Feature kIPHReadingListMessagesFeature;
-extern const base::Feature kIPHBadgedTranslateManualTriggerFeature;
-extern const base::Feature kIPHDiscoverFeedHeaderFeature;
-extern const base::Feature kIPHDefaultSiteViewFeature;
-extern const base::Feature kIPHPasswordSuggestionsFeature;
-extern const base::Feature kIPHFollowWhileBrowsingFeature;
-extern const base::Feature kIPHOverflowMenuTipFeature;
+BASE_DECLARE_FEATURE(kIPHBottomToolbarTipFeature);
+BASE_DECLARE_FEATURE(kIPHLongPressToolbarTipFeature);
+BASE_DECLARE_FEATURE(kIPHNewTabTipFeature);
+BASE_DECLARE_FEATURE(kIPHNewIncognitoTabTipFeature);
+BASE_DECLARE_FEATURE(kIPHBadgedReadingListFeature);
+BASE_DECLARE_FEATURE(kIPHReadingListMessagesFeature);
+BASE_DECLARE_FEATURE(kIPHBadgedTranslateManualTriggerFeature);
+BASE_DECLARE_FEATURE(kIPHDiscoverFeedHeaderFeature);
+BASE_DECLARE_FEATURE(kIPHDefaultSiteViewFeature);
+BASE_DECLARE_FEATURE(kIPHPasswordSuggestionsFeature);
+BASE_DECLARE_FEATURE(kIPHFollowWhileBrowsingFeature);
+BASE_DECLARE_FEATURE(kIPHOverflowMenuTipFeature);
 #endif  // BUILDFLAG(IS_IOS)
 
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
     BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
-extern const base::Feature kIPHAutofillVirtualCardSuggestionFeature;
+BASE_DECLARE_FEATURE(kIPHAutofillVirtualCardSuggestionFeature);
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ||
         // BUILDFLAG(IS_FUCHSIA)
diff --git a/components/history/core/browser/history_backend_unittest.cc b/components/history/core/browser/history_backend_unittest.cc
index 18defb6..0409aa8a 100644
--- a/components/history/core/browser/history_backend_unittest.cc
+++ b/components/history/core/browser/history_backend_unittest.cc
@@ -3866,13 +3866,21 @@
   backend_->ReplaceClusters({}, CreateClusters({{1, 2, 3}}));
 
   // Should return the max time across all visits in the cluster.
-  EXPECT_EQ(backend_->FindMostRecentClusteredTime(), GetRelativeTime(20));
+  EXPECT_EQ(backend_->FindMostRecentClusteredTime(), GetRelativeTime(60));
 
   // Add another cluster.
-  backend_->ReplaceClusters({}, CreateClusters({{1}}));
+  AddAnnotatedVisit(10);
+  backend_->ReplaceClusters({}, CreateClusters({{4}}));
 
   // Should return the max time across all clusters.
-  EXPECT_EQ(backend_->FindMostRecentClusteredTime(), GetRelativeTime(20));
+  EXPECT_EQ(backend_->FindMostRecentClusteredTime(), GetRelativeTime(60));
+
+  // Add another cluster.
+  AddAnnotatedVisit(100);
+  backend_->ReplaceClusters({}, CreateClusters({{5}}));
+
+  // Should return the max time across all clusters.
+  EXPECT_EQ(backend_->FindMostRecentClusteredTime(), GetRelativeTime(100));
 }
 
 TEST_F(HistoryBackendTest, ReplaceClusters) {
diff --git a/components/history/core/browser/history_types.cc b/components/history/core/browser/history_types.cc
index 7372848..d21707a 100644
--- a/components/history/core/browser/history_types.cc
+++ b/components/history/core/browser/history_types.cc
@@ -544,7 +544,7 @@
 Cluster::~Cluster() = default;
 
 const ClusterVisit& Cluster::GetMostRecentVisit() const {
-  return *base::ranges::min_element(
+  return *base::ranges::max_element(
       visits, [](auto time1, auto time2) { return time1 < time2; },
       [](const auto& cluster_visit) {
         return cluster_visit.annotated_visit.visit_row.visit_time;
diff --git a/components/history_clusters/core/clustering_backend.h b/components/history_clusters/core/clustering_backend.h
index 58bb29d6..99de0f2 100644
--- a/components/history_clusters/core/clustering_backend.h
+++ b/components/history_clusters/core/clustering_backend.h
@@ -21,9 +21,8 @@
   virtual ~ClusteringBackend() = default;
 
   // The backend clusters `visits` and returns the results asynchronously via
-  // `callback`. `visits` can be passed in arbitrary order, and the resulting
-  // clusters can be in arbitrary order too. Caller is responsible for sorting
-  // the output however they want it.
+  // `callback`. See `SortClusters()` in on_device_clustering_util.cc for
+  // ordering details.
   virtual void GetClusters(ClusteringRequestSource clustering_request_source,
                            ClustersCallback callback,
                            std::vector<history::AnnotatedVisit> visits) = 0;
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_manager.cc b/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
index f039f2fbc..db8a501b 100644
--- a/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
+++ b/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
@@ -955,7 +955,6 @@
     return;
 
   if (final_status == FINAL_STATUS_LOW_END_DEVICE ||
-      final_status == FINAL_STATUS_CELLULAR_NETWORK ||
       final_status == FINAL_STATUS_DUPLICATE ||
       final_status == FINAL_STATUS_TOO_MANY_PROCESSES) {
     MaybePreconnect(origin, url);
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.cc b/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.cc
index 4536356..959ef10 100644
--- a/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.cc
+++ b/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.cc
@@ -14,13 +14,8 @@
   return true;
 }
 
-bool NoStatePrefetchManagerDelegate::IsPredictionDisabledDueToNetwork(
-    Origin origin) {
-  return false;
-}
-
 std::string NoStatePrefetchManagerDelegate::GetReasonForDisablingPrediction() {
   return std::string();
 }
 
-}  // namespace prerender
\ No newline at end of file
+}  // namespace prerender
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.h b/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.h
index 380e61c..373993a 100644
--- a/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.h
+++ b/components/no_state_prefetch/browser/no_state_prefetch_manager_delegate.h
@@ -37,11 +37,6 @@
   // Check whether the user has enabled predictive loading of web pages.
   virtual bool IsNetworkPredictionPreferenceEnabled();
 
-  // Check whether predictive loading of web pages is disabled due to network.
-  // TODO(crbug.com/1121970): Remove this condition once we're no longer running
-  // the experiment "PredictivePrefetchingAllowedOnAllConnectionTypes".
-  virtual bool IsPredictionDisabledDueToNetwork(Origin origin);
-
   // Gets the reason why predictive loading of web pages was disabld.
   virtual std::string GetReasonForDisablingPrediction();
 };
diff --git a/components/no_state_prefetch/common/no_state_prefetch_final_status.h b/components/no_state_prefetch/common/no_state_prefetch_final_status.h
index 2719c683..384d299 100644
--- a/components/no_state_prefetch/common/no_state_prefetch_final_status.h
+++ b/components/no_state_prefetch/common/no_state_prefetch_final_status.h
@@ -68,7 +68,7 @@
   // Obsolete: FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE = 50,
   FINAL_STATUS_NAVIGATION_INTERCEPTED = 51,
   FINAL_STATUS_PRERENDERING_DISABLED = 52,
-  FINAL_STATUS_CELLULAR_NETWORK = 53,
+  // Obsolete: FINAL_STATUS_CELLULAR_NETWORK = 53,
   FINAL_STATUS_BLOCK_THIRD_PARTY_COOKIES = 54,
   // Obsolete: FINAL_STATUS_CREDENTIAL_MANAGER_API = 55,
   FINAL_STATUS_NOSTATE_PREFETCH_FINISHED = 56,
diff --git a/components/omnibox/browser/history_fuzzy_provider.cc b/components/omnibox/browser/history_fuzzy_provider.cc
index a199495..7f9199e 100644
--- a/components/omnibox/browser/history_fuzzy_provider.cc
+++ b/components/omnibox/browser/history_fuzzy_provider.cc
@@ -167,6 +167,11 @@
       text[at] = new_char;
       break;
     }
+    case Kind::TRANSPOSE: {
+      text[at] = text[at + 1];
+      text[at + 1] = new_char;
+      break;
+    }
     case Kind::KEEP:
     default: {
       NOTREACHED();
@@ -211,6 +216,10 @@
       os << 'R';
       break;
     }
+    case Edit::Kind::TRANSPOSE: {
+      os << 'T';
+      break;
+    }
     default: {
       NOTREACHED();
       break;
@@ -388,7 +397,8 @@
            step.correction.WithEdit({Edit::Kind::DELETE, step.index, '_'})});
     }
     for (const auto& entry : step.node->next) {
-      if (entry.first == text[step.index]) {
+      const char16_t step_text_char = text[step.index];
+      if (entry.first == step_text_char) {
         // Keep
         pq.push({entry.second.get(), step.distance, step.index + 1,
                  step.length + 1, step.correction});
@@ -398,9 +408,9 @@
                  step.length + 1,
                  step.correction.WithEdit(
                      {Edit::Kind::INSERT, step.index, entry.first})});
+
         // Replace. Note, we do not replace at the same position as a previous
         // insertion because doing so could produce unnecessary duplicates.
-
         const Edit& step_edit =
             step.correction.edit_count > 0
                 ? step.correction.edits[step.correction.edit_count - 1]
@@ -413,6 +423,19 @@
                    step.correction.WithEdit(
                        {Edit::Kind::REPLACE, step.index, entry.first})});
         }
+
+        // Transpose. Look ahead cost can be balanced by faster
+        // advancement through input text resulting in shorter search.
+        if (text.size() > step.index + 1 &&
+            text[step.index + 1] == entry.first) {
+          const auto it = entry.second->next.find(step_text_char);
+          if (it != entry.second->next.end()) {
+            pq.push({it->second.get(), step.distance + 1, step.index + 2,
+                     step.length + 2,
+                     step.correction.WithEdit(
+                         {Edit::Kind::TRANSPOSE, step.index, step_text_char})});
+          }
+        }
       }
     }
   }
diff --git a/components/omnibox/browser/history_fuzzy_provider.h b/components/omnibox/browser/history_fuzzy_provider.h
index a59e088..27fb6e8 100644
--- a/components/omnibox/browser/history_fuzzy_provider.h
+++ b/components/omnibox/browser/history_fuzzy_provider.h
@@ -35,6 +35,7 @@
     DELETE,
     INSERT,
     REPLACE,
+    TRANSPOSE,
   };
 
   Edit(Kind kind, size_t at, char16_t new_char);
@@ -45,7 +46,8 @@
   // The edit operation, the kind of change to make to text.
   Kind kind;
 
-  // Character data; relevant only for REPLACE and INSERT.
+  // Character data; relevant for REPLACE and INSERT, and also for
+  // TRANSPOSE (as a minor optimization, first char is stored here).
   char16_t new_char;
 
   // Text index at which to apply change.
diff --git a/components/omnibox/browser/history_fuzzy_provider_unittest.cc b/components/omnibox/browser/history_fuzzy_provider_unittest.cc
index bd42ad3e..1b164cb 100644
--- a/components/omnibox/browser/history_fuzzy_provider_unittest.cc
+++ b/components/omnibox/browser/history_fuzzy_provider_unittest.cc
@@ -53,6 +53,10 @@
       os << 'R';
       break;
     }
+    case fuzzy::Edit::Kind::TRANSPOSE: {
+      os << 'T';
+      break;
+    }
     default: {
       NOTREACHED();
       break;
@@ -445,6 +449,39 @@
                           {.start_index = 2, .step_length = 4, .limit = 3});
 }
 
+// This test ensures that transposition swaps two adjacent characters with
+// a single operation at edit distance one. Only directly adjacent characters
+// can be transposed and nonadjacent character swaps still require two edits.
+TEST_F(HistoryFuzzyProviderTest, TransposeIsEditDistanceOne) {
+  fuzzy::Node node;
+  node.Insert(u"transpose", 0);
+
+  std::vector<TestCase> cases = {
+      {
+          // Direct transposition 'op' -> 'po'. Finding the correction
+          // with tolerance 1 implies a single transposition edit was enough.
+          1,
+          u"transopse",
+          false,
+          {
+              u"transpose",
+          },
+      },
+      {
+          // Not a direct transposition, as the 's' is in between,
+          // so this case requires insert + delete pair (tolerance 2).
+          2,
+          u"transpeso",
+          false,
+          {
+              u"transpose",
+          },
+      },
+  };
+
+  VerifyCases(&node, cases);
+}
+
 // This test covers a subtlety in the algorithm. It ensures we don't take
 // replacements at the same position of a previous insertion because we
 // only want one of {I,1,e}~{R,0,t} (ler ter) | {R,0,e}~{I,0,t} (er ter).
diff --git a/components/omnibox/browser/history_quick_provider_performance_unittest.cc b/components/omnibox/browser/history_quick_provider_performance_unittest.cc
index bcab77b..cbe94a1 100644
--- a/components/omnibox/browser/history_quick_provider_performance_unittest.cc
+++ b/components/omnibox/browser/history_quick_provider_performance_unittest.cc
@@ -117,16 +117,17 @@
   client_->set_history_service(
       history::CreateHistoryService(history_dir_.GetPath(), true));
   client_->set_bookmark_model(bookmarks::TestBookmarkClient::CreateModel());
+
+  ASSERT_NE(client_->GetHistoryService(), nullptr);
+  ASSERT_NO_FATAL_FAILURE(PrepareData());
+
   client_->set_in_memory_url_index(std::make_unique<InMemoryURLIndex>(
       client_->GetBookmarkModel(), client_->GetHistoryService(), nullptr,
       history_dir_.GetPath(), SchemeSet()));
   client_->GetInMemoryURLIndex()->Init();
-  // First make sure the automatic initialization completes to avoid a race
-  // between that and our manual indexing below.
   BlockUntilInMemoryURLIndexIsRefreshed(client_->GetInMemoryURLIndex());
 
-  ASSERT_TRUE(client_->GetHistoryService());
-  ASSERT_NO_FATAL_FAILURE(PrepareData());
+  provider_ = new HistoryQuickProvider(client_.get());
 }
 
 void HQPPerfTestOnePopularURL::TearDown() {
@@ -141,9 +142,7 @@
 }
 
 void HQPPerfTestOnePopularURL::PrepareData() {
-// Adding fake urls to db must be done before RebuildFromHistory(). This will
-// ensure that the index is properly populated with data from the database.
-// Note: on debug builds these tests can be slow. Use a smaller data set in
+// Note: On debug builds these tests can be slow. Use a smaller data set in
 // that case. See crbug.com/822624.
 #if defined NDEBUG
   constexpr size_t kSimilarUrlCount = 10000;
@@ -154,17 +153,6 @@
 #endif
   for (size_t i = 0; i < kSimilarUrlCount; ++i)
     AddFakeURLToHistoryDB(history_backend()->db(), GeneratePopularURLRow());
-
-  InMemoryURLIndex* url_index = client_->GetInMemoryURLIndex();
-  url_index->RebuildFromHistory(
-      client_->GetHistoryService()->history_backend_->db());
-
-  // History index refresh creates rebuilt tasks to run on history thread.
-  // Block here to make sure that all of them are complete.
-  history::BlockUntilHistoryProcessesPendingRequests(
-      client_->GetHistoryService());
-
-  provider_ = new HistoryQuickProvider(client_.get());
 }
 
 void HQPPerfTestOnePopularURL::PrintMeasurements(
diff --git a/components/omnibox/browser/history_quick_provider_unittest.cc b/components/omnibox/browser/history_quick_provider_unittest.cc
index 066c404..6febe05 100644
--- a/components/omnibox/browser/history_quick_provider_unittest.cc
+++ b/components/omnibox/browser/history_quick_provider_unittest.cc
@@ -202,32 +202,22 @@
 void HistoryQuickProviderTest::SetUp() {
   client_ = std::make_unique<FakeAutocompleteProviderClient>();
   CHECK(history_dir_.CreateUniqueTempDir());
+
+  // Initialize the history service with our test data.
   client_->set_history_service(
       history::CreateHistoryService(history_dir_.GetPath(), true));
+  ASSERT_NE(client_->GetHistoryService(), nullptr);
+  ASSERT_NO_FATAL_FAILURE(FillData());
+
   client_->set_bookmark_model(bookmarks::TestBookmarkClient::CreateModel());
+  client_->set_template_url_service(
+      std::make_unique<TemplateURLService>(nullptr, 0));
+
   client_->set_in_memory_url_index(std::make_unique<InMemoryURLIndex>(
       client_->GetBookmarkModel(), client_->GetHistoryService(), nullptr,
       history_dir_.GetPath(), SchemeSet()));
-  client_->set_template_url_service(
-      std::make_unique<TemplateURLService>(nullptr, 0));
   client_->GetInMemoryURLIndex()->Init();
-  ASSERT_TRUE(client_->GetHistoryService());
-
-  // First make sure the automatic initialization completes to avoid a race
-  // between that and our manual indexing below.
-  InMemoryURLIndex* url_index = client_->GetInMemoryURLIndex();
-  BlockUntilInMemoryURLIndexIsRefreshed(url_index);
-
-  // FillData() must be called before RebuildFromHistory(). This will
-  // ensure that the index is properly populated with data from the database.
-  ASSERT_NO_FATAL_FAILURE(FillData());
-  url_index->RebuildFromHistory(
-      client_->GetHistoryService()->history_backend_->db());
-
-  // History index refresh creates rebuilt tasks to run on history thread.
-  // Block here to make sure that all of them are complete.
-  history::BlockUntilHistoryProcessesPendingRequests(
-      client_->GetHistoryService());
+  BlockUntilInMemoryURLIndexIsRefreshed(client_->GetInMemoryURLIndex());
 
   provider_ = new HistoryQuickProvider(client_.get());
 }
diff --git a/components/omnibox/browser/in_memory_url_index.cc b/components/omnibox/browser/in_memory_url_index.cc
index 4177bcc..e04b8234 100644
--- a/components/omnibox/browser/in_memory_url_index.cc
+++ b/components/omnibox/browser/in_memory_url_index.cc
@@ -244,10 +244,3 @@
   if (restore_cache_observer_)
     restore_cache_observer_->OnCacheRestoreFinished(succeeded);
 }
-
-void InMemoryURLIndex::RebuildFromHistory(
-    history::HistoryDatabase* history_db) {
-  private_data_tracker_.TryCancelAll();
-  private_data_ =
-      URLIndexPrivateData::RebuildFromHistory(history_db, scheme_allowlist_);
-}
diff --git a/components/omnibox/browser/in_memory_url_index.h b/components/omnibox/browser/in_memory_url_index.h
index ad46922..cb17f1cb 100644
--- a/components/omnibox/browser/in_memory_url_index.h
+++ b/components/omnibox/browser/in_memory_url_index.h
@@ -176,10 +176,6 @@
       bool succeeded,
       scoped_refptr<URLIndexPrivateData> private_data);
 
-  // Rebuilds the history index from the history database in |history_db|.
-  // Used for unit testing only.
-  void RebuildFromHistory(history::HistoryDatabase* history_db);
-
   // KeyedService:
   // Signals that any outstanding initialization should be canceled.
   void Shutdown() override;
diff --git a/components/omnibox/browser/in_memory_url_index_unittest.cc b/components/omnibox/browser/in_memory_url_index_unittest.cc
index 504de09..26f5d14 100644
--- a/components/omnibox/browser/in_memory_url_index_unittest.cc
+++ b/components/omnibox/browser/in_memory_url_index_unittest.cc
@@ -268,7 +268,7 @@
       nullptr, history_service_.get(), template_url_service_.get(),
       base::FilePath(), client_schemes_to_allowlist);
   url_index_->Init();
-  url_index_->RebuildFromHistory(history_database_);
+  BlockUntilInMemoryURLIndexIsRefreshed(url_index_.get());
 }
 
 void InMemoryURLIndexTest::CheckTerm(
diff --git a/components/optimization_guide/core/optimization_guide_store_unittest.cc b/components/optimization_guide/core/optimization_guide_store_unittest.cc
index a323444..af10dc95 100644
--- a/components/optimization_guide/core/optimization_guide_store_unittest.cc
+++ b/components/optimization_guide/core/optimization_guide_store_unittest.cc
@@ -66,7 +66,7 @@
   model_info->set_optimization_target(
       proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD);
   model_info->add_supported_model_engine_versions(
-      proto::ModelEngineVersion::MODEL_ENGINE_VERSION_DECISION_TREE);
+      proto::ModelEngineVersion::MODEL_ENGINE_VERSION_TFLITE_2_11);
   return prediction_model;
 }
 
diff --git a/components/optimization_guide/core/optimization_guide_test_util.cc b/components/optimization_guide/core/optimization_guide_test_util.cc
index 5344ce2..21054925 100644
--- a/components/optimization_guide/core/optimization_guide_test_util.cc
+++ b/components/optimization_guide/core/optimization_guide_test_util.cc
@@ -17,41 +17,6 @@
 const char kTestRelativeFilePath[] = "relativefilepath";
 #endif
 
-std::unique_ptr<proto::PredictionModel> GetMinimalDecisionTreePredictionModel(
-    double threshold,
-    double weight) {
-  auto prediction_model =
-      std::make_unique<optimization_guide::proto::PredictionModel>();
-  prediction_model->mutable_model()->mutable_threshold()->set_value(threshold);
-  optimization_guide::proto::DecisionTree decision_tree_model;
-  decision_tree_model.set_weight(weight);
-
-  optimization_guide::proto::TreeNode* tree_node =
-      decision_tree_model.add_nodes();
-  tree_node->mutable_node_id()->set_value(0);
-
-  *prediction_model->mutable_model()->mutable_decision_tree() =
-      decision_tree_model;
-
-  return prediction_model;
-}
-
-std::unique_ptr<optimization_guide::proto::PredictionModel>
-GetSingleLeafDecisionTreePredictionModel(double threshold,
-                                         double weight,
-                                         double leaf_value) {
-  auto prediction_model =
-      GetMinimalDecisionTreePredictionModel(threshold, weight);
-  prediction_model->mutable_model()
-      ->mutable_decision_tree()
-      ->mutable_nodes(0)
-      ->mutable_leaf()
-      ->mutable_vector()
-      ->add_value()
-      ->set_double_value(leaf_value);
-  return prediction_model;
-}
-
 std::string CreateHintsConfig(
     const GURL& hints_url,
     optimization_guide::proto::OptimizationType optimization_type,
diff --git a/components/optimization_guide/core/optimization_guide_test_util.h b/components/optimization_guide/core/optimization_guide_test_util.h
index 0a66816..17a71622 100644
--- a/components/optimization_guide/core/optimization_guide_test_util.h
+++ b/components/optimization_guide/core/optimization_guide_test_util.h
@@ -25,19 +25,6 @@
 extern const char kTestAbsoluteFilePath[];
 extern const char kTestRelativeFilePath[];
 
-// Returns a decision tree model with |threshold|, |weight|, and a single
-// uninitialized node.
-std::unique_ptr<proto::PredictionModel> GetMinimalDecisionTreePredictionModel(
-    double threshold,
-    double weight);
-
-// Returns a decision tree model with |threshold|, |weight|, and a single
-// leaf node with |leaf_value|.
-std::unique_ptr<proto::PredictionModel>
-GetSingleLeafDecisionTreePredictionModel(double threshold,
-                                         double weight,
-                                         double leaf_value);
-
 // Creates the hints config with |optimization_type| to |hints_url| that returns
 // the |metadata|. This config string can be passed to the |kHintsProtoOverride|
 // commandline switch.
diff --git a/components/optimization_guide/core/store_update_data_unittest.cc b/components/optimization_guide/core/store_update_data_unittest.cc
index cf0f7ec6..fbd4f10 100644
--- a/components/optimization_guide/core/store_update_data_unittest.cc
+++ b/components/optimization_guide/core/store_update_data_unittest.cc
@@ -121,7 +121,7 @@
   model_info->set_optimization_target(
       proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD);
   model_info->add_supported_model_engine_versions(
-      proto::ModelEngineVersion::MODEL_ENGINE_VERSION_DECISION_TREE);
+      proto::ModelEngineVersion::MODEL_ENGINE_VERSION_TFLITE_2_11);
   model_info->set_keep_beyond_valid_duration(false);
 
   model_info->mutable_valid_duration()->set_seconds(3);
@@ -162,7 +162,7 @@
   model_info->set_optimization_target(
       proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD);
   model_info->add_supported_model_engine_versions(
-      proto::ModelEngineVersion::MODEL_ENGINE_VERSION_DECISION_TREE);
+      proto::ModelEngineVersion::MODEL_ENGINE_VERSION_TFLITE_2_11);
   model_info->set_keep_beyond_valid_duration(false);
 
   std::unique_ptr<StoreUpdateData> prediction_model_update =
diff --git a/components/optimization_guide/proto/hint_cache.proto b/components/optimization_guide/proto/hint_cache.proto
index 8e44fde3..4eb1ffb2 100644
--- a/components/optimization_guide/proto/hint_cache.proto
+++ b/components/optimization_guide/proto/hint_cache.proto
@@ -14,7 +14,7 @@
 // The types of StoreEntries.
 //
 // The values should match those of
-// components/previews/content/hint_cache_store.h
+// components/optimization_guide/core/optimization_guide_store.h
 enum StoreEntryType {
   // StoreEntryType when the entry type is unknown.
   EMPTY = 0;
@@ -35,10 +35,12 @@
   // StoreEntryType when storing a host model features entry, holds the model
   // features keyed provided by host from the remote Optimization Guide
   // Service. |update_time_secs| should be provided.
-  HOST_MODEL_FEATURES = 5;
+  DEPRECATED_HOST_MODEL_FEATURES = 5 [deprecated = true];
 }
 
 message StoreEntry {
+  reserved 7;
+
   // Generic version field. For the schema metadata entry, version represents
   // the schema version; for the component metadata entry, version represents
   // the component version.
@@ -52,13 +54,10 @@
   // The type of entry stored.
   optional StoreEntryType entry_type = 4;
   // Expiry time for this Hint entry (i.e., when hint is no longer usable). This
-  // is set on OnePlatform Hint entries, as well as PredictionModel and
-  // HostModelFeatures entries.
+  // is set on OnePlatform Hint entries, as well as PredictionModel entries.
   optional int64 expiry_time_secs = 5;
   // The actual PredictionModel data.
   optional PredictionModel prediction_model = 6;
-  // The actual HostModelFeature data.
-  optional HostModelFeatures host_model_features = 7;
   // Whether to delete a model once expiry_time_secs is past.
   optional bool keep_beyond_valid_duration = 8;
 }
diff --git a/components/optimization_guide/proto/models.proto b/components/optimization_guide/proto/models.proto
index 53980a93..5cabdbc 100644
--- a/components/optimization_guide/proto/models.proto
+++ b/components/optimization_guide/proto/models.proto
@@ -13,134 +13,14 @@
 
 // A generic handle for any type of model.
 message Model {
-  reserved 3, 4;
+  reserved 1, 2, 3, 4, 123;
 
   oneof model {
-    DecisionTree decision_tree = 1;
-    Ensemble ensemble = 2;
     // When passed from the server, this is the URL that the model can be
     // downloaded from. When used internally within Chrome, this contains the
     // absolute file path where the model file is saved on disk.
     string download_url = 5;
   }
-  // The tag number is high to allow models to be added and an uncommon number
-  // in case the proto this is generated from adds a similar functionality.
-  optional DoubleValue threshold = 123;
-}
-
-// An ensemble prediction model consisting of an ordered sequence of models.
-// This message can be used to express bagged or boosted models.
-message Ensemble {
-  reserved 2, 3, 4;
-
-  message Member { optional Model submodel = 1; }
-  // The tag number is set by the proto this is generated from and cannot be
-  // changed.
-  repeated Member members = 100;
-}
-
-// A decision tree model with its weight for use if included in an ensemble.
-message DecisionTree {
-  reserved 2;
-
-  repeated TreeNode nodes = 1;
-  optional float weight = 3;
-}
-
-// A node of a decision tree that is a binary deicison or a leaf.
-message TreeNode {
-  reserved 6, 7;
-
-  // Following fields are provided for convenience and better readability.
-  // Filling them in is not required.
-  optional Int32Value node_id = 1;
-  optional Int32Value depth = 2;
-  optional Int32Value subtree_size = 3;
-
-  oneof node_type {
-    BinaryNode binary_node = 4;
-    Leaf leaf = 5;
-  }
-}
-
-// A tree node that contains an inequality test that during evaluation
-// determines whether to continue the left or right child.
-message BinaryNode {
-  reserved 3, 5;
-
-  optional Int32Value left_child_id = 1;
-  optional Int32Value right_child_id = 2;
-  enum Direction {
-    LEFT = 0;
-    RIGHT = 1;
-  }
-  // When a datapoint satisfies the test, it should be propagated to the left
-  // child.
-  optional InequalityTest inequality_left_child_test = 4;
-}
-
-// Vector of values for use within Models.
-message Vector {
-  repeated Value value = 1;
-}
-
-// A leaf node of a decision tree.
-message Leaf {
-  reserved 2, 3;
-
-  optional Vector vector = 1;
-}
-
-// The ID for the features used during evaluation of a Model.
-message FeatureId {
-  reserved 2;
-
-  optional StringValue id = 1;
-}
-
-// The set of inequality operations supported by binary nodes for
-// decision tree models.
-message InequalityTest {
-  reserved 4;
-
-  // When the feature is missing, the test's outcome is undefined.
-  optional FeatureId feature_id = 1;
-  enum Type {
-    LESS_OR_EQUAL = 0;
-    LESS_THAN = 1;
-    GREATER_OR_EQUAL = 2;
-    GREATER_THAN = 3;
-  };
-  optional Type type = 2;
-  optional Value threshold = 3;
-}
-
-// Represents a single value of any type, e.g. 5 or "abc".
-message Value {
-  reserved 5;
-
-  oneof value {
-    float float_value = 1;
-    double double_value = 2;
-    int32 int32_value = 3;
-    int64 int64_value = 4;
-  }
-}
-
-// Wrapper message for `int32`.
-//
-// The JSON representation for `Int32Value` is JSON number.
-message Int32Value {
-  // The int32 value.
-  optional int32 value = 1;
-}
-
-// Wrapper message for `double`.
-//
-// The JSON representation for `DoubleValue` is JSON number.
-message DoubleValue {
-  // The double value.
-  optional double value = 1;
 }
 
 // Requests prediction models to be used for a set of optimization targets.
@@ -167,15 +47,11 @@
 
 // Response to the GetModels request.
 message GetModelsResponse {
+  reserved 2;
+
   // The models to be used during prediction for the requested optimization
   // targets.
   repeated PredictionModel models = 1;
-  // A set of model features and their values for the hosts contained in the
-  // request to be expected to be consulted with during prediction.
-  //
-  // It is not guaranteed that this set will contain an entry for every
-  // requested host.
-  repeated HostModelFeatures host_model_features = 2;
 }
 
 // Holds the prediction model for a particular optimization target.
@@ -298,9 +174,9 @@
 //                 ^
 //                 Change when this number increments.
 enum ModelEngineVersion {
+  reserved 1;
+
   MODEL_ENGINE_VERSION_UNKNOWN = 0;
-  // A decision tree.
-  MODEL_ENGINE_VERSION_DECISION_TREE = 1;
   // A model using only operations that are supported by TensorflowLite 2.3.0.
   MODEL_ENGINE_VERSION_TFLITE_2_3_0 = 2;
   // A model using only operations that are supported by TensorflowLite 2.3.0
@@ -323,22 +199,3 @@
   // A model using only operations that are supported by TensorflowLite 2.11.0.
   MODEL_ENGINE_VERSION_TFLITE_2_11 = 10;
 }
-
-// A set of model features and the host that it applies to.
-message HostModelFeatures {
-  // The host that the features should be applied for.
-  optional string host = 1;
-  // The set of features and their values that apply to the host.
-  repeated ModelFeature model_features = 2;
-}
-
-// Information about a feature that is potentially referenced in a model.
-message ModelFeature {
-  // The name of the feature to match if encountered in a model.
-  optional string feature_name = 1;
-  // The value of the feature to be used during prediction.
-  oneof feature_value {
-    double double_value = 2;
-    int64 int64_value = 3;
-  }
-}
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index ceb3708a..43d921b5 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -33464,6 +33464,33 @@
       If this policy is set to Enabled or not set, the shopping list feature will be available to users.
       If this policy is set to Disabled, the shopping list feature will be unavailable.
       ''',
+    },
+    {
+      'name': 'DeskAPIThirdPartyAccessEnabled',
+      'owners': ['aprilzhou@google.com', 'yzd@google.com'],
+      'type': 'main',
+      'schema': { 'type': 'boolean' },
+      'future_on': ['chrome_os'],
+      'features': {
+        'dynamic_refresh': True,
+        'per_profile': True,
+      },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable Desk API for third-party ChromeOS control',
+        },
+        {
+          'value': False,
+          'caption': 'Do not enable Desk API for third-party ChromeOS control',
+        },
+      ],
+      'default': False,
+      'example_value': True,
+      'id': 1019,
+      'caption': '''Enable Desk API for third-party ChromeOS control''',
+      'tags': [],
+      'desc': '''Setting the policy to Enabled allows third-party web applications to use Desk API to control ChromeOS desks. If the policy is not set or disabled, the Desk API will be unavailable.'''
     }
   ],
   'messages': {
@@ -34476,6 +34503,6 @@
   'placeholders': [],
   'deleted_policy_ids': [114, 115, 204, 205, 206, 341, 412, 438, 476, 544, 546, 562, 569, 578, 583, 585, 586, 587, 588, 589, 590, 591, 600, 668, 669, 872],
   'deleted_atomic_policy_group_ids': [19],
-  'highest_id_currently_used': 1018,
+  'highest_id_currently_used': 1019,
   'highest_atomic_group_id_currently_used': 43
 }
diff --git a/components/safe_browsing/android/safe_browsing_api_handler_util.cc b/components/safe_browsing/android/safe_browsing_api_handler_util.cc
index dc78601..7cc70bdc 100644
--- a/components/safe_browsing/android/safe_browsing_api_handler_util.cc
+++ b/components/safe_browsing/android/safe_browsing_api_handler_util.cc
@@ -149,7 +149,7 @@
   // Go through each matched threat type and pick the most severe.
   JavaThreatTypes worst_threat_type = JAVA_THREAT_TYPE_MAX_VALUE;
   const base::DictionaryValue* worst_match = nullptr;
-  for (const base::Value& match_value : matches->GetListDeprecated()) {
+  for (const base::Value& match_value : matches->GetList()) {
     // Get the threat number
     const base::DictionaryValue* match = nullptr;
     if (match_value.is_dict())
diff --git a/components/safe_browsing/core/browser/safe_browsing_metrics_collector.cc b/components/safe_browsing/core/browser/safe_browsing_metrics_collector.cc
index ad5326f..0a47f6c9 100644
--- a/components/safe_browsing/core/browser/safe_browsing_metrics_collector.cc
+++ b/components/safe_browsing/core/browser/safe_browsing_metrics_collector.cc
@@ -155,17 +155,18 @@
 }
 
 void SafeBrowsingMetricsCollector::RemoveOldEventsFromPref() {
-  DictionaryPrefUpdate update(pref_service_,
+  ScopedDictPrefUpdate update(pref_service_,
                               prefs::kSafeBrowsingEventTimestamps);
-  base::Value::Dict* mutable_state_dict = update->GetIfDict();
-  bool is_pref_valid = !!mutable_state_dict;
-  base::UmaHistogramBoolean("SafeBrowsing.MetricsCollector.IsPrefValid",
-                            is_pref_valid);
-  if (!is_pref_valid) {
-    return;
-  }
+  base::Value::Dict& mutable_state_dict = update.Get();
 
-  for (auto state_map : *mutable_state_dict) {
+  // Histogram to check whether prefs::kSafeBrowsingEventTimestamp is a dict.
+  // Prefs DCHECKs if it's the wrong type, or not registered, so this is not
+  // actually needed.
+  //
+  // TODO(mmenke): Remove this histogram.
+  base::UmaHistogramBoolean("SafeBrowsing.MetricsCollector.IsPrefValid", true);
+
+  for (auto state_map : mutable_state_dict) {
     for (auto event_map : state_map.second.GetDict()) {
       event_map.second.GetList().EraseIf([&](const auto& timestamp) {
         return base::Time::Now() - PrefValueToTime(timestamp) >
@@ -240,9 +241,9 @@
 void SafeBrowsingMetricsCollector::AddSafeBrowsingEventAndUserStateToPref(
     UserState user_state,
     EventType event_type) {
-  DictionaryPrefUpdate update(pref_service_,
+  ScopedDictPrefUpdate update(pref_service_,
                               prefs::kSafeBrowsingEventTimestamps);
-  base::Value::Dict& mutable_state_dict = update->GetDict();
+  base::Value::Dict& mutable_state_dict = update.Get();
   base::Value::Dict* event_dict =
       mutable_state_dict.EnsureDict(UserStateToPrefKey(user_state));
   base::Value::List* timestamps =
diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc
index f9625ef1..1bab8326 100644
--- a/components/safe_browsing/core/common/features.cc
+++ b/components/safe_browsing/core/common/features.cc
@@ -21,41 +21,51 @@
 // them to the ExperimentalFeaturesList below to start displaying their status
 // on the chrome://safe-browsing page.
 
-const base::Feature kAccuracyTipsFeature{"AccuracyTips",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAccuracyTipsFeature,
+             "AccuracyTips",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAdSamplerTriggerFeature{"SafeBrowsingAdSamplerTrigger",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAdSamplerTriggerFeature,
+             "SafeBrowsingAdSamplerTrigger",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kBetterTelemetryAcrossReports{
-    "SafeBrowsingBetterTelemetryAcrossReports",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kBetterTelemetryAcrossReports,
+             "SafeBrowsingBetterTelemetryAcrossReports",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kClientSideDetectionModelIsFlatBuffer{
-    "ClientSideDetectionModelIsFlatBuffer", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kClientSideDetectionModelIsFlatBuffer,
+             "ClientSideDetectionModelIsFlatBuffer",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-extern const base::Feature kClientSideDetectionModelTag{
-    "ClientSideDetectionTag", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kClientSideDetectionModelTag,
+             "ClientSideDetectionTag",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kClientSideDetectionReferrerChain{
-    "ClientSideDetectionReferrerChain", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kClientSideDetectionReferrerChain,
+             "ClientSideDetectionReferrerChain",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kClientSideDetectionKillswitch{
-    "ClientSideDetectionKillswitch", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kClientSideDetectionKillswitch,
+             "ClientSideDetectionKillswitch",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kConnectorsScanningAccessToken{
-    "ConnectorsScanningAccessToken", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kConnectorsScanningAccessToken,
+             "ConnectorsScanningAccessToken",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kConnectorsScanningReportOnlyUI{
-    "ConnectorsScanningReportOnlyUI", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kConnectorsScanningReportOnlyUI,
+             "ConnectorsScanningReportOnlyUI",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_ANDROID)
-const base::Feature kCreateSafebrowsingOnStartup{
-    "CreateSafebrowsingOnStartup", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCreateSafebrowsingOnStartup,
+             "CreateSafebrowsingOnStartup",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
-const base::Feature kDelayedWarnings{"SafeBrowsingDelayedWarnings",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDelayedWarnings,
+             "SafeBrowsingDelayedWarnings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If true, a delayed warning will be shown when the user clicks on the page.
 // If false, the warning won't be shown, but a metric will be recorded on the
@@ -64,28 +74,33 @@
     &kDelayedWarnings, "mouse",
     /*default_value=*/false};
 
-const base::Feature kDownloadBubble{"DownloadBubble",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadBubble,
+             "DownloadBubble",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kDownloadBubbleV2{"DownloadBubbleV2",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadBubbleV2,
+             "DownloadBubbleV2",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kDownloadTailoredWarnings{"DownloadTailoredWarnings",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadTailoredWarnings,
+             "DownloadTailoredWarnings",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kEnhancedProtection{"SafeBrowsingEnhancedProtection",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnhancedProtection,
+             "SafeBrowsingEnhancedProtection",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kEnhancedProtectionPhase2IOS{
-    "SafeBrowsingEnhancedProtectionPhase2IOS",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnhancedProtectionPhase2IOS,
+             "SafeBrowsingEnhancedProtectionPhase2IOS",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kExtensionTelemetry{"SafeBrowsingExtensionTelemetry",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kExtensionTelemetry,
+             "SafeBrowsingExtensionTelemetry",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kExtensionTelemetryPersistence{
-    "SafeBrowsingExtensionTelemetryPersistence",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kExtensionTelemetryPersistence,
+             "SafeBrowsingExtensionTelemetryPersistence",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 const base::FeatureParam<int> kExtensionTelemetryUploadIntervalSeconds{
     &kExtensionTelemetry, "UploadIntervalSeconds",
@@ -95,88 +110,102 @@
     &kExtensionTelemetry, "NumberOfWritesInInterval",
     /*default_value=*/4};
 
-const base::Feature kExtensionTelemetryTabsExecuteScriptSignal{
-    "SafeBrowsingExtensionTelemetryTabsExecuteScriptSignal",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kExtensionTelemetryTabsExecuteScriptSignal,
+             "SafeBrowsingExtensionTelemetryTabsExecuteScriptSignal",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kExtensionTelemetryReportContactedHosts{
-    "SafeBrowsingExtensionTelemetryReportContactedHosts",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kExtensionTelemetryReportContactedHosts,
+             "SafeBrowsingExtensionTelemetryReportContactedHosts",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kFileTypePoliciesTag{"FileTypePoliciesTag",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kFileTypePoliciesTag,
+             "FileTypePoliciesTag",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kLogAccountEnhancedProtectionStateInProtegoPings{
-    "TailoredSecurityLogAccountEnhancedProtectionStateInProtegoPings",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLogAccountEnhancedProtectionStateInProtegoPings,
+             "TailoredSecurityLogAccountEnhancedProtectionStateInProtegoPings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSimplifiedUrlDisplay{"SimplifiedUrlDisplay",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSimplifiedUrlDisplay,
+             "SimplifiedUrlDisplay",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTailoredSecurityDesktopNotice{
-    "TailoredSecurityDesktopNotice", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTailoredSecurityDesktopNotice,
+             "TailoredSecurityDesktopNotice",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTailoredSecurityIntegration{
-  "TailoredSecurityIntegration",
+BASE_FEATURE(kTailoredSecurityIntegration,
+             "TailoredSecurityIntegration",
 #if BUILDFLAG(IS_IOS)
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
-const base::Feature kOmitNonUserGesturesFromReferrerChain{
-    "SafeBrowsingOmitNonUserGesturesFromReferrerChain",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kOmitNonUserGesturesFromReferrerChain,
+             "SafeBrowsingOmitNonUserGesturesFromReferrerChain",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kRealTimeUrlLookupForEnterpriseAllowlistBypass{
-    "SafeBrowsingRealTimeUrlLookupForEnterpriseAllowlistBypass",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRealTimeUrlLookupForEnterpriseAllowlistBypass,
+             "SafeBrowsingRealTimeUrlLookupForEnterpriseAllowlistBypass",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSafeBrowsingCsbrrWithToken{
-    "SafeBrowsingCsbrrWithToken", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSafeBrowsingCsbrrWithToken,
+             "SafeBrowsingCsbrrWithToken",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSafeBrowsingEnterpriseCsd{
-    "SafeBrowsingEnterpriseCsd", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSafeBrowsingEnterpriseCsd,
+             "SafeBrowsingEnterpriseCsd",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSafeBrowsingDisableConsumerCsdForEnterprise{
-    "SafeBrowsingDisableConsumerCsdForEnterprise",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSafeBrowsingDisableConsumerCsdForEnterprise,
+             "SafeBrowsingDisableConsumerCsdForEnterprise",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSafeBrowsingPageLoadToken{
-    "SafeBrowsingPageLoadToken", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSafeBrowsingPageLoadToken,
+             "SafeBrowsingPageLoadToken",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSafeBrowsingRemoveCookiesInAuthRequests{
-    "SafeBrowsingRemoveCookiesInAuthRequests",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSafeBrowsingRemoveCookiesInAuthRequests,
+             "SafeBrowsingRemoveCookiesInAuthRequests",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSendSampledPingsForProtegoAllowlistDomains{
-    "SafeBrowsingSendSampledPingsForProtegoAllowlistDomains",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSendSampledPingsForProtegoAllowlistDomains,
+             "SafeBrowsingSendSampledPingsForProtegoAllowlistDomains",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSevenZipReaderInInstaller{
-    "SafeBrowsingSevenZipReaderInInstaller", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSevenZipReaderInInstaller,
+             "SafeBrowsingSevenZipReaderInInstaller",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSevenZipEvaluationEnabled{
-    "SafeBrowsingSevenZipEvaluationEnabled", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSevenZipEvaluationEnabled,
+             "SafeBrowsingSevenZipEvaluationEnabled",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSuspiciousSiteTriggerQuotaFeature{
-    "SafeBrowsingSuspiciousSiteTriggerQuota", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSuspiciousSiteTriggerQuotaFeature,
+             "SafeBrowsingSuspiciousSiteTriggerQuota",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kThreatDomDetailsTagAndAttributeFeature{
-    "ThreatDomDetailsTagAttributes", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kThreatDomDetailsTagAndAttributeFeature,
+             "ThreatDomDetailsTagAttributes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kUseNewDownloadWarnings{"UseNewDownloadWarnings",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUseNewDownloadWarnings,
+             "UseNewDownloadWarnings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kVisualFeaturesSizes{"VisualFeaturesSizes",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVisualFeaturesSizes,
+             "VisualFeaturesSizes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kVisualFeaturesInCsppPings{
-    "VisualFeaturesInCsppPings", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVisualFeaturesInCsppPings,
+             "VisualFeaturesInCsppPings",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kVisualFeaturesForReusePings{
-    "VisualFeaturesInReusePings", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVisualFeaturesForReusePings,
+             "VisualFeaturesInReusePings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 namespace {
 // List of Safe Browsing features. Boolean value for each list member should
diff --git a/components/safe_browsing/core/common/features.h b/components/safe_browsing/core/common/features.h
index a4915c9d..f27df75 100644
--- a/components/safe_browsing/core/common/features.h
+++ b/components/safe_browsing/core/common/features.h
@@ -15,21 +15,21 @@
 // Features list, in alphabetical order.
 
 // Controls whether accuracy tips should be enabled.
-extern const base::Feature kAccuracyTipsFeature;
+BASE_DECLARE_FEATURE(kAccuracyTipsFeature);
 
 // Controls various parameters related to occasionally collecting ad samples,
 // for example to control how often collection should occur.
-extern const base::Feature kAdSamplerTriggerFeature;
+BASE_DECLARE_FEATURE(kAdSamplerTriggerFeature);
 
 // Enables including some information in protection requests sent to Safe
 // Browsing.
-extern const base::Feature kBetterTelemetryAcrossReports;
+BASE_DECLARE_FEATURE(kBetterTelemetryAcrossReports);
 
 // The client side detection model is a flatbuffer.
-extern const base::Feature kClientSideDetectionModelIsFlatBuffer;
+BASE_DECLARE_FEATURE(kClientSideDetectionModelIsFlatBuffer);
 
 // Determines the tag to pass to Omaha to get a client side detection model.
-extern const base::Feature kClientSideDetectionModelTag;
+BASE_DECLARE_FEATURE(kClientSideDetectionModelTag);
 
 // The parameter name used for getting the tag values from client side detection
 // features, `kClientSideDetectionModelTag` and
@@ -37,63 +37,63 @@
 const char kClientSideDetectionTagParamName[] = "reporter_omaha_tag";
 
 // Enables client side detection referrer chain.
-extern const base::Feature kClientSideDetectionReferrerChain;
+BASE_DECLARE_FEATURE(kClientSideDetectionReferrerChain);
 
 // Killswitch for client side phishing detection. Since client side models are
 // run on a large fraction of navigations, crashes due to the model are very
 // impactful, even if only a small fraction of users have a bad version of the
 // model. This Finch flag allows us to remediate long-tail component versions
 // while we fix the root cause.
-extern const base::Feature kClientSideDetectionKillswitch;
+BASE_DECLARE_FEATURE(kClientSideDetectionKillswitch);
 
 // Controls whether an access token is attached to scanning requests triggered
 // by enterprise Connectors.
-extern const base::Feature kConnectorsScanningAccessToken;
+BASE_DECLARE_FEATURE(kConnectorsScanningAccessToken);
 
 // Controls the non-blocking scanning UI for Connectors scanning requests. If
 // this is enabled, the downloaded file(s) will be renamed immediately and the
 // scanning will take place without UI when the policy is set to "non-blocking"
 // instead of just showing an "Open Now" button with the blocking UI.
-extern const base::Feature kConnectorsScanningReportOnlyUI;
+BASE_DECLARE_FEATURE(kConnectorsScanningReportOnlyUI);
 
 // Controls whether to connect to the Safe Browsing service early on startup.
 // The alternative is to connect as soon as the first Safe Browsing check is
 // made associated with a URK request. Android only. On this platform getting
 // the notification about the success of establishing the connection can be
 // delayed by several seconds.
-extern const base::Feature kCreateSafebrowsingOnStartup;
+BASE_DECLARE_FEATURE(kCreateSafebrowsingOnStartup);
 
 // Controls whether the delayed warning experiment is enabled.
-extern const base::Feature kDelayedWarnings;
+BASE_DECLARE_FEATURE(kDelayedWarnings);
 // True if mouse clicks should undelay the warnings immediately when delayed
 // warnings feature is enabled.
 extern const base::FeatureParam<bool> kDelayedWarningsEnableMouseClicks;
 
 // Whether to use download bubble instead of download shelf.
-extern const base::Feature kDownloadBubble;
+BASE_DECLARE_FEATURE(kDownloadBubble);
 
 // The V2 of the download bubble, consisting of features that were not available
 // on the download shelf. This is only eligible to be enabled when
 // kDownloadBubble is already enabled.
-extern const base::Feature kDownloadBubbleV2;
+BASE_DECLARE_FEATURE(kDownloadBubbleV2);
 
 // The kill switch for download tailored warnings. The main control is on the
 // server-side.
-extern const base::Feature kDownloadTailoredWarnings;
+BASE_DECLARE_FEATURE(kDownloadTailoredWarnings);
 
 // Enables Enhanced Safe Browsing.
-extern const base::Feature kEnhancedProtection;
+BASE_DECLARE_FEATURE(kEnhancedProtection);
 
 // Phase 2 of Enhanced Safe Browsing changes.
-extern const base::Feature kEnhancedProtectionPhase2IOS;
+BASE_DECLARE_FEATURE(kEnhancedProtectionPhase2IOS);
 
 // Enables collection of signals related to extension activity and uploads
 // of telemetry reports to SB servers.
-extern const base::Feature kExtensionTelemetry;
+BASE_DECLARE_FEATURE(kExtensionTelemetry);
 
 // Enables data collected by the kExtensionTelemetry to be written and read to
 // disk. This data will be uploaded for analysis.
-extern const base::Feature kExtensionTelemetryPersistence;
+BASE_DECLARE_FEATURE(kExtensionTelemetryPersistence);
 
 // Specifies the upload interval for extension telemetry reports.
 extern const base::FeatureParam<int> kExtensionTelemetryUploadIntervalSeconds;
@@ -104,72 +104,72 @@
 
 // Enables collection of telemetry signal whenever an extension invokes the
 // tabs.executeScript API call.
-extern const base::Feature kExtensionTelemetryTabsExecuteScriptSignal;
+BASE_DECLARE_FEATURE(kExtensionTelemetryTabsExecuteScriptSignal);
 
 // Enables reporting of remote hosts contacted by extensions in telemetry.
-extern const base::Feature kExtensionTelemetryReportContactedHosts;
+BASE_DECLARE_FEATURE(kExtensionTelemetryReportContactedHosts);
 
 // Determines the tag to pass to Omaha to get a file type policy.
-extern const base::Feature kFileTypePoliciesTag;
+BASE_DECLARE_FEATURE(kFileTypePoliciesTag);
 
 // The parameter name used for getting the tag value from
 // `kFileTypePoliciesTag`.
 const char kFileTypePoliciesTagParamName[] = "policy_omaha_tag";
 
 // Enable logging of the account enhanced protection setting in Protego pings.
-extern const base::Feature kLogAccountEnhancedProtectionStateInProtegoPings;
+BASE_DECLARE_FEATURE(kLogAccountEnhancedProtectionStateInProtegoPings);
 
 // Enable omitting non-user gesture from referrer chain.
-extern const base::Feature kOmitNonUserGesturesFromReferrerChain;
+BASE_DECLARE_FEATURE(kOmitNonUserGesturesFromReferrerChain);
 
 // Bypass RealTime URL Lookup allowlist for enterprise users.
-extern const base::Feature kRealTimeUrlLookupForEnterpriseAllowlistBypass;
+BASE_DECLARE_FEATURE(kRealTimeUrlLookupForEnterpriseAllowlistBypass);
 
 // Controls whether Client Safe Browsing Reports are sent with a GAIA-tied token
 // for Enhanced Safe Browsing users
-extern const base::Feature kSafeBrowsingCsbrrWithToken;
+BASE_DECLARE_FEATURE(kSafeBrowsingCsbrrWithToken);
 
 // Controls whether we are performing enterprise download checks for users
 // with the appropriate policies enabled.
-extern const base::Feature kSafeBrowsingEnterpriseCsd;
+BASE_DECLARE_FEATURE(kSafeBrowsingEnterpriseCsd);
 
 // Controls whether we are disabling consumer download checks for users using
 // the enterprise download checks.
-extern const base::Feature kSafeBrowsingDisableConsumerCsdForEnterprise;
+BASE_DECLARE_FEATURE(kSafeBrowsingDisableConsumerCsdForEnterprise);
 
 // Controls whether page load tokens are added to Safe Browsing requests.
-extern const base::Feature kSafeBrowsingPageLoadToken;
+BASE_DECLARE_FEATURE(kSafeBrowsingPageLoadToken);
 
 // Controls whether cookies are removed when the access token is present.
-extern const base::Feature kSafeBrowsingRemoveCookiesInAuthRequests;
+BASE_DECLARE_FEATURE(kSafeBrowsingRemoveCookiesInAuthRequests);
 
 // Controls the daily quota for the suspicious site trigger.
-extern const base::Feature kSuspiciousSiteTriggerQuotaFeature;
+BASE_DECLARE_FEATURE(kSuspiciousSiteTriggerQuotaFeature);
 
 // Controls whether to send sample pings of Protego allowlist domains on
 // the allowlist to Safe Browsing.
-extern const base::Feature kSendSampledPingsForProtegoAllowlistDomains;
+BASE_DECLARE_FEATURE(kSendSampledPingsForProtegoAllowlistDomains);
 
 // Killswitch for using the SevenZipReader in the installer.
-extern const base::Feature kSevenZipReaderInInstaller;
+BASE_DECLARE_FEATURE(kSevenZipReaderInInstaller);
 
 // Controls whether the new 7z evaluation is performed on downloads.
-extern const base::Feature kSevenZipEvaluationEnabled;
+BASE_DECLARE_FEATURE(kSevenZipEvaluationEnabled);
 
 // Status of the SimplifiedUrlDisplay experiments. This does not control the
 // individual experiments, those are controlled by their own feature flags.
 // The feature is only set by Finch so that we can differentiate between
 // default and control groups of the experiment.
-extern const base::Feature kSimplifiedUrlDisplay;
+BASE_DECLARE_FEATURE(kSimplifiedUrlDisplay);
 
 // Controls whether to automatically enable Enhanced Protection for desktop
 // tailored security users. If not enabled, users of tailored security are
 // notified that they can enable Enhanced Protection through an operating system
 // notification.
-extern const base::Feature kTailoredSecurityDesktopNotice;
+BASE_DECLARE_FEATURE(kTailoredSecurityDesktopNotice);
 
 // Controls whether the integration of tailored security settings is enabled.
-extern const base::Feature kTailoredSecurityIntegration;
+BASE_DECLARE_FEATURE(kTailoredSecurityIntegration);
 
 // Specifies which non-resource HTML Elements to collect based on their tag and
 // attributes. It's a single param containing a comma-separated list of pairs.
@@ -177,21 +177,21 @@
 // tag "tag1" that have attribute "id" or "height" set, and elements of tag
 // "tag2" if they have attribute "foo" set. All tag names and attributes should
 // be lower case.
-extern const base::Feature kThreatDomDetailsTagAndAttributeFeature;
+BASE_DECLARE_FEATURE(kThreatDomDetailsTagAndAttributeFeature);
 
 // Controls whether Chrome uses new download warning UX.
-extern const base::Feature kUseNewDownloadWarnings;
+BASE_DECLARE_FEATURE(kUseNewDownloadWarnings);
 
 // Controls the behavior of visual features in CSD pings. This feature is
 // checked for the final size of the visual features and the minimum size of
 // the screen.
-extern const base::Feature kVisualFeaturesSizes;
+BASE_DECLARE_FEATURE(kVisualFeaturesSizes);
 
 // Controls whether we send visual features in CSPP pings.
-extern const base::Feature kVisualFeaturesInCsppPings;
+BASE_DECLARE_FEATURE(kVisualFeaturesInCsppPings);
 
 // Controls whether we send visual features in password reuse pings.
-extern const base::Feature kVisualFeaturesForReusePings;
+BASE_DECLARE_FEATURE(kVisualFeaturesForReusePings);
 
 base::Value::List GetFeatureStatusList();
 
diff --git a/components/security_interstitials/core/browser/resources/list_of_interstitials.html b/components/security_interstitials/core/browser/resources/list_of_interstitials.html
index 1d7b4b53..d1cb6e9 100644
--- a/components/security_interstitials/core/browser/resources/list_of_interstitials.html
+++ b/components/security_interstitials/core/browser/resources/list_of_interstitials.html
@@ -149,7 +149,7 @@
     <h3>Supervised User</h3>
     <ul>
       <li>
-        <a href="supervised_user?allow-access-requests=1">Supervised User Blocked Site</a>
+        <a href="supervised_user">Supervised User Blocked Site</a>
       </li>
     </ul>
   </if>
diff --git a/components/services/app_service/public/cpp/features.cc b/components/services/app_service/public/cpp/features.cc
index 1e74692d..90ad3a6 100644
--- a/components/services/app_service/public/cpp/features.cc
+++ b/components/services/app_service/public/cpp/features.cc
@@ -28,6 +28,6 @@
     "AppServiceCapabilityAccessWithoutMojom", base::FEATURE_ENABLED_BY_DEFAULT};
 
 const base::Feature kStopMojomAppService{"StopMojomAppService",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+                                         base::FEATURE_ENABLED_BY_DEFAULT};
 
 }  // namespace apps
diff --git a/components/test/BUILD.gn b/components/test/BUILD.gn
index 745a06b..36bce5b 100644
--- a/components/test/BUILD.gn
+++ b/components/test/BUILD.gn
@@ -14,6 +14,7 @@
   ]
 
   deps = [
+    "//components/breadcrumbs/core",
     "//components/content_settings/core/common",
     "//components/gcm_driver:gcm_driver",
     "//mojo/core/embedder",
diff --git a/components/test/components_test_suite.cc b/components/test/components_test_suite.cc
index 10d25f1..158fbbf 100644
--- a/components/test/components_test_suite.cc
+++ b/components/test/components_test_suite.cc
@@ -15,6 +15,7 @@
 #include "base/test/test_suite.h"
 #include "build/build_config.h"
 #include "build/buildflag.h"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "components/content_settings/core/common/content_settings_pattern.h"
 #include "mojo/core/embedder/embedder.h"
 #include "services/network/public/cpp/features.h"
@@ -106,7 +107,6 @@
   }
 };
 
-#if BUILDFLAG(IS_IOS)
 class ComponentsUnitTestEventListener : public testing::EmptyTestEventListener {
  public:
   ComponentsUnitTestEventListener() = default;
@@ -116,18 +116,24 @@
       const ComponentsUnitTestEventListener&) = delete;
   ~ComponentsUnitTestEventListener() override = default;
 
+#if BUILDFLAG(IS_IOS)
   void OnTestStart(const testing::TestInfo& test_info) override {
     ios_initializer_.reset(new IosComponentsTestInitializer());
   }
+#endif
 
   void OnTestEnd(const testing::TestInfo& test_info) override {
+    breadcrumbs::BreadcrumbManager::GetInstance().ResetForTesting();
+#if BUILDFLAG(IS_IOS)
     ios_initializer_.reset();
+#endif
   }
 
+#if BUILDFLAG(IS_IOS)
  private:
   std::unique_ptr<IosComponentsTestInitializer> ios_initializer_;
-};
 #endif
+};
 
 }  // namespace
 
@@ -139,11 +145,11 @@
           content::UnitTestTestSuite::CreateTestContentClients));
 #else
   auto test_suite = std::make_unique<ComponentsTestSuite>(argc, argv);
+#endif
 
   testing::TestEventListeners& listeners =
       testing::UnitTest::GetInstance()->listeners();
   listeners.Append(new ComponentsUnitTestEventListener());
-#endif
 
 #if !BUILDFLAG(IS_IOS)
   return base::BindOnce(&content::UnitTestTestSuite::Run,
diff --git a/components/variations/fuzzers/create_trial_from_study_fuzzer.cc b/components/variations/fuzzers/create_trial_from_study_fuzzer.cc
index ff49020..64ab70dc 100644
--- a/components/variations/fuzzers/create_trial_from_study_fuzzer.cc
+++ b/components/variations/fuzzers/create_trial_from_study_fuzzer.cc
@@ -67,7 +67,7 @@
   if (processed_study.Init(&study)) {
     VariationsSeedProcessor().CreateTrialFromStudy(
         processed_study, override_callback.callback(),
-        &mock_low_entropy_provider, &feature_list);
+        mock_low_entropy_provider, &feature_list);
   }
 }
 
diff --git a/components/variations/fuzzers/create_trials_from_seed_fuzzer.cc b/components/variations/fuzzers/create_trials_from_seed_fuzzer.cc
index 522959c..9d0c7dd 100644
--- a/components/variations/fuzzers/create_trials_from_seed_fuzzer.cc
+++ b/components/variations/fuzzers/create_trials_from_seed_fuzzer.cc
@@ -80,7 +80,7 @@
 
   VariationsSeedProcessor().CreateTrialsFromSeed(
       seed, *client_state, override_callback.callback(),
-      &mock_low_entropy_provider, &feature_list);
+      mock_low_entropy_provider, &feature_list);
 }
 
 DEFINE_PROTO_FUZZER(const VariationsSeed& seed) {
diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
index 3cf22dc..e2a0497 100644
--- a/components/variations/service/variations_field_trial_creator.cc
+++ b/components/variations/service/variations_field_trial_creator.cc
@@ -227,8 +227,6 @@
     const std::vector<std::string>& variation_ids,
     const std::string& command_line_variation_ids,
     const std::vector<base::FeatureList::FeatureOverrideInfo>& extra_overrides,
-    std::unique_ptr<const base::FieldTrial::EntropyProvider>
-        low_entropy_provider,
     std::unique_ptr<base::FeatureList> feature_list,
     metrics::MetricsStateManager* metrics_state_manager,
     PlatformFieldTrials* platform_field_trials,
@@ -246,7 +244,11 @@
   // it's in two places.
   VariationsIdsProvider* http_header_provider =
       VariationsIdsProvider::GetInstance();
-  http_header_provider->SetLowEntropySourceValue(low_entropy_source_value);
+
+  if (low_entropy_source_value.has_value()) {
+    http_header_provider->SetLowEntropySourceValue(
+        low_entropy_source_value.value());
+  }
   // Force the variation ids selected in chrome://flags and/or specified using
   // the command-line flag.
   auto result = http_header_provider->ForceVariationIds(
@@ -306,10 +308,12 @@
         command_line->GetSwitchValuePath(switches::kVariationsTestSeedPath));
   }
 
+  auto low_entropy_provider = metrics_state_manager->CreateLowEntropyProvider();
+
   bool used_seed = false;
   if (!used_testing_config) {
-    used_seed = CreateTrialsFromSeed(low_entropy_provider.get(),
-                                     feature_list.get(), safe_seed_manager);
+    used_seed = CreateTrialsFromSeed(*low_entropy_provider, feature_list.get(),
+                                     safe_seed_manager);
   }
 
   platform_field_trials->SetUpFeatureControllingFieldTrials(
@@ -579,7 +583,7 @@
 }
 
 bool VariationsFieldTrialCreator::CreateTrialsFromSeed(
-    const base::FieldTrial::EntropyProvider* low_entropy_provider,
+    const base::FieldTrial::EntropyProvider& low_entropy_provider,
     base::FeatureList* feature_list,
     SafeSeedManager* safe_seed_manager) {
   TRACE_EVENT0("startup", "VariationsFieldTrialCreator::CreateTrialsFromSeed");
diff --git a/components/variations/service/variations_field_trial_creator.h b/components/variations/service/variations_field_trial_creator.h
index 38fb911..4bacd2a 100644
--- a/components/variations/service/variations_field_trial_creator.h
+++ b/components/variations/service/variations_field_trial_creator.h
@@ -114,7 +114,6 @@
   // |extra_overrides| gives a list of feature overrides that should be applied
   // after the features explicitly disabled/enabled from the command line via
   // --disable-features and --enable-features, but before field trials.
-  // |low_entropy_provider| allows for field trial randomization. May be null.
   // |feature_list| contains the list of all active features for this client.
   // Must not be null.
   // |metrics_state_manager| facilitates signaling that Chrome has not yet
@@ -125,7 +124,9 @@
   // state that was activated to create the field trials (only when the return
   // value is true). Must not be null.
   // |low_entropy_source_value| contains the low entropy source value that was
-  // used for client-side randomization of variations.
+  // used for client-side randomization of variations, and indicates a
+  // variations ID for it should be added to FIRST_PARTY variation headers.
+  // TODO(b/183955043): eliminate this argument if we can always add the ID.
   //
   // NOTE: The ordering of the FeatureList method calls is such that the
   // explicit --disable-features and --enable-features from the command line
@@ -136,8 +137,6 @@
       const std::string& command_line_variation_ids,
       const std::vector<base::FeatureList::FeatureOverrideInfo>&
           extra_overrides,
-      std::unique_ptr<const base::FieldTrial::EntropyProvider>
-          low_entropy_provider,
       std::unique_ptr<base::FeatureList> feature_list,
       metrics::MetricsStateManager* metrics_state_manager,
       PlatformFieldTrials* platform_field_trials,
@@ -220,7 +219,7 @@
   // successfully; and if so, stores the loaded variations state into the
   // |safe_seed_manager|.
   bool CreateTrialsFromSeed(
-      const base::FieldTrial::EntropyProvider* low_entropy_provider,
+      const base::FieldTrial::EntropyProvider& low_entropy_provider,
       base::FeatureList* feature_list,
       SafeSeedManager* safe_seed_manager);
 
diff --git a/components/variations/service/variations_field_trial_creator_unittest.cc b/components/variations/service/variations_field_trial_creator_unittest.cc
index 7780ace..469fad4d 100644
--- a/components/variations/service/variations_field_trial_creator_unittest.cc
+++ b/components/variations/service/variations_field_trial_creator_unittest.cc
@@ -302,9 +302,9 @@
         base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
             switches::kForceVariationIds),
         std::vector<base::FeatureList::FeatureOverrideInfo>(),
-        /*low_entropy_provider=*/nullptr, std::make_unique<base::FeatureList>(),
-        metrics_state_manager_.get(), &platform_field_trials,
-        safe_seed_manager_, /*low_entropy_source_value=*/absl::nullopt);
+        std::make_unique<base::FeatureList>(), metrics_state_manager_.get(),
+        &platform_field_trials, safe_seed_manager_,
+        metrics_state_manager_->GetLowEntropySource());
   }
 
   TestVariationsSeedStore* seed_store() { return &seed_store_; }
@@ -820,9 +820,9 @@
       /*variation_ids=*/{},
       /*command_line_variation_ids=*/std::string(),
       std::vector<base::FeatureList::FeatureOverrideInfo>(),
-      /*low_entropy_provider=*/nullptr, std::make_unique<base::FeatureList>(),
-      metrics_state_manager.get(), &platform_field_trials, &safe_seed_manager,
-      /*low_entropy_source_value=*/absl::nullopt));
+      std::make_unique<base::FeatureList>(), metrics_state_manager.get(),
+      &platform_field_trials, &safe_seed_manager,
+      metrics_state_manager->GetLowEntropySource()));
 
   EXPECT_TRUE(base::FieldTrialList::TrialExists(kTestSeedData.study_names[0]));
   EXPECT_EQ(
@@ -870,9 +870,9 @@
       base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
           switches::kForceVariationIds),
       std::vector<base::FeatureList::FeatureOverrideInfo>(),
-      /*low_entropy_provider=*/nullptr, std::make_unique<base::FeatureList>(),
-      metrics_state_manager.get(), &platform_field_trials, &safe_seed_manager,
-      /*low_entropy_source_value=*/absl::nullopt));
+      std::make_unique<base::FeatureList>(), metrics_state_manager.get(),
+      &platform_field_trials, &safe_seed_manager,
+      metrics_state_manager->GetLowEntropySource()));
 
   EXPECT_EQ(kTestSeedExperimentName,
             base::FieldTrialList::FindFullName(kTestSeedStudyName));
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
index 4dbb335..40780e4 100644
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -685,11 +685,6 @@
   return true;
 }
 
-std::unique_ptr<const base::FieldTrial::EntropyProvider>
-VariationsService::CreateLowEntropyProvider() {
-  return state_manager_->CreateLowEntropyProvider();
-}
-
 void VariationsService::InitResourceRequestedAllowedNotifier() {
   // ResourceRequestAllowedNotifier does not install an observer if there is no
   // NetworkChangeNotifier, which results in never being notified of changes to
@@ -949,9 +944,8 @@
     variations::PlatformFieldTrials* platform_field_trials) {
   return field_trial_creator_.SetUpFieldTrials(
       variation_ids, command_line_variation_ids, extra_overrides,
-      CreateLowEntropyProvider(), std::move(feature_list), state_manager_,
-      platform_field_trials, &safe_seed_manager_,
-      state_manager_->GetLowEntropySource());
+      std::move(feature_list), state_manager_, platform_field_trials,
+      &safe_seed_manager_, state_manager_->GetLowEntropySource());
 }
 
 void VariationsService::OverrideCachedUIStrings() {
diff --git a/components/variations/service/variations_service.h b/components/variations/service/variations_service.h
index 9382748..2c1ed5c 100644
--- a/components/variations/service/variations_service.h
+++ b/components/variations/service/variations_service.h
@@ -234,12 +234,6 @@
                          bool is_delta_compressed,
                          bool is_gzip_compressed);
 
-  // Create an entropy provider based on low entropy. This is used to create
-  // trials for studies that should only depend on low entropy, such as studies
-  // that send experiment IDs to Google web properties. Virtual for testing.
-  virtual std::unique_ptr<const base::FieldTrial::EntropyProvider>
-  CreateLowEntropyProvider();
-
   // Creates the VariationsService with the given |local_state| prefs service
   // and |state_manager|. Does not take ownership of |state_manager|. Caller
   // should ensure that |state_manager| is valid for the lifetime of this class.
diff --git a/components/variations/service/variations_service_unittest.cc b/components/variations/service/variations_service_unittest.cc
index e58bf26..5498bf5b 100644
--- a/components/variations/service/variations_service_unittest.cc
+++ b/components/variations/service/variations_service_unittest.cc
@@ -207,11 +207,6 @@
     return seed_stores_succeed_;
   }
 
-  std::unique_ptr<const base::FieldTrial::EntropyProvider>
-  CreateLowEntropyProvider() override {
-    return std::unique_ptr<const base::FieldTrial::EntropyProvider>(nullptr);
-  }
-
   TestVariationsServiceClient* client() {
     return static_cast<TestVariationsServiceClient*>(
         VariationsService::client());
diff --git a/components/variations/variations_layers.cc b/components/variations/variations_layers.cc
index 48c11dd..ff94300 100644
--- a/components/variations/variations_layers.cc
+++ b/components/variations/variations_layers.cc
@@ -54,16 +54,11 @@
 
 VariationsLayers::VariationsLayers(
     const VariationsSeed& seed,
-    const base::FieldTrial::EntropyProvider* low_entropy_provider) {
-  if (!low_entropy_provider) {
-    // Android WebView does not support low-entropy field trials.
-    return;
-  }
-
+    const base::FieldTrial::EntropyProvider& low_entropy_provider) {
   // TODO(crbug.com/1154033): Support a way to expire old/unused layers so they
   // no longer get processed by the clients.
   for (const Layer& layer_proto : seed.layers())
-    ConstructLayer(*low_entropy_provider, layer_proto);
+    ConstructLayer(low_entropy_provider, layer_proto);
 }
 
 VariationsLayers::VariationsLayers() = default;
diff --git a/components/variations/variations_layers.h b/components/variations/variations_layers.h
index 8709c4b..dc67a640 100644
--- a/components/variations/variations_layers.h
+++ b/components/variations/variations_layers.h
@@ -20,7 +20,7 @@
  public:
   VariationsLayers(
       const VariationsSeed& seed,
-      const base::FieldTrial::EntropyProvider* low_entropy_provider);
+      const base::FieldTrial::EntropyProvider& low_entropy_provider);
 
   VariationsLayers();
   ~VariationsLayers();
diff --git a/components/variations/variations_seed_processor.cc b/components/variations/variations_seed_processor.cc
index 718aa17..14f67060 100644
--- a/components/variations/variations_seed_processor.cc
+++ b/components/variations/variations_seed_processor.cc
@@ -16,6 +16,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/variations/client_filterable_state.h"
+#include "components/variations/entropy_provider.h"
 #include "components/variations/processed_study.h"
 #include "components/variations/study_filtering.h"
 #include "components/variations/variations_associated_data.h"
@@ -208,6 +209,29 @@
   trial->Activate();
 }
 
+bool ShouldSessionRandomizeStudy(const ProcessedStudy& processed_study) {
+  return !processed_study.study()->has_consistency() ||
+         processed_study.study()->consistency() !=
+             Study_Consistency_PERMANENT ||
+         // If all assignments are to a single group, no need to enable one time
+         // randomization (which is more expensive to compute), since the result
+         // will be the same.
+         processed_study.all_assignments_to_one_group();
+}
+
+const base::FieldTrial::EntropyProvider& SelectEntropyProviderForStudy(
+    const ProcessedStudy& processed_study,
+    const base::FieldTrial::EntropyProvider& low_entropy_provider) {
+  if (ShouldSessionRandomizeStudy(processed_study)) {
+    return base::FieldTrialList::GetEntropyProviderForSessionRandomization();
+  }
+  if (VariationsSeedProcessor::ShouldStudyUseLowEntropy(
+          *processed_study.study())) {
+    return low_entropy_provider;
+  }
+  return base::FieldTrialList::GetEntropyProviderForOneTimeRandomization();
+}
+
 }  // namespace
 
 VariationsSeedProcessor::VariationsSeedProcessor() = default;
@@ -218,7 +242,7 @@
     const VariationsSeed& seed,
     const ClientFilterableState& client_state,
     const UIStringOverrideCallback& override_callback,
-    const base::FieldTrial::EntropyProvider* low_entropy_provider,
+    const base::FieldTrial::EntropyProvider& low_entropy_provider,
     base::FeatureList* feature_list) {
   base::UmaHistogramCounts1000("Variations.AppliedSeed.StudyCount",
                                seed.study().size());
@@ -251,7 +275,7 @@
 void VariationsSeedProcessor::CreateTrialFromStudy(
     const ProcessedStudy& processed_study,
     const UIStringOverrideCallback& override_callback,
-    const base::FieldTrial::EntropyProvider* low_entropy_provider,
+    const base::FieldTrial::EntropyProvider& low_entropy_provider,
     base::FeatureList* feature_list) {
   // Since trials and features can come from many different sources (variations
   // seed, about://flags, and command line), there are special cases for when
@@ -337,32 +361,16 @@
   if (processed_study.total_probability() <= 0)
     return;
 
-  const auto* entropy_provider =
-      &base::FieldTrialList::GetEntropyProviderForSessionRandomization();
-  uint32_t randomization_seed = 0;
-  if (study.has_consistency() &&
-      study.consistency() == Study_Consistency_PERMANENT &&
-      // If all assignments are to a single group, no need to enable one time
-      // randomization (which is more expensive to compute), since the result
-      // will be the same.
-      !processed_study.all_assignments_to_one_group()) {
-    // WebView currently passes a null low_entropy_provider, which actually
-    // means that the default provider is low-entropy.
-    // TODO(b/183955043): Express that more coherently and without nullptr.
-    if (low_entropy_provider && ShouldStudyUseLowEntropy(study)) {
-      entropy_provider = low_entropy_provider;
-    } else {
-      entropy_provider =
-          &base::FieldTrialList::GetEntropyProviderForOneTimeRandomization();
-    }
-    if (study.has_randomization_seed())
-      randomization_seed = study.randomization_seed();
-  }
+  const auto& entropy_provider =
+      SelectEntropyProviderForStudy(processed_study, low_entropy_provider);
+  uint32_t randomization_seed = ShouldSessionRandomizeStudy(processed_study)
+                                    ? study.randomization_seed()
+                                    : 0;
 
   scoped_refptr<base::FieldTrial> trial(
       base::FieldTrialList::FactoryGetFieldTrial(
           study.name(), processed_study.total_probability(),
-          processed_study.GetDefaultExperimentName(), *entropy_provider,
+          processed_study.GetDefaultExperimentName(), entropy_provider,
           randomization_seed));
 
   bool has_overrides = false;
diff --git a/components/variations/variations_seed_processor.h b/components/variations/variations_seed_processor.h
index 9183997..19af013 100644
--- a/components/variations/variations_seed_processor.h
+++ b/components/variations/variations_seed_processor.h
@@ -54,7 +54,7 @@
       const VariationsSeed& seed,
       const ClientFilterableState& client_state,
       const UIStringOverrideCallback& override_callback,
-      const base::FieldTrial::EntropyProvider* low_entropy_provider,
+      const base::FieldTrial::EntropyProvider& low_entropy_provider,
       base::FeatureList* feature_list);
 
   // If the given |study| should alwoys use low entropy. This is true for any
@@ -75,7 +75,7 @@
   void CreateTrialFromStudy(
       const ProcessedStudy& processed_study,
       const UIStringOverrideCallback& override_callback,
-      const base::FieldTrial::EntropyProvider* low_entropy_provider,
+      const base::FieldTrial::EntropyProvider& low_entropy_provider,
       base::FeatureList* feature_list);
 };
 
diff --git a/components/variations/variations_seed_processor_unittest.cc b/components/variations/variations_seed_processor_unittest.cc
index 742604d..b4c420f4 100644
--- a/components/variations/variations_seed_processor_unittest.cc
+++ b/components/variations/variations_seed_processor_unittest.cc
@@ -129,7 +129,7 @@
 }
 
 // ChromeEnvironment calls CreateTrialsFromSeed with arguments similar to
-// chrome. In particular, it passes a non-nullptr as low_entropy_source.
+// chrome.
 class ChromeEnvironment {
  public:
   void CreateTrialsFromSeed(
@@ -141,19 +141,15 @@
     client_state->platform = Study::PLATFORM_ANDROID;
 
     base::MockEntropyProvider mock_low_entropy_provider(low_entropy);
-    VariationsSeedProcessor seed_processor;
     // This should mimic the call through SetUpFieldTrials from
     // components/variations/service/variations_service.cc
-    seed_processor.CreateTrialsFromSeed(seed, *client_state, callback,
-                                        &mock_low_entropy_provider,
-                                        feature_list);
+    VariationsSeedProcessor().CreateTrialsFromSeed(
+        seed, *client_state, callback, mock_low_entropy_provider, feature_list);
   }
-
-  bool SupportsLayers() { return true; }
 };
 
 // WebViewEnvironment calls CreateTrialsFromSeed with arguments similar to
-// WebView. In particular, it passes a nullptr as low_entropy_source.
+// WebView.
 class WebViewEnvironment {
  public:
   void CreateTrialsFromSeed(
@@ -164,14 +160,12 @@
     auto client_state = CreateChromeClientFilterableState();
     client_state->platform = Study::PLATFORM_ANDROID_WEBVIEW;
 
-    VariationsSeedProcessor seed_processor;
+    base::MockEntropyProvider mock_low_entropy_provider(low_entropy);
     // This should mimic the call through SetUpFieldTrials from
     // android_webview/browser/aw_feature_list_creator.cc
-    seed_processor.CreateTrialsFromSeed(seed, *client_state, callback, nullptr,
-                                        feature_list);
+    VariationsSeedProcessor().CreateTrialsFromSeed(
+        seed, *client_state, callback, mock_low_entropy_provider, feature_list);
   }
-
-  bool SupportsLayers() { return false; }
 };
 
 template <typename Environment>
@@ -467,7 +461,7 @@
   base::MockEntropyProvider mock_low_entropy_provider(0.9);
   seed_processor.CreateTrialsFromSeed(
       seed, client_state, this->override_callback_.callback(),
-      &mock_low_entropy_provider, base::FeatureList::GetInstance());
+      mock_low_entropy_provider, base::FeatureList::GetInstance());
 
   // Non-specified and ACTIVATE_ON_QUERY should not start active, but
   // ACTIVATE_ON_STARTUP should.
@@ -762,12 +756,7 @@
 
   // Since an experiment in study2 has google_web_experiment_id set, it will use
   // the low entropy provider, which selects the default group.
-  if (this->env.SupportsLayers()) {
-    EXPECT_EQ(kDefaultName, base::FieldTrialList::FindFullName(kTrial2Name));
-  } else {
-    // On WebView we always use the default entropy provider.
-    EXPECT_EQ(kGroup1Name, base::FieldTrialList::FindFullName(kTrial1Name));
-  }
+  EXPECT_EQ(kDefaultName, base::FieldTrialList::FindFullName(kTrial2Name));
 }
 
 TYPED_TEST(VariationsSeedProcessorTest, StudyWithInvalidLayer) {
@@ -841,11 +830,7 @@
   this->CreateTrialsFromSeed(seed);
 
   // The layer only has the single member, which is what should be chosen.
-  if (this->env.SupportsLayers()) {
-    EXPECT_TRUE(base::FieldTrialList::IsTrialActive(study->name()));
-  } else {
-    EXPECT_FALSE(base::FieldTrialList::IsTrialActive(study->name()));
-  }
+  EXPECT_TRUE(base::FieldTrialList::IsTrialActive(study->name()));
 }
 
 TYPED_TEST(VariationsSeedProcessorTest, StudyWithLayerMemberWithNoSlots) {
@@ -905,11 +890,7 @@
 
   // The layer only has the single member, which is what should be chosen.
   // Having two duplicate slot ranges within that member should not crash.
-  if (this->env.SupportsLayers()) {
-    EXPECT_TRUE(base::FieldTrialList::IsTrialActive(study->name()));
-  } else {
-    EXPECT_FALSE(base::FieldTrialList::IsTrialActive(study->name()));
-  }
+  EXPECT_TRUE(base::FieldTrialList::IsTrialActive(study->name()));
 }
 
 TYPED_TEST(VariationsSeedProcessorTest,
@@ -1056,11 +1037,7 @@
   this->CreateTrialsFromSeed(seed, /*low_entropy=*/0.99);
 
   // The study is a member of the 0xDEAD layer member and should be active.
-  if (this->env.SupportsLayers()) {
-    EXPECT_TRUE(base::FieldTrialList::IsTrialActive(study->name()));
-  } else {
-    EXPECT_FALSE(base::FieldTrialList::IsTrialActive(study->name()));
-  }
+  EXPECT_TRUE(base::FieldTrialList::IsTrialActive(study->name()));
 }
 
 TYPED_TEST(VariationsSeedProcessorTest, LayerWithNoMembers) {
diff --git a/components/variations/variations_seed_simulator.cc b/components/variations/variations_seed_simulator.cc
index a9556e9..e0cb400 100644
--- a/components/variations/variations_seed_simulator.cc
+++ b/components/variations/variations_seed_simulator.cc
@@ -116,7 +116,7 @@
     const VariationsSeed& seed,
     const ClientFilterableState& client_state) {
   std::vector<ProcessedStudy> filtered_studies;
-  VariationsLayers layers(seed, &low_entropy_provider_);
+  VariationsLayers layers(seed, low_entropy_provider_);
   FilterAndValidateStudies(seed, client_state, layers, &filtered_studies);
 
   return ComputeDifferences(filtered_studies);
diff --git a/components/viz/common/quads/render_pass_io.cc b/components/viz/common/quads/render_pass_io.cc
index 58de125..29c56d5e 100644
--- a/components/viz/common/quads/render_pass_io.cc
+++ b/components/viz/common/quads/render_pass_io.cc
@@ -255,14 +255,14 @@
   DCHECK_LT(0u, expected_count);
   if (!list.is_list())
     return false;
-  size_t count = list.GetListDeprecated().size();
+  size_t count = list.GetList().size();
   if (count != expected_count)
     return false;
   std::vector<double> double_data(count);
   for (size_t ii = 0; ii < count; ++ii) {
-    if (!list.GetListDeprecated()[ii].is_double())
+    if (!list.GetList()[ii].is_double())
       return false;
-    double_data[ii] = list.GetListDeprecated()[ii].GetDouble();
+    double_data[ii] = list.GetList()[ii].GetDouble();
   }
   for (size_t ii = 0; ii < count; ++ii)
     data[ii] = static_cast<float>(double_data[ii]);
@@ -475,13 +475,13 @@
   DCHECK(transform);
   if (!list.is_list())
     return false;
-  if (list.GetListDeprecated().size() != 16)
+  if (list.GetList().size() != 16)
     return false;
   float data[16];
   for (size_t ii = 0; ii < 16; ++ii) {
-    if (!list.GetListDeprecated()[ii].is_double())
+    if (!list.GetList()[ii].is_double())
       return false;
-    data[ii] = list.GetListDeprecated()[ii].GetDouble();
+    data[ii] = list.GetList()[ii].GetDouble();
   }
   *transform = gfx::Transform::ColMajorF(data);
   return true;
@@ -500,11 +500,11 @@
   DCHECK(shape);
   if (!list.is_list())
     return false;
-  size_t size = list.GetListDeprecated().size();
+  size_t size = list.GetList().size();
   cc::FilterOperation::ShapeRects data;
   data.resize(size);
   for (size_t ii = 0; ii < size; ++ii) {
-    if (!RectFromDict(list.GetListDeprecated()[ii], &data[ii]))
+    if (!RectFromDict(list.GetList()[ii], &data[ii]))
       return false;
   }
   *shape = data;
@@ -698,9 +698,9 @@
   if (!list.is_list())
     return false;
   cc::FilterOperations data;
-  for (size_t ii = 0; ii < list.GetListDeprecated().size(); ++ii) {
+  for (const auto& entry : list.GetList()) {
     cc::FilterOperation filter;
-    if (!FilterOperationFromDict(list.GetListDeprecated()[ii], &filter))
+    if (!FilterOperationFromDict(entry, &filter))
       return false;
     data.Append(filter);
   }
@@ -998,7 +998,7 @@
   DCHECK(resources);
   if (!list.is_list())
     return false;
-  size_t size = list.GetListDeprecated().size();
+  size_t size = list.GetList().size();
   if (size == 0u) {
     resources->count = 0u;
     return true;
@@ -1006,13 +1006,13 @@
   if (size > DrawQuad::Resources::kMaxResourceIdCount)
     return false;
   for (size_t ii = 0; ii < size; ++ii) {
-    if (!list.GetListDeprecated()[ii].is_int())
+    if (!list.GetList()[ii].is_int())
       return false;
   }
 
   resources->count = static_cast<uint32_t>(size);
   for (size_t ii = 0; ii < size; ++ii) {
-    resources->ids[ii] = ResourceId(list.GetListDeprecated()[ii].GetInt());
+    resources->ids[ii] = ResourceId(list.GetList()[ii].GetInt());
   }
   return true;
 }
@@ -1717,11 +1717,11 @@
   case DrawQuad::Material::NAME:            \
     NOTREACHED() << "Unexpected " << #NAME; \
     break;
-#define GET_QUAD_FROM_DICT(NAME, TYPE)                                       \
-  case DrawQuad::Material::NAME: {                                           \
-    TYPE* quad = quads.AllocateAndConstruct<TYPE>();                         \
-    if (!TYPE##FromDict(list.GetListDeprecated()[ii], common.value(), quad)) \
-      return false;                                                          \
+#define GET_QUAD_FROM_DICT(NAME, TYPE)                             \
+  case DrawQuad::Material::NAME: {                                 \
+    TYPE* quad = quads.AllocateAndConstruct<TYPE>();               \
+    if (!TYPE##FromDict(list.GetList()[ii], common.value(), quad)) \
+      return false;                                                \
   } break;
 bool QuadListFromList(const base::Value& list,
                       QuadList* quad_list,
@@ -1729,17 +1729,17 @@
   DCHECK(quad_list);
   if (!list.is_list())
     return false;
-  size_t size = list.GetListDeprecated().size();
+  size_t size = list.GetList().size();
   if (size == 0) {
     quad_list->clear();
     return true;
   }
   QuadList quads(size);
   for (size_t ii = 0; ii < size; ++ii) {
-    if (!list.GetListDeprecated()[ii].is_dict())
+    if (!list.GetList()[ii].is_dict())
       return false;
-    absl::optional<DrawQuadCommon> common = GetDrawQuadCommonFromDict(
-        list.GetListDeprecated()[ii], shared_quad_state_list);
+    absl::optional<DrawQuadCommon> common =
+        GetDrawQuadCommonFromDict(list.GetList()[ii], shared_quad_state_list);
     if (!common)
       return false;
     switch (common->material) {
@@ -1901,14 +1901,14 @@
   DCHECK(shared_quad_state_list);
   if (!list.is_list())
     return false;
-  size_t size = list.GetListDeprecated().size();
+  size_t size = list.GetList().size();
   SharedQuadStateList states(alignof(SharedQuadState), sizeof(SharedQuadState),
                              size);
   for (size_t ii = 0; ii < size; ++ii) {
-    if (!list.GetListDeprecated()[ii].is_dict())
+    if (!list.GetList()[ii].is_dict())
       return false;
     SharedQuadState* sqs = states.AllocateAndConstruct<SharedQuadState>();
-    if (!SharedQuadStateFromDict(list.GetListDeprecated()[ii], sqs))
+    if (!SharedQuadStateFromDict(list.GetList()[ii], sqs))
       return false;
   }
   shared_quad_state_list->swap(states);
@@ -2241,9 +2241,9 @@
   const base::Value* list = dict.FindListKey("render_pass_list");
   if (!list || !list->is_list())
     return false;
-  for (size_t ii = 0; ii < list->GetListDeprecated().size(); ++ii) {
+  for (size_t ii = 0; ii < list->GetList().size(); ++ii) {
     render_pass_list->push_back(
-        CompositorRenderPassFromDict(list->GetListDeprecated()[ii]));
+        CompositorRenderPassFromDict(list->GetList()[ii]));
     if (!(*render_pass_list)[ii].get()) {
       render_pass_list->clear();
       return false;
@@ -2295,8 +2295,7 @@
   if (!referenced_surfaces || !referenced_surfaces->is_list()) {
     return false;
   }
-  for (auto& referenced_surface_dict :
-       referenced_surfaces->GetListDeprecated()) {
+  for (auto& referenced_surface_dict : referenced_surfaces->GetList()) {
     auto referenced_surface = SurfaceRangeFromDict(referenced_surface_dict);
     if (!referenced_surface) {
       return false;
@@ -2336,7 +2335,7 @@
   if (!list.is_list()) {
     return false;
   }
-  for (const auto& frame_data_dict : list.GetListDeprecated()) {
+  for (const auto& frame_data_dict : list.GetList()) {
     FrameData frame_data;
     auto* surface_id_dict = frame_data_dict.FindDictKey("surface_id");
     if (!surface_id_dict) {
diff --git a/components/viz/common/quads/render_pass_io_unittest.cc b/components/viz/common/quads/render_pass_io_unittest.cc
index 29250ba..6d3bcf5 100644
--- a/components/viz/common/quads/render_pass_io_unittest.cc
+++ b/components/viz/common/quads/render_pass_io_unittest.cc
@@ -362,17 +362,14 @@
   // 'intersects_damage_under' in its CompositorRenderPassDrawQuad, I'm
   // removing the field on dict1 for the exact comparison to work.
   base::Value* list = dict1.FindListKey("render_pass_list");
-  for (size_t i = 0; i < list->GetListDeprecated().size(); ++i) {
-    base::Value* quad_list =
-        list->GetListDeprecated()[i].FindListKey("quad_list");
+  for (auto& entry : list->GetList()) {
+    base::Value* quad_list = entry.FindListKey("quad_list");
 
-    for (size_t ii = 0; ii < quad_list->GetListDeprecated().size(); ++ii) {
+    for (auto& quad_entry : quad_list->GetList()) {
       if (const base::Value* extra_value =
-              quad_list->GetListDeprecated()[ii].FindKey(
-                  "intersects_damage_under")) {
+              quad_entry.FindKey("intersects_damage_under")) {
         EXPECT_FALSE(extra_value->GetBool());
-        ASSERT_TRUE(quad_list->GetListDeprecated()[ii].RemoveKey(
-            "intersects_damage_under"));
+        ASSERT_TRUE(quad_entry.RemoveKey("intersects_damage_under"));
       }
     }
   }
diff --git a/components/viz/common/yuv_readback_unittest.cc b/components/viz/common/yuv_readback_unittest.cc
index 54e711f..2e8c154 100644
--- a/components/viz/common/yuv_readback_unittest.cc
+++ b/components/viz/common/yuv_readback_unittest.cc
@@ -104,7 +104,7 @@
         << json_data;
 
     CHECK(parsed_json->is_list());
-    for (const base::Value& dict : parsed_json->GetListDeprecated()) {
+    for (const base::Value& dict : parsed_json->GetList()) {
       CHECK(dict.is_dict());
       const std::string* name = dict.FindStringPath("name");
       CHECK(name);
diff --git a/components/viz/service/debugger/viz_debugger.cc b/components/viz/service/debugger/viz_debugger.cc
index 76294d0..986c2a3 100644
--- a/components/viz/service/debugger/viz_debugger.cc
+++ b/components/viz/service/debugger/viz_debugger.cc
@@ -442,7 +442,7 @@
 
   new_filters_.clear();
 
-  for (const auto& filter : filterlist->GetListDeprecated()) {
+  for (const auto& filter : filterlist->GetList()) {
     const base::Value* file = filter.FindPath("selector.file");
     const base::Value* func = filter.FindPath("selector.func");
     const base::Value* anno = filter.FindPath("selector.anno");
diff --git a/components/viz/service/debugger/viz_debugger_unittests/viz_debugger_unittest_base.cc b/components/viz/service/debugger/viz_debugger_unittests/viz_debugger_unittest_base.cc
index b7072ee..0658a8a3 100644
--- a/components/viz/service/debugger/viz_debugger_unittests/viz_debugger_unittest_base.cc
+++ b/components/viz/service/debugger/viz_debugger_unittests/viz_debugger_unittest_base.cc
@@ -121,8 +121,7 @@
   base::Value* list_source = global_dict->FindListKey("new_sources");
   EXPECT_TRUE(list_source->is_list());
 
-  for (size_t i = 0; i < list_source->GetListDeprecated().size(); i++) {
-    auto&& local_dict = list_source->GetListDeprecated()[i];
+  for (const auto& local_dict : list_source->GetList()) {
     StaticSource ss;
     ss.file = local_dict.FindKey("file")->GetString();
     ss.func = local_dict.FindKey("func")->GetString();
@@ -158,7 +157,7 @@
   };
 
   for (size_t i = 0; i < kNumDrawCallSubmission; i++) {
-    const base::Value& local_dict = draw_call_list->GetListDeprecated()[i];
+    const base::Value& local_dict = draw_call_list->GetList()[i];
     int draw_index;
     int source_index;
     int thread_id;
@@ -168,15 +167,13 @@
 
     const base::Value* list_size = local_dict.FindListKey("size");
     EXPECT_TRUE(list_size->is_list());
-    int size_x = list_size->GetListDeprecated()[0].GetIfInt().value_or(kNoVal);
-    int size_y = list_size->GetListDeprecated()[1].GetIfInt().value_or(kNoVal);
+    int size_x = list_size->GetList()[0].GetIfInt().value_or(kNoVal);
+    int size_y = list_size->GetList()[1].GetIfInt().value_or(kNoVal);
 
     const base::Value* list_pos = local_dict.FindListKey("pos");
     EXPECT_TRUE(list_pos->is_list());
-    float pos_x =
-        list_pos->GetListDeprecated()[0].GetIfDouble().value_or(kNoVal);
-    float pos_y =
-        list_pos->GetListDeprecated()[1].GetIfDouble().value_or(kNoVal);
+    float pos_x = list_pos->GetList()[0].GetIfDouble().value_or(kNoVal);
+    float pos_y = list_pos->GetList()[1].GetIfDouble().value_or(kNoVal);
 
     const base::Value* buffer_id = local_dict.FindKey("buff_id");
 
@@ -189,16 +186,12 @@
     if (local_dict.FindListKey("uv_pos")->GetIfList() &&
         local_dict.FindListKey("uv_size")->GetIfList()) {
       EXPECT_TRUE(list_uv_pos->is_list());
-      uv_pos_x =
-          list_uv_pos->GetListDeprecated()[0].GetIfDouble().value_or(0.0f);
-      uv_pos_y =
-          list_uv_pos->GetListDeprecated()[1].GetIfDouble().value_or(0.0f);
+      uv_pos_x = list_uv_pos->GetList()[0].GetIfDouble().value_or(0.0f);
+      uv_pos_y = list_uv_pos->GetList()[1].GetIfDouble().value_or(0.0f);
 
       EXPECT_TRUE(list_uv_size->is_list());
-      uv_size_w =
-          list_uv_size->GetListDeprecated()[0].GetIfDouble().value_or(1.0f);
-      uv_size_h =
-          list_uv_size->GetListDeprecated()[1].GetIfDouble().value_or(1.0f);
+      uv_size_w = list_uv_size->GetList()[0].GetIfDouble().value_or(1.0f);
+      uv_size_h = list_uv_size->GetList()[1].GetIfDouble().value_or(1.0f);
     }
 
     VizDebuggerInternal::DrawCall draw_call(
@@ -243,7 +236,7 @@
   EXPECT_TRUE(text_call_list->is_list());
 
   for (size_t i = 0; i < kNumTextCallSubmission; i++) {
-    const base::Value& local_dict = text_call_list->GetListDeprecated()[i];
+    const base::Value& local_dict = text_call_list->GetList()[i];
     int draw_index;
     int source_index;
     int thread_id;
@@ -254,10 +247,8 @@
 
     const base::Value* list_pos = local_dict.FindListKey("pos");
     EXPECT_TRUE(list_pos->is_list());
-    float pos_x =
-        list_pos->GetListDeprecated()[0].GetIfDouble().value_or(kNoVal);
-    float pos_y =
-        list_pos->GetListDeprecated()[1].GetIfDouble().value_or(kNoVal);
+    float pos_x = list_pos->GetList()[0].GetIfDouble().value_or(kNoVal);
+    float pos_y = list_pos->GetList()[1].GetIfDouble().value_or(kNoVal);
 
     VizDebuggerInternal::DrawTextCall text_call(
         draw_index, source_index, thread_id, option,
@@ -270,7 +261,7 @@
   EXPECT_TRUE(log_call_list->is_list());
 
   for (size_t i = 0; i < kNumLogSubmission; i++) {
-    const base::Value& local_dict = log_call_list->GetListDeprecated()[i];
+    const base::Value& local_dict = log_call_list->GetList()[i];
     int draw_index;
     int source_index;
     int thread_id;
diff --git a/components/webdata_services/web_data_service_wrapper.cc b/components/webdata_services/web_data_service_wrapper.cc
index b0c0823..d88ec48 100644
--- a/components/webdata_services/web_data_service_wrapper.cc
+++ b/components/webdata_services/web_data_service_wrapper.cc
@@ -19,12 +19,14 @@
 #include "components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge.h"
 #include "components/autofill/core/browser/webdata/autofill_wallet_offer_sync_bridge.h"
 #include "components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h"
+#include "components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h"
 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
 #include "components/autofill/core/common/autofill_features.h"
 #include "components/search_engines/keyword_table.h"
 #include "components/search_engines/keyword_web_data_service.h"
 #include "components/signin/public/webdata/token_service_table.h"
 #include "components/signin/public/webdata/token_web_data.h"
+#include "components/sync/base/features.h"
 #include "components/webdata/common/web_database_service.h"
 #include "components/webdata/common/webdata_constants.h"
 
@@ -71,6 +73,16 @@
       autofill_backend, autofill_web_data.get());
 }
 
+void InitWalletUsageDataSyncBridgeOnDBSequence(
+    scoped_refptr<base::SingleThreadTaskRunner> db_task_runner,
+    const scoped_refptr<autofill::AutofillWebDataService>& autofill_web_data,
+    autofill::AutofillWebDataBackend* autofill_backend) {
+  DCHECK(db_task_runner->RunsTasksInCurrentSequence());
+  autofill::AutofillWalletUsageDataSyncBridge::
+      CreateForWebDataServiceAndBackend(autofill_backend,
+                                        autofill_web_data.get());
+}
+
 }  // namespace
 
 WebDataServiceWrapper::WebDataServiceWrapper() {}
@@ -136,6 +148,11 @@
   profile_autofill_web_data_->GetAutofillBackend(
       base::BindOnce(&InitWalletOfferSyncBridgeOnDBSequence, db_task_runner,
                      profile_autofill_web_data_));
+  if (base::FeatureList::IsEnabled(syncer::kSyncAutofillWalletUsageData)) {
+    profile_autofill_web_data_->GetAutofillBackend(
+        base::BindOnce(&InitWalletUsageDataSyncBridgeOnDBSequence,
+                       db_task_runner, profile_autofill_web_data_));
+  }
 
   if (base::FeatureList::IsEnabled(
           autofill::features::kAutofillEnableAccountWalletStorage)) {
@@ -158,6 +175,11 @@
     account_autofill_web_data_->GetAutofillBackend(
         base::BindOnce(&InitWalletSyncBridgesOnDBSequence, db_task_runner,
                        account_autofill_web_data_, application_locale));
+    if (base::FeatureList::IsEnabled(syncer::kSyncAutofillWalletUsageData)) {
+      account_autofill_web_data_->GetAutofillBackend(
+          base::BindOnce(&InitWalletUsageDataSyncBridgeOnDBSequence,
+                         db_task_runner, account_autofill_web_data_));
+    }
   }
 }
 
diff --git a/content/browser/android/ime_adapter_android.cc b/content/browser/android/ime_adapter_android.cc
index 328f56a..3d86495 100644
--- a/content/browser/android/ime_adapter_android.cc
+++ b/content/browser/android/ime_adapter_android.cc
@@ -193,7 +193,7 @@
       state.composition ? state.composition.value().end() : -1,
       state.reply_to_request,
       static_cast<int>(state.last_vk_visibility_request),
-      static_cast<int>(state.vk_policy), ShouldVirtualKeyboardOverlayContent());
+      static_cast<int>(state.vk_policy));
 }
 
 void ImeAdapterAndroid::UpdateOnTouchDown() {
@@ -536,12 +536,6 @@
   return rwhi->GetFrameWidgetInputHandler();
 }
 
-bool ImeAdapterAndroid::ShouldVirtualKeyboardOverlayContent() {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-  return rwhva_ && rwhva_->ShouldVirtualKeyboardOverlayContent();
-}
-
 std::vector<ui::ImeTextSpan> ImeAdapterAndroid::GetImeTextSpansFromJava(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& obj,
diff --git a/content/browser/android/ime_adapter_android.h b/content/browser/android/ime_adapter_android.h
index a8a929cc..a29f512d 100644
--- a/content/browser/android/ime_adapter_android.h
+++ b/content/browser/android/ime_adapter_android.h
@@ -137,7 +137,6 @@
                           jint);
 
  private:
-  bool ShouldVirtualKeyboardOverlayContent();
   RenderWidgetHostImpl* GetFocusedWidget();
   RenderFrameHost* GetFocusedFrame();
   blink::mojom::FrameWidgetInputHandler* GetFocusedFrameWidgetInputHandler();
diff --git a/content/browser/android/web_contents_observer_proxy.cc b/content/browser/android/web_contents_observer_proxy.cc
index 931d02f..dafe6a1 100644
--- a/content/browser/android/web_contents_observer_proxy.cc
+++ b/content/browser/android/web_contents_observer_proxy.cc
@@ -350,6 +350,13 @@
       env, java_observer_, as_jint(static_cast<int>(value)));
 }
 
+void WebContentsObserverProxy::VirtualKeyboardModeChanged(
+    ui::mojom::VirtualKeyboardMode mode) {
+  JNIEnv* env = AttachCurrentThread();
+  Java_WebContentsObserverProxy_virtualKeyboardModeChanged(
+      env, java_observer_, as_jint(static_cast<int>(mode)));
+}
+
 void WebContentsObserverProxy::OnWebContentsFocused(RenderWidgetHost*) {
   JNIEnv* env = AttachCurrentThread();
   Java_WebContentsObserverProxy_onWebContentsFocused(env, java_observer_);
diff --git a/content/browser/android/web_contents_observer_proxy.h b/content/browser/android/web_contents_observer_proxy.h
index 8498dcd..b49e059 100644
--- a/content/browser/android/web_contents_observer_proxy.h
+++ b/content/browser/android/web_contents_observer_proxy.h
@@ -75,6 +75,7 @@
                                      bool will_cause_resize) override;
   bool SetToBaseURLForDataURLIfNeeded(GURL* url);
   void ViewportFitChanged(blink::mojom::ViewportFit value) override;
+  void VirtualKeyboardModeChanged(ui::mojom::VirtualKeyboardMode mode) override;
   void OnWebContentsFocused(RenderWidgetHost*) override;
   void OnWebContentsLostFocus(RenderWidgetHost*) override;
 
diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc
index bbe2dfd..db565ee 100644
--- a/content/browser/devtools/protocol/page_handler.cc
+++ b/content/browser/devtools/protocol/page_handler.cc
@@ -1478,6 +1478,8 @@
       return Page::PrerenderFinalStatusEnum::ActivatedBeforeStarted;
     case PrerenderHost::FinalStatus::kInactivePageRestriction:
       return Page::PrerenderFinalStatusEnum::InactivePageRestriction;
+    case PrerenderHost::FinalStatus::kStartFailed:
+      return Page::PrerenderFinalStatusEnum::StartFailed;
   }
 }
 
diff --git a/content/browser/first_party_sets/first_party_set_parser_unittest.cc b/content/browser/first_party_sets/first_party_set_parser_unittest.cc
index 640c11e..260b739 100644
--- a/content/browser/first_party_sets/first_party_set_parser_unittest.cc
+++ b/content/browser/first_party_sets/first_party_set_parser_unittest.cc
@@ -40,11 +40,6 @@
 
 }  // namespace
 
-MATCHER_P(SerializesTo, want, "") {
-  const std::string got = arg.Serialize();
-  return testing::ExplainMatchResult(testing::Eq(want), got, result_listener);
-}
-
 FirstPartySetParser::SetsAndAliases ParseSets(const std::string& sets) {
   std::istringstream stream(sets);
   return FirstPartySetParser::ParseSetsFromStream(stream, false);
@@ -69,35 +64,35 @@
 }
 
 TEST(FirstPartySetParser, AcceptsMinimal_Associated) {
-  EXPECT_THAT(
-      ParseSets(R"({"primary": "https://example.test",)"
-                R"("associatedSites": ["https://aaaa.test"]})"),
-      Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://aaaa.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0))),
-           IsEmpty()));
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite aaaa(GURL("https://aaaa.test"));
+
+  EXPECT_THAT(ParseSets(R"({"primary": "https://example.test",)"
+                        R"("associatedSites": ["https://aaaa.test"]})"),
+              Pair(UnorderedElementsAre(
+                       Pair(example, net::FirstPartySetEntry(
+                                         example, net::SiteType::kPrimary,
+                                         absl::nullopt)),
+                       Pair(aaaa, net::FirstPartySetEntry(
+                                      example, net::SiteType::kAssociated, 0))),
+                   IsEmpty()));
 }
 
 TEST(FirstPartySetParser, AcceptsMinimal_Service) {
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite aaaa(GURL("https://aaaa.test"));
+
   EXPECT_THAT(
       ParseSets(R"({"primary": "https://example.test",)"
                 R"("serviceSites": ["https://aaaa.test"]})"),
-      Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://aaaa.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kService, absl::nullopt))),
-           IsEmpty()));
+      Pair(
+          UnorderedElementsAre(
+              Pair(example,
+                   net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                           absl::nullopt)),
+              Pair(aaaa, net::FirstPartySetEntry(
+                             example, net::SiteType::kService, absl::nullopt))),
+          IsEmpty()));
 }
 
 TEST(FirstPartySetParser, AcceptsMinimal_AllSubsets_WithCcTLDs) {
@@ -155,6 +150,11 @@
 }
 
 TEST(FirstPartySetParser, SkipsSetOnNonOriginPrimary) {
+  net::SchemefulSite example2(GURL("https://example2.test"));
+  net::SchemefulSite associated2(GURL("https://associatedsite2.test"));
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite aaaa(GURL("https://aaaa.test"));
+
   EXPECT_THAT(
       ParseSets(
           R"({"primary": "example", "associatedSites": ["https://aaaa.test"]})"
@@ -165,22 +165,16 @@
           R"({"primary": "https://example.test",)"
           R"("associatedSites": ["https://aaaa.test"]})"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example2.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example2.test")),
-                        net::SiteType::kAssociated, 0)),
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://aaaa.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0))),
+               Pair(example2,
+                    net::FirstPartySetEntry(example2, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated2, net::FirstPartySetEntry(
+                                     example2, net::SiteType::kAssociated, 0)),
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(aaaa, net::FirstPartySetEntry(
+                              example, net::SiteType::kAssociated, 0))),
            IsEmpty()));
 }
 
@@ -214,6 +208,11 @@
 }
 
 TEST(FirstPartySetParser, SkipsSetOnNonOriginAssociatedSite) {
+  net::SchemefulSite example2(GURL("https://example2.test"));
+  net::SchemefulSite associated2(GURL("https://associatedsite2.test"));
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite associated3(GURL("https://associatedsite3.test"));
+
   EXPECT_THAT(
       ParseSets(
           R"({"primary": "https://example.test", "associatedSites": ["aaaa"]})"
@@ -224,22 +223,16 @@
           R"({"primary": "https://example.test", "associatedSites": )"
           R"(["https://associatedsite3.test"]})"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example2.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example2.test")),
-                        net::SiteType::kAssociated, 0)),
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite3.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0))),
+               Pair(example2,
+                    net::FirstPartySetEntry(example2, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated2, net::FirstPartySetEntry(
+                                     example2, net::SiteType::kAssociated, 0)),
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated3, net::FirstPartySetEntry(
+                                     example, net::SiteType::kAssociated, 0))),
            IsEmpty()));
 }
 
@@ -250,64 +243,65 @@
 }
 
 TEST(FirstPartySetParser, TruncatesSubdomain_Primary) {
-  EXPECT_THAT(
-      ParseSets(R"({"primary": "https://subdomain.example.test", )"
-                R"("associatedSites": ["https://aaaa.test"]})"),
-      Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://aaaa.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0))),
-           IsEmpty()));
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite aaaa(GURL("https://aaaa.test"));
+
+  EXPECT_THAT(ParseSets(R"({"primary": "https://subdomain.example.test", )"
+                        R"("associatedSites": ["https://aaaa.test"]})"),
+              Pair(UnorderedElementsAre(
+                       Pair(example, net::FirstPartySetEntry(
+                                         example, net::SiteType::kPrimary,
+                                         absl::nullopt)),
+                       Pair(aaaa, net::FirstPartySetEntry(
+                                      example, net::SiteType::kAssociated, 0))),
+                   IsEmpty()));
 }
 
 TEST(FirstPartySetParser, TruncatesSubdomain_AssociatedSite) {
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite aaaa(GURL("https://aaaa.test"));
+
   EXPECT_THAT(
       ParseSets(R"({"primary": "https://example.test", )"
                 R"("associatedSites": ["https://subdomain.aaaa.test"]})"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://aaaa.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0))),
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(aaaa, net::FirstPartySetEntry(
+                              example, net::SiteType::kAssociated, 0))),
            IsEmpty()));
 }
 
 TEST(FirstPartySetParser, AcceptsMultipleSets) {
+  net::SchemefulSite foo(GURL("https://foo.test"));
+  net::SchemefulSite associated2(GURL("https://associatedsite2.test"));
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite associated1(GURL("https://associatedsite1.test"));
+
   EXPECT_THAT(
       ParseSets("{\"primary\": \"https://example.test\", \"associatedSites\": "
                 "[\"https://associatedsite1.test\"]}\n"
                 "{\"primary\": \"https://foo.test\", \"associatedSites\": "
                 "[\"https://associatedsite2.test\"]}"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite1.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0)),
-               Pair(SerializesTo("https://foo.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://foo.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://foo.test")),
-                        net::SiteType::kAssociated, 0))),
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated1, net::FirstPartySetEntry(
+                                     example, net::SiteType::kAssociated, 0)),
+               Pair(foo, net::FirstPartySetEntry(foo, net::SiteType::kPrimary,
+                                                 absl::nullopt)),
+               Pair(associated2, net::FirstPartySetEntry(
+                                     foo, net::SiteType::kAssociated, 0))),
            IsEmpty()));
 }
 
 TEST(FirstPartySetParser, AcceptsMultipleSetsWithWhitespace) {
+  net::SchemefulSite foo(GURL("https://foo.test"));
+  net::SchemefulSite associated1(GURL("https://associatedsite1.test"));
+  net::SchemefulSite associated2(GURL("https://associatedsite2.test"));
+  net::SchemefulSite example(GURL("https://example.test"));
   // Note the leading blank line, middle blank line, trailing blank line, and
   // leading whitespace on each line.
   EXPECT_THAT(
@@ -317,22 +311,15 @@
       {"primary": "https://foo.test", "associatedSites": ["https://associatedsite2.test"]}
     )"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite1.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0)),
-               Pair(SerializesTo("https://foo.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://foo.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://foo.test")),
-                        net::SiteType::kAssociated, 0))),
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated1, net::FirstPartySetEntry(
+                                     example, net::SiteType::kAssociated, 0)),
+               Pair(foo, net::FirstPartySetEntry(foo, net::SiteType::kPrimary,
+                                                 absl::nullopt)),
+               Pair(associated2, net::FirstPartySetEntry(
+                                     foo, net::SiteType::kAssociated, 0))),
            IsEmpty()));
 }
 
@@ -354,18 +341,17 @@
 }
 
 TEST(FirstPartySetParser, AllowsTrailingCommas) {
+  net::SchemefulSite example(GURL("https://example.test"));
+  net::SchemefulSite associated1(GURL("https://associatedsite1.test"));
   EXPECT_THAT(
       ParseSets(R"({"primary": "https://example.test", )"
                 R"("associatedSites": ["https://associatedsite1.test"],})"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite1.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0))),
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated1, net::FirstPartySetEntry(
+                                     example, net::SiteType::kAssociated, 0))),
            IsEmpty()));
 }
 
@@ -409,6 +395,14 @@
 }
 
 TEST(FirstPartySetParser, Accepts_ccTLDAliases) {
+  net::SchemefulSite foo(GURL("https://foo.test"));
+  net::SchemefulSite foo_cctld(GURL("https://foo.cctld"));
+  net::SchemefulSite associated1(GURL("https://associatedsite1.test"));
+  net::SchemefulSite associated1_cctld1(GURL("https://associatedsite1.cctld1"));
+  net::SchemefulSite associated1_cctld2(GURL("https://associatedsite1.cctld2"));
+  net::SchemefulSite associated2(GURL("https://associatedsite2.test"));
+  net::SchemefulSite example(GURL("https://example.test"));
+
   EXPECT_THAT(
       ParseSets(
           "{"                                                         //
@@ -432,29 +426,18 @@
           "}"                                     //
           "}"),
       Pair(UnorderedElementsAre(
-               Pair(SerializesTo("https://example.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite1.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://example.test")),
-                        net::SiteType::kAssociated, 0)),
-               Pair(SerializesTo("https://foo.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://foo.test")),
-                        net::SiteType::kPrimary, absl::nullopt)),
-               Pair(SerializesTo("https://associatedsite2.test"),
-                    net::FirstPartySetEntry(
-                        net::SchemefulSite(GURL("https://foo.test")),
-                        net::SiteType::kAssociated, 0))),
-           UnorderedElementsAre(
-               Pair(SerializesTo("https://associatedsite1.cctld1"),
-                    SerializesTo("https://associatedsite1.test")),
-               Pair(SerializesTo("https://associatedsite1.cctld2"),
-                    SerializesTo("https://associatedsite1.test")),
-               Pair(SerializesTo("https://foo.cctld"),
-                    SerializesTo("https://foo.test")))));
+               Pair(example,
+                    net::FirstPartySetEntry(example, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+               Pair(associated1, net::FirstPartySetEntry(
+                                     example, net::SiteType::kAssociated, 0)),
+               Pair(foo, net::FirstPartySetEntry(foo, net::SiteType::kPrimary,
+                                                 absl::nullopt)),
+               Pair(associated2, net::FirstPartySetEntry(
+                                     foo, net::SiteType::kAssociated, 0))),
+           UnorderedElementsAre(Pair(associated1_cctld1, associated1),
+                                Pair(associated1_cctld2, associated1),
+                                Pair(foo_cctld, foo))));
 }
 
 TEST(FirstPartySetParser, Rejects_NonSchemefulSiteCcTLDAliases) {
diff --git a/content/browser/preloading/prerender/prerender_browsertest.cc b/content/browser/preloading/prerender/prerender_browsertest.cc
index ff71c63..ff7b87e7 100644
--- a/content/browser/preloading/prerender/prerender_browsertest.cc
+++ b/content/browser/preloading/prerender/prerender_browsertest.cc
@@ -3967,17 +3967,9 @@
 
 // Test to make sure that the completion of iframe navigation in a prerendering
 // page doesn't start another pending prerender request.
-// TODO(crbug.com/1365781): Failing on linux-chromeos-rel.
-#if BUILDFLAG(IS_CHROMEOS) && defined(NDEBUG)
-#define MAYBE_IframeNavigationFinishDontDisruptPrerenderNavigationFinish \
-  DISABLED_IframeNavigationFinishDontDisruptPrerenderNavigationFinish
-#else
-#define MAYBE_IframeNavigationFinishDontDisruptPrerenderNavigationFinish \
-  IframeNavigationFinishDontDisruptPrerenderNavigationFinish
-#endif
 IN_PROC_BROWSER_TEST_F(
     PrerenderSequentialPrerenderingBrowserTest,
-    MAYBE_IframeNavigationFinishDontDisruptPrerenderNavigationFinish) {
+    IframeNavigationFinishDontDisruptPrerenderNavigationFinish) {
   net::test_server::ControllableHttpResponse response2(
       embedded_test_server(), "/empty.html?prerender2");
   ASSERT_TRUE(embedded_test_server()->Start());
@@ -4011,6 +4003,7 @@
   // Stop the second prerendering initial navigation.
   response2.WaitForRequest();
 
+  WaitForPrerenderLoadCompletion(kPrerender1);
   int host_id = GetHostForUrl(kPrerender1);
   ASSERT_NE(host_id, RenderFrameHost::kNoFrameTreeNodeId);
 
diff --git a/content/browser/preloading/prerender/prerender_host.cc b/content/browser/preloading/prerender/prerender_host.cc
index 89a14181..90ba7ea 100644
--- a/content/browser/preloading/prerender/prerender_host.cc
+++ b/content/browser/preloading/prerender/prerender_host.cc
@@ -751,6 +751,7 @@
     case FinalStatus::kHasEffectiveUrl:
     case FinalStatus::kActivatedBeforeStarted:
     case FinalStatus::kInactivePageRestriction:
+    case FinalStatus::kStartFailed:
       attempt_->SetFailureReason(ToPreloadingFailureReason(status));
       // We reset the attempt to ensure we don't update once we have reported it
       // as failure or accidentally use it for any other prerender attempts as
diff --git a/content/browser/preloading/prerender/prerender_host.h b/content/browser/preloading/prerender/prerender_host.h
index 40e67ba..f80db6eb 100644
--- a/content/browser/preloading/prerender/prerender_host.h
+++ b/content/browser/preloading/prerender/prerender_host.h
@@ -106,7 +106,8 @@
     kHasEffectiveUrl = 39,
     kActivatedBeforeStarted = 40,
     kInactivePageRestriction = 41,
-    kMaxValue = kInactivePageRestriction,
+    kStartFailed = 42,
+    kMaxValue = kStartFailed,
   };
 
   // These values are persisted to logs. Entries should not be renumbered and
diff --git a/content/browser/preloading/prerender/prerender_host_registry.cc b/content/browser/preloading/prerender/prerender_host_registry.cc
index 2ca1f37..bf18c88 100644
--- a/content/browser/preloading/prerender/prerender_host_registry.cc
+++ b/content/browser/preloading/prerender/prerender_host_registry.cc
@@ -296,9 +296,7 @@
   DCHECK(prerender_host_by_frame_tree_node_id_.contains(frame_tree_node_id));
   if (!prerender_host_by_frame_tree_node_id_[frame_tree_node_id]
            ->StartPrerendering()) {
-    // TODO(nhiroki): Pass a more suitable cancellation reason like
-    // kStartFailed.
-    CancelHost(frame_tree_node_id, PrerenderHost::FinalStatus::kDestroyed);
+    CancelHost(frame_tree_node_id, PrerenderHost::FinalStatus::kStartFailed);
     return RenderFrameHost::kNoFrameTreeNodeId;
   }
 
diff --git a/content/browser/preloading/prerender/prerender_internals_handler_impl.cc b/content/browser/preloading/prerender/prerender_internals_handler_impl.cc
index 4bfe51f..17a8354 100644
--- a/content/browser/preloading/prerender/prerender_internals_handler_impl.cc
+++ b/content/browser/preloading/prerender/prerender_internals_handler_impl.cc
@@ -86,6 +86,8 @@
       return "ActivatedBeforeStarted";
     case PrerenderHost::FinalStatus::kInactivePageRestriction:
       return "InactivePageRestriction";
+    case PrerenderHost::FinalStatus::kStartFailed:
+      return "StartFailed";
   }
   NOTREACHED();
   return "";
diff --git a/content/browser/renderer_host/page_delegate.h b/content/browser/renderer_host/page_delegate.h
index 0e6df8c..da50f72e9 100644
--- a/content/browser/renderer_host/page_delegate.h
+++ b/content/browser/renderer_host/page_delegate.h
@@ -26,6 +26,9 @@
 
   // Called when the main document color scheme was inferred.
   virtual void DidInferColorScheme(PageImpl& page) {}
+
+  // Called when the main document's virtual keyboard mode changes.
+  virtual void OnVirtualKeyboardModeChanged(PageImpl& page) {}
 };
 
 }  // namespace content
diff --git a/content/browser/renderer_host/page_impl.cc b/content/browser/renderer_host/page_impl.cc
index 9b373d1..03a69ef2 100644
--- a/content/browser/renderer_host/page_impl.cc
+++ b/content/browser/renderer_host/page_impl.cc
@@ -270,11 +270,21 @@
     const gfx::Rect& keyboard_rect) {
   // TODO(https://crbug.com/1317002): send notification to outer frames if
   // needed.
-  DCHECK(virtual_keyboard_overlays_content());
+  DCHECK_EQ(virtual_keyboard_mode(),
+            ui::mojom::VirtualKeyboardMode::kOverlaysContent);
   GetMainDocument().GetAssociatedLocalFrame()->NotifyVirtualKeyboardOverlayRect(
       keyboard_rect);
 }
 
+void PageImpl::SetVirtualKeyboardMode(ui::mojom::VirtualKeyboardMode mode) {
+  if (virtual_keyboard_mode_ == mode)
+    return;
+
+  virtual_keyboard_mode_ = mode;
+
+  delegate_.OnVirtualKeyboardModeChanged(*this);
+}
+
 base::flat_map<std::string, std::string> PageImpl::GetKeyboardLayoutMap() {
   return GetMainDocument().GetRenderWidgetHost()->GetKeyboardLayoutMap();
 }
diff --git a/content/browser/renderer_host/page_impl.h b/content/browser/renderer_host/page_impl.h
index 837f80d..1c18514 100644
--- a/content/browser/renderer_host/page_impl.h
+++ b/content/browser/renderer_host/page_impl.h
@@ -22,6 +22,7 @@
 #include "third_party/blink/public/mojom/favicon/favicon_url.mojom.h"
 #include "third_party/blink/public/mojom/frame/text_autosizer_page_info.mojom.h"
 #include "third_party/skia/include/core/SkColor.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom.h"
 #include "url/gurl.h"
 
 namespace content {
@@ -160,11 +161,9 @@
 
   void NotifyVirtualKeyboardOverlayRect(const gfx::Rect& keyboard_rect);
 
-  void set_virtual_keyboard_overlays_content(bool vk_overlays_content) {
-    virtual_keyboard_overlays_content_ = vk_overlays_content;
-  }
-  bool virtual_keyboard_overlays_content() const {
-    return virtual_keyboard_overlays_content_;
+  void SetVirtualKeyboardMode(ui::mojom::VirtualKeyboardMode mode);
+  ui::mojom::VirtualKeyboardMode virtual_keyboard_mode() const {
+    return virtual_keyboard_mode_;
   }
 
   const std::string& GetEncoding() { return canonical_encoding_; }
@@ -261,11 +260,9 @@
   // RenderFrameHostManager::CommitPending and remove this.
   absl::optional<base::TimeTicks> activation_start_time_for_prerendering_;
 
-  // If true, then the Virtual keyboard rectangle that occludes the content is
-  // sent to the VirtualKeyboard API where it fires overlaygeometrychange JS
-  // event notifying the web authors that Virtual keyboard has occluded the
-  // content.
-  bool virtual_keyboard_overlays_content_ = false;
+  // The resizing mode requested by Blink for the virtual keyboard.
+  ui::mojom::VirtualKeyboardMode virtual_keyboard_mode_ =
+      ui::mojom::VirtualKeyboardMode::kUnset;
 
   // The last reported character encoding, not canonicalized.
   std::string last_reported_encoding_;
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index d35b13f..9ed4336 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -6028,8 +6028,8 @@
   }
 }
 
-void RenderFrameHostImpl::SetVirtualKeyboardOverlayPolicy(
-    bool vk_overlays_content) {
+void RenderFrameHostImpl::SetVirtualKeyboardMode(
+    ui::mojom::VirtualKeyboardMode mode) {
   // TODO(crbug.com/1225366): Consider moving this to PageImpl.
   if (GetOutermostMainFrame() != this) {
     bad_message::ReceivedBadMessage(
@@ -6037,7 +6037,7 @@
         bad_message::RFHI_SET_OVERLAYS_CONTENT_NOT_OUTERMOST_FRAME);
     return;
   }
-  GetPage().set_virtual_keyboard_overlays_content(vk_overlays_content);
+  GetPage().SetVirtualKeyboardMode(mode);
 }
 
 #if BUILDFLAG(IS_ANDROID)
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h
index 77b0c575..e97d08d2 100644
--- a/content/browser/renderer_host/render_frame_host_impl.h
+++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -2049,7 +2049,7 @@
   void DidContainInsecureFormAction() override;
   void MainDocumentElementAvailable(bool uses_temporary_zoom_level) override;
   void SetNeedsOcclusionTracking(bool needs_tracking) override;
-  void SetVirtualKeyboardOverlayPolicy(bool vk_overlays_content) override;
+  void SetVirtualKeyboardMode(ui::mojom::VirtualKeyboardMode mode) override;
   void VisibilityChanged(blink::mojom::FrameVisibility) override;
   void DidChangeThemeColor(absl::optional<SkColor> theme_color) override;
   void DidChangeBackgroundColor(SkColor background_color,
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 8f45b1c6..7d89536 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -339,8 +339,10 @@
 void RenderWidgetHostViewAndroid::NotifyVirtualKeyboardOverlayRect(
     const gfx::Rect& keyboard_rect) {
   RenderFrameHostImpl* frame_host = host()->frame_tree()->GetMainFrame();
-  if (!frame_host || !frame_host->GetPage().virtual_keyboard_overlays_content())
+  if (GetVirtualKeyboardMode() !=
+      ui::mojom::VirtualKeyboardMode::kOverlaysContent) {
     return;
+  }
   gfx::Rect keyboard_rect_with_scale;
   if (!keyboard_rect.IsEmpty()) {
     // This is necessary because the receiver of this rect in the renderer
@@ -359,10 +361,13 @@
       keyboard_rect_with_scale);
 }
 
-bool RenderWidgetHostViewAndroid::ShouldVirtualKeyboardOverlayContent() {
+ui::mojom::VirtualKeyboardMode
+RenderWidgetHostViewAndroid::GetVirtualKeyboardMode() {
   RenderFrameHostImpl* frame_host = host()->frame_tree()->GetMainFrame();
-  return frame_host &&
-         frame_host->GetPage().virtual_keyboard_overlays_content();
+  if (!frame_host)
+    return ui::mojom::VirtualKeyboardMode::kUnset;
+
+  return frame_host->GetPage().virtual_keyboard_mode();
 }
 
 bool RenderWidgetHostViewAndroid::SynchronizeVisualProperties(
diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h
index 07c18da..f55edfe 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.h
+++ b/content/browser/renderer_host/render_widget_host_view_android.h
@@ -208,7 +208,7 @@
       override;
   void TransferTouches(
       const std::vector<std::unique_ptr<ui::TouchEvent>>& touches) override;
-  bool ShouldVirtualKeyboardOverlayContent() override;
+  ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() override;
 
   // ui::EventHandlerAndroid implementation.
   bool OnTouchEvent(const ui::MotionEventAndroid& m) override;
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 8fe62e79..ecbd745 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -2346,13 +2346,14 @@
   }
 }
 
-bool RenderWidgetHostViewAura::ShouldVirtualKeyboardOverlayContent() {
+ui::mojom::VirtualKeyboardMode
+RenderWidgetHostViewAura::GetVirtualKeyboardMode() {
   // overlaycontent flag can only be set from main frame.
   RenderFrameHostImpl* frame = host()->frame_tree()->GetMainFrame();
   if (!frame)
-    return false;
+    return ui::mojom::VirtualKeyboardMode::kUnset;
 
-  return frame->GetPage().virtual_keyboard_overlays_content();
+  return frame->GetPage().virtual_keyboard_mode();
 }
 
 void RenderWidgetHostViewAura::NotifyVirtualKeyboardOverlayRect(
@@ -2360,8 +2361,13 @@
   // geometrychange event can only be fired on main frame and not focused frame
   // which could be an iframe.
   RenderFrameHostImpl* frame = host()->frame_tree()->GetMainFrame();
-  if (!frame || !frame->GetPage().virtual_keyboard_overlays_content())
+  if (!frame)
     return;
+
+  if (GetVirtualKeyboardMode() !=
+      ui::mojom::VirtualKeyboardMode::kOverlaysContent) {
+    return;
+  }
   gfx::Rect keyboard_root_relative_rect = keyboard_rect;
   if (!keyboard_root_relative_rect.IsEmpty()) {
     // If the rect is non-empty, we need to transform it to be widget-relative
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index a60a86b2..9688a16 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -124,7 +124,7 @@
   void SetInsets(const gfx::Insets& insets) override;
   TouchSelectionControllerClientManager*
   GetTouchSelectionControllerClientManager() override;
-  bool ShouldVirtualKeyboardOverlayContent() override;
+  ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() override;
   void NotifyVirtualKeyboardOverlayRect(
       const gfx::Rect& keyboard_rect) override;
   bool IsHTMLFormPopup() const override;
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
index eecf439..438e8baa 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -1038,8 +1038,10 @@
              : &visible_time_request_trigger_;
 }
 
-bool RenderWidgetHostViewBase::ShouldVirtualKeyboardOverlayContent() {
-  return false;
+ui::mojom::VirtualKeyboardMode
+RenderWidgetHostViewBase::GetVirtualKeyboardMode() {
+  // Only platforms supporting these APIs will implement this.
+  return ui::mojom::VirtualKeyboardMode::kUnset;
 }
 
 bool RenderWidgetHostViewBase::IsHTMLFormPopup() const {
diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h
index 129bb65..467eaa3 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.h
+++ b/content/browser/renderer_host/render_widget_host_view_base.h
@@ -142,7 +142,7 @@
   float GetDeviceScaleFactor() const final;
   TouchSelectionControllerClientManager*
   GetTouchSelectionControllerClientManager() override;
-  bool ShouldVirtualKeyboardOverlayContent() override;
+  ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() override;
   void NotifyVirtualKeyboardOverlayRect(
       const gfx::Rect& keyboard_rect) override {}
   bool IsHTMLFormPopup() const override;
diff --git a/content/browser/renderer_host/virtual_keyboard_controller_win.cc b/content/browser/renderer_host/virtual_keyboard_controller_win.cc
index 92fa4df1..88c45e11 100644
--- a/content/browser/renderer_host/virtual_keyboard_controller_win.cc
+++ b/content/browser/renderer_host/virtual_keyboard_controller_win.cc
@@ -46,7 +46,8 @@
   // If the software input panel (SIP) is manually raised by the user, the flag
   // should be set so we don't call TryShow API again.
   virtual_keyboard_shown_ = true;
-  if (!host_view_->ShouldVirtualKeyboardOverlayContent()) {
+  if (host_view_->GetVirtualKeyboardMode() !=
+      ui::mojom::VirtualKeyboardMode::kOverlaysContent) {
     host_view_->SetInsets(gfx::Insets::TLBR(
         0, 0, keyboard_rect.IsEmpty() ? 0 : keyboard_rect.height(), 0));
   } else {
@@ -63,7 +64,8 @@
   // called or not. Calling TryShow/TryHide multiple times leads to SIP
   // flickering.
   virtual_keyboard_shown_ = false;
-  if (!host_view_->ShouldVirtualKeyboardOverlayContent()) {
+  if (host_view_->GetVirtualKeyboardMode() !=
+      ui::mojom::VirtualKeyboardMode::kOverlaysContent) {
     // Restore the viewport.
     host_view_->SetInsets(gfx::Insets());
   } else {
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc
index 9ce9952..cfcbbf09 100644
--- a/content/browser/web_contents/web_contents_android.cc
+++ b/content/browser/web_contents/web_contents_android.cc
@@ -337,6 +337,10 @@
   return url::GURLAndroid::FromNativeGURL(env, web_contents_->GetVisibleURL());
 }
 
+jint WebContentsAndroid::GetVirtualKeyboardMode(JNIEnv* env) const {
+  return static_cast<jint>(web_contents_->GetVirtualKeyboardMode());
+}
+
 bool WebContentsAndroid::IsLoading(JNIEnv* env) const {
   return web_contents_->IsLoading();
 }
@@ -483,7 +487,8 @@
   if (!input_handler)
     return;
   bool should_overlay_content =
-      web_contents_->GetPrimaryPage().virtual_keyboard_overlays_content();
+      web_contents_->GetPrimaryPage().virtual_keyboard_mode() ==
+      ui::mojom::VirtualKeyboardMode::kOverlaysContent;
   // TODO(bokan): Autofill is notified of focus changes at the end of the
   // scrollIntoView call using DidCompleteFocusChangeInFrame, see
   // https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/web_local_frame_impl.cc;l=3047;drc=aeadb03c8553c39e88d5d11d10f706d42f06a1d7.
diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h
index 8a262664..98ae90a 100644
--- a/content/browser/web_contents/web_contents_android.h
+++ b/content/browser/web_contents/web_contents_android.h
@@ -67,6 +67,7 @@
       JNIEnv* env) const;
   base::android::ScopedJavaLocalRef<jstring> GetTitle(JNIEnv* env) const;
   base::android::ScopedJavaLocalRef<jobject> GetVisibleURL(JNIEnv* env) const;
+  jint GetVirtualKeyboardMode(JNIEnv* env) const;
 
   bool IsLoading(JNIEnv* env) const;
   bool ShouldShowLoadingUI(JNIEnv* env) const;
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 536bbd4c..eddf398 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -5993,6 +5993,14 @@
   }
 }
 
+void WebContentsImpl::OnVirtualKeyboardModeChanged(PageImpl& page) {
+  if (!page.IsPrimary())
+    return;
+
+  observers_.NotifyObservers(&WebContentsObserver::VirtualKeyboardModeChanged,
+                             page.virtual_keyboard_mode());
+}
+
 void WebContentsImpl::DidLoadResourceFromMemoryCache(
     RenderFrameHostImpl* source,
     const GURL& url,
@@ -9539,6 +9547,13 @@
       frame_tree_node->frame_tree_node_id(), final_status);
 }
 
+ui::mojom::VirtualKeyboardMode WebContentsImpl::GetVirtualKeyboardMode() const {
+  return primary_frame_tree_.root()
+      ->current_frame_host()
+      ->GetPage()
+      .virtual_keyboard_mode();
+}
+
 // static
 std::pair<int, int> WebContentsImpl::GetAvailablePointerAndHoverTypes() {
   // On Windows we have to temporarily allow blocking calls since
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 63e226df..bc64d1d 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -76,6 +76,7 @@
 #include "ui/accessibility/ax_mode.h"
 #include "ui/accessibility/platform/inspect/ax_event_recorder.h"
 #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom.h"
 #include "ui/color/color_provider_source_observer.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/native_theme/native_theme.h"
@@ -1017,6 +1018,7 @@
   void OnThemeColorChanged(PageImpl& page) override;
   void OnBackgroundColorChanged(PageImpl& page) override;
   void DidInferColorScheme(PageImpl& page) override;
+  void OnVirtualKeyboardModeChanged(PageImpl& page) override;
 
   // blink::mojom::ColorChooserFactory ---------------------------------------
   void OnColorChooserFactoryReceiver(
@@ -1350,6 +1352,8 @@
     return last_navigation_was_prerender_activation_for_devtools_;
   }
 
+  ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() const;
+
  private:
   using FrameTreeIterationCallback = base::RepeatingCallback<void(FrameTree*)>;
   using RenderViewHostIterationCallback =
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapterImpl.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapterImpl.java
index 8f22184..e4ca1015 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapterImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapterImpl.java
@@ -151,9 +151,6 @@
     // True if ImeAdapter is connected to render process.
     private boolean mIsConnected;
 
-    // Returns true if the overlaycontent flag is set in the JS, else false.
-    private boolean mKeyboardOverlayContent;
-
     // Whether to force show keyboard during stylus handwriting. We do not show it when writing
     // system is active and stylus is used to edit input text. This is used to show the soft
     // keyboard from Direct writing toolbar.
@@ -281,19 +278,6 @@
         mEventObservers.add(eventObserver);
     }
 
-    /**
-     * Returns true if the overlaycontent flag is set in the JS, else false.
-     * This determines whether to fire geometrychange event to JS and also not
-     * resize the visual/layout viewports in response to keyboard visibility
-     * changes.
-     *
-     * @return Whether overlaycontent flag is set or not.
-     */
-    @Override
-    public boolean shouldVirtualKeyboardOverlayContent() {
-        return mKeyboardOverlayContent;
-    }
-
     private void createInputConnectionFactory() {
         if (mInputConnectionFactory != null) return;
         mInputConnectionFactory = new ThreadedInputConnectionFactory(mInputMethodManagerWrapper);
@@ -471,8 +455,7 @@
     private void updateState(int textInputType, int textInputFlags, int textInputMode,
             int textInputAction, boolean showIfNeeded, boolean alwaysHide, String text,
             int selectionStart, int selectionEnd, int compositionStart, int compositionEnd,
-            boolean replyToRequest, int lastVkVisibilityRequest, int vkPolicy,
-            boolean keyboardOverlayContent) {
+            boolean replyToRequest, int lastVkVisibilityRequest, int vkPolicy) {
         TraceEvent.begin("ImeAdapter.updateState");
         try {
             if (DEBUG_LOGS) {
@@ -488,7 +471,6 @@
                 mRestartInputOnNextStateUpdate = false;
             }
 
-            mKeyboardOverlayContent = keyboardOverlayContent;
             mTextInputFlags = textInputFlags;
             if (mTextInputMode != textInputMode) {
                 mTextInputMode = textInputMode;
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
index 56db0ae..15d27cd 100644
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
@@ -61,6 +61,7 @@
 import org.chromium.ui.base.EventForwarder;
 import org.chromium.ui.base.ViewAndroidDelegate;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 import java.util.ArrayList;
@@ -478,6 +479,13 @@
     }
 
     @Override
+    @VirtualKeyboardMode.EnumType
+    public int getVirtualKeyboardMode() {
+        checkNotDestroyed();
+        return WebContentsImplJni.get().getVirtualKeyboardMode(mNativeWebContentsAndroid);
+    }
+
+    @Override
     public String getEncoding() {
         checkNotDestroyed();
         return WebContentsImplJni.get().getEncoding(mNativeWebContentsAndroid);
@@ -1093,6 +1101,7 @@
         int getVisibility(long nativeWebContentsAndroid);
         String getTitle(long nativeWebContentsAndroid);
         GURL getVisibleURL(long nativeWebContentsAndroid);
+        int getVirtualKeyboardMode(long nativeWebContentsAndroid);
         String getEncoding(long nativeWebContentsAndroid);
         boolean isLoading(long nativeWebContentsAndroid);
         boolean shouldShowLoadingUI(long nativeWebContentsAndroid);
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java
index 353c6222..bfb1d92 100644
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java
@@ -16,6 +16,7 @@
 import org.chromium.content_public.browser.NavigationHandle;
 import org.chromium.content_public.browser.WebContentsObserver;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 /**
@@ -437,6 +438,16 @@
 
     @Override
     @CalledByNative
+    public void virtualKeyboardModeChanged(@VirtualKeyboardMode.EnumType int mode) {
+        handleObserverCall();
+        for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
+            mObserversIterator.next().virtualKeyboardModeChanged(mode);
+        }
+        finishObserverCall();
+    }
+
+    @Override
+    @CalledByNative
     public void onWebContentsFocused() {
         handleObserverCall();
         for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/ImeAdapter.java b/content/public/android/java/src/org/chromium/content_public/browser/ImeAdapter.java
index 6382639..cfcaa76 100644
--- a/content/public/android/java/src/org/chromium/content_public/browser/ImeAdapter.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/ImeAdapter.java
@@ -103,14 +103,4 @@
      */
     @VisibleForTesting
     void onShowKeyboardReceiveResult(int resultCode);
-
-    /**
-     * Returns true if the overlaycontent flag is set in the JS, else false.
-     * This determines whether to fire geometrychange event to JS and also not
-     * resize the visual/layout viewports in response to keyboard visibility
-     * changes.
-     *
-     * @return Whether overlaycontent flag is set or not.
-     */
-    boolean shouldVirtualKeyboardOverlayContent();
 }
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
index 9b17cc5..6e64784 100644
--- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
@@ -17,6 +17,7 @@
 import org.chromium.ui.base.EventForwarder;
 import org.chromium.ui.base.ViewAndroidDelegate;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 import java.util.List;
@@ -203,6 +204,12 @@
     GURL getVisibleUrl();
 
     /**
+     * @return The virtual keyboard mode of the WebContents' current primary page.
+     */
+    @VirtualKeyboardMode.EnumType
+    int getVirtualKeyboardMode();
+
+    /**
      * @return The character encoding for the current visible page.
      */
     String getEncoding();
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContentsObserver.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContentsObserver.java
index 15a711a..b7f2829 100644
--- a/content/public/android/java/src/org/chromium/content_public/browser/WebContentsObserver.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContentsObserver.java
@@ -9,6 +9,7 @@
 
 import org.chromium.blink.mojom.ViewportFit;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 import java.lang.annotation.Retention;
@@ -243,6 +244,12 @@
     public void viewportFitChanged(@ViewportFitType int value) {}
 
     /**
+     * Called when the virtual keyboard mode of the Web Contents changes.
+     * @param mode the new virtual keyboard mode.
+     */
+    public void virtualKeyboardModeChanged(@VirtualKeyboardMode.EnumType int mode) {}
+
+    /**
      * This method is invoked when a RenderWidgetHost for a WebContents gains focus.
      */
     public void onWebContentsFocused() {}
diff --git a/content/public/browser/render_widget_host_view.h b/content/public/browser/render_widget_host_view.h
index 2e0bffa..5342397 100644
--- a/content/public/browser/render_widget_host_view.h
+++ b/content/public/browser/render_widget_host_view.h
@@ -16,6 +16,7 @@
 #include "third_party/blink/public/mojom/input/pointer_lock_result.mojom.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkColor.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-forward.h"
 #include "ui/display/screen_infos.h"
 #include "ui/gfx/geometry/point_conversions.h"
 #include "ui/gfx/native_widget_types.h"
@@ -293,14 +294,11 @@
   // have anything to show.
   virtual void TakeFallbackContentFrom(RenderWidgetHostView* view) = 0;
 
-  // Returns true if the overlaycontent flag is set in the JS, else false.
-  // This determines whether to fire geometrychange event to JS and also not
-  // resize the visual/layout viewports in response to keyboard visibility
-  // changes.
-  virtual bool ShouldVirtualKeyboardOverlayContent() = 0;
+  // Returns the virtual keyboard mode requested via author APIs.
+  virtual ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() = 0;
 
-  // Create a geometrychange event and forward it to the JS with the
-  // keyboard coordinates.
+  // Create a geometrychange event and forward it to the JS with the keyboard
+  // coordinates. No-op unless VirtualKeyboardMode is kOverlaysContent.
   virtual void NotifyVirtualKeyboardOverlayRect(
       const gfx::Rect& keyboard_rect) = 0;
 
diff --git a/content/public/browser/web_contents_observer.h b/content/public/browser/web_contents_observer.h
index 01f8b94..b6e02116 100644
--- a/content/public/browser/web_contents_observer.h
+++ b/content/public/browser/web_contents_observer.h
@@ -45,6 +45,10 @@
 class Size;
 }  // namespace gfx
 
+namespace ui::mojom {
+enum class VirtualKeyboardMode;
+}  // namespace ui::mojom
+
 namespace content {
 
 class NavigationEntry;
@@ -581,6 +585,13 @@
   // This method is called when the viewport fit of a WebContents changes.
   virtual void ViewportFitChanged(blink::mojom::ViewportFit value) {}
 
+  // This method is called when the virtual keyboard mode of a WebContents
+  // changes. This can happen as a result of the
+  // `navigator.virtualKeyboard.overlaysContent` API or the virtual-keyboard key
+  // in the viewport meta tag.
+  virtual void VirtualKeyboardModeChanged(ui::mojom::VirtualKeyboardMode mode) {
+  }
+
   // Notification that a plugin has crashed.
   // |plugin_pid| is the process ID identifying the plugin process. Note that
   // this ID is supplied by the renderer process, so should not be trusted.
diff --git a/content/public/test/DEPS b/content/public/test/DEPS
index 4d049c846..90048709 100644
--- a/content/public/test/DEPS
+++ b/content/public/test/DEPS
@@ -16,6 +16,7 @@
   # available to code in content/public.
   "+content/common/content_export.h",
 
+  "+components/breadcrumbs/core",
   "+components/discardable_memory/service",
   "+components/download/public/common",
   "+components/enterprise/common/download_item_reroute_info.h",
diff --git a/content/public/test/android/BUILD.gn b/content/public/test/android/BUILD.gn
index e44484b..6df8564 100644
--- a/content/public/test/android/BUILD.gn
+++ b/content/public/test/android/BUILD.gn
@@ -34,6 +34,7 @@
     "//third_party/junit:junit",
     "//ui/android:ui_java",
     "//ui/android:ui_java_test_support",
+    "//ui/base/ime/mojom:mojom_java",
     "//url:gurl_java",
     "//url:origin_java",
   ]
diff --git a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java
index 62768137..32271b2a 100644
--- a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java
+++ b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java
@@ -29,6 +29,7 @@
 import org.chromium.ui.base.EventForwarder;
 import org.chromium.ui.base.ViewAndroidDelegate;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.mojom.VirtualKeyboardMode;
 import org.chromium.url.GURL;
 
 import java.util.Collections;
@@ -129,6 +130,12 @@
     }
 
     @Override
+    @VirtualKeyboardMode.EnumType
+    public int getVirtualKeyboardMode() {
+        return VirtualKeyboardMode.UNSET;
+    }
+
+    @Override
     public String getEncoding() {
         return null;
     }
diff --git a/content/public/test/unittest_test_suite.cc b/content/public/test/unittest_test_suite.cc
index 448be8f..08b9577 100644
--- a/content/public/test/unittest_test_suite.cc
+++ b/content/public/test/unittest_test_suite.cc
@@ -13,6 +13,7 @@
 #include "base/rand_util.h"
 #include "base/test/test_suite.h"
 #include "build/build_config.h"
+#include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "content/app/mojo/mojo_init.h"
 #include "content/browser/network_service_instance_impl.h"
 #include "content/browser/notification_service_impl.h"
@@ -94,6 +95,8 @@
     // InterfacePtr pointing to it to avoid it getting the connection error
     // later and have other tests use the InterfacePtr that is invalid.
     ResetNetworkServiceForTesting();
+
+    breadcrumbs::BreadcrumbManager::GetInstance().ResetForTesting();
   }
 
  private:
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index f372b2d5..1fad6fa8 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -731,14 +731,14 @@
       base::CommandLine::ForCurrentProcess();
   // Since this is a test-only code path, some arguments to SetUpFieldTrials are
   // null.
-  // TODO(crbug/1248066): Consider passing a low entropy provider and source.
+  // TODO(crbug/1248066): Consider passing a low entropy source.
   field_trial_creator.SetUpFieldTrials(
       variation_ids,
       command_line->GetSwitchValueASCII(
           variations::switches::kForceVariationIds),
       content::GetSwitchDependentFeatureOverrides(*command_line),
-      /*low_entropy_provider=*/nullptr, std::move(feature_list),
-      metrics_state_manager.get(), field_trials_.get(), &safe_seed_manager,
+      std::move(feature_list), metrics_state_manager.get(), field_trials_.get(),
+      &safe_seed_manager,
       /*low_entropy_source_value=*/absl::nullopt);
 }
 
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 070be02..2adeb10d 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -508,6 +508,7 @@
     "//base/third_party/dynamic_annotations",
     "//build:chromeos_buildflags",
     "//cc:test_support",
+    "//components/breadcrumbs/core",
     "//components/browsing_topics/common:common",
     "//components/network_session_configurator/common:common",
     "//components/services/storage",
diff --git a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-auralinux.txt b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-auralinux.txt
index fcec736..f1d340c4 100644
--- a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-auralinux.txt
@@ -15,8 +15,6 @@
 ++++++++[section]
 ++++++++++[push button] name='play'
 ++++++++++++[section]
-++++++++++[section] name='elapsed time: 0:00'
-++++++++++++[static] name='0:00'
 ++++++++++[section]
 ++++++++++++[section]
 ++++++++++++[push button] name='mute'
@@ -24,5 +22,5 @@
 ++++++++++++[section]
 ++++++++++[push button] name='show more media controls' description='more options' description-from:tooltip
 ++++++++++++[section]
-++++++++[slider] name='video time scrubber 0:00 / 0:00' horizontal current=0.000000 minimum=0.000000 maximum=100.000000
+++++++++[slider] name='video time scrubber' description='total time: 0:00' horizontal description:total time: 0:00 description-from:aria-description current=0.000000 minimum=0.000000 maximum=100.000000
 ++[progress bar] multi-line current=0.000000 minimum=0.000000 maximum=1.000000
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-blink.txt
index 5284560..6815a34 100644
--- a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-blink.txt
@@ -29,11 +29,10 @@
 ++++++++++++++genericContainer
 ++++++++++++++++button inputType='button' restriction=disabled
 ++++++++++++++++++genericContainer
-++++++++++++++++genericContainer
-++++++++++++++++++staticText
-++++++++++++++++++++inlineTextBox
 ++++++++++++++++genericContainer ignored invisible
-++++++++++++++++++staticText ignored
+++++++++++++++++++staticText ignored invisible
+++++++++++++++++genericContainer ignored invisible
+++++++++++++++++++staticText ignored invisible
 ++++++++++++++++genericContainer ignored
 ++++++++++++++++genericContainer
 ++++++++++++++++++genericContainer
@@ -43,7 +42,7 @@
 ++++++++++++++++++genericContainer
 ++++++++++++++++popUpButton description='more options' inputType='button' descriptionFrom=title restriction=disabled
 ++++++++++++++++++genericContainer
-++++++++++++++slider horizontal inputType='range' restriction=disabled valueForRange=0.00 minValueForRange=0.00 maxValueForRange=100.00
+++++++++++++++slider horizontal description='total time: 0:00' inputType='range' descriptionFrom=ariaDescription restriction=disabled valueForRange=0.00 minValueForRange=0.00 maxValueForRange=100.00
 ++++++++++menu ignored invisible
 ++++++++++menu ignored invisible
 ++++++++++menu ignored invisible
diff --git a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-mac.txt b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-mac.txt
index 27f4db4b..66414731 100644
--- a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-mac.txt
+++ b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-mac.txt
@@ -7,15 +7,13 @@
 ++AXTextArea
 ++AXTextArea AXDescription='To get missing image descriptions, open the context menu.'
 ++AXStaticText AXValue=' '
-++AXTextArea AXDescription='Unable to play media.' AXValue='<newline><newline>0:00<newline><newline><newline><newline><newline>'
+++AXTextArea AXDescription='Unable to play media.'
 ++++AXGroup
 ++++++AXGroup
 ++++++AXGroup
 ++++++++AXGroup
 ++++++++++AXButton AXDescription='play'
 ++++++++++++AXGroup
-++++++++++AXGroup AXDescription='elapsed time: 0:00'
-++++++++++++AXStaticText AXValue='0:00'
 ++++++++++AXGroup
 ++++++++++++AXGroup
 ++++++++++++AXButton AXDescription='mute'
@@ -23,5 +21,5 @@
 ++++++++++++AXGroup
 ++++++++++AXPopUpButton AXDescription='show more media controls' AXHelp='more options'
 ++++++++++++AXGroup
-++++++++AXSlider AXDescription='video time scrubber 0:00 / 0:00' AXValue=0
+++++++++AXSlider AXDescription='video time scrubber' AXHelp='total time: 0:00' AXValue=0
 ++AXTextArea
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-uia-win.txt b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-uia-win.txt
index 1422929..bdf9ea3 100644
--- a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-uia-win.txt
@@ -13,8 +13,6 @@
 ++++++++Group IsControlElement=false
 ++++++++++Button Name='play' IsEnabled=false
 ++++++++++++Group IsControlElement=false
-++++++++++Group Name='elapsed time: 0:00'
-++++++++++++Text Name='0:00'
 ++++++++++Group IsControlElement=false
 ++++++++++++Group IsControlElement=false
 ++++++++++++Button Name='mute' IsEnabled=false
@@ -22,5 +20,5 @@
 ++++++++++++Group IsControlElement=false
 ++++++++++Button Name='show more media controls' IsEnabled=false ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++++++++++Group IsControlElement=false
-++++++++Slider Name='video time scrubber 0:00 / 0:00' IsEnabled=false RangeValue.IsReadOnly=true RangeValue.LargeChange=10.00 RangeValue.SmallChange=1.00 RangeValue.Maximum=100.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='elapsed time: 0:00'
+++++++++Slider Name='video time scrubber' IsEnabled=false RangeValue.IsReadOnly=true RangeValue.LargeChange=10.00 RangeValue.SmallChange=1.00 RangeValue.Maximum=100.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='elapsed time: 0:00'
 ++ProgressBar RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=1.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-win.txt b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-win.txt
index 994a6c1c..fa0de43 100644
--- a/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-win.txt
+++ b/content/test/data/accessibility/html/contenteditable-on-disallowed-element-expected-win.txt
@@ -6,15 +6,13 @@
 ++ROLE_SYSTEM_SEPARATOR FOCUSABLE IA2_STATE_HORIZONTAL IA2_STATE_MULTI_LINE
 ++ROLE_SYSTEM_GRAPHIC name='To get missing image descriptions, open the context menu.' READONLY FOCUSABLE IA2_STATE_MULTI_LINE
 ++ROLE_SYSTEM_STATICTEXT name=' '
-++ROLE_SYSTEM_GROUPING name='Unable to play media.' value='<newline><newline>0:00<newline><newline><newline><newline><newline>' UNAVAILABLE FOCUSABLE IA2_STATE_MULTI_LINE
+++ROLE_SYSTEM_GROUPING name='Unable to play media.' value='<newline><newline><newline><newline><newline><newline>' UNAVAILABLE FOCUSABLE IA2_STATE_MULTI_LINE
 ++++IA2_ROLE_SECTION
 ++++++IA2_ROLE_SECTION
 ++++++IA2_ROLE_SECTION
 ++++++++IA2_ROLE_SECTION
 ++++++++++ROLE_SYSTEM_PUSHBUTTON name='play' UNAVAILABLE
 ++++++++++++IA2_ROLE_SECTION
-++++++++++IA2_ROLE_SECTION name='elapsed time: 0:00'
-++++++++++++ROLE_SYSTEM_STATICTEXT name='0:00'
 ++++++++++IA2_ROLE_SECTION
 ++++++++++++IA2_ROLE_SECTION
 ++++++++++++ROLE_SYSTEM_PUSHBUTTON name='mute' UNAVAILABLE
@@ -22,5 +20,5 @@
 ++++++++++++IA2_ROLE_SECTION
 ++++++++++ROLE_SYSTEM_BUTTONMENU name='show more media controls' UNAVAILABLE HASPOPUP description-from:tooltip description='more options'
 ++++++++++++IA2_ROLE_SECTION
-++++++++ROLE_SYSTEM_SLIDER name='video time scrubber 0:00 / 0:00' value='elapsed time: 0:00' UNAVAILABLE IA2_STATE_HORIZONTAL
+++++++++ROLE_SYSTEM_SLIDER name='video time scrubber' value='elapsed time: 0:00' UNAVAILABLE IA2_STATE_HORIZONTAL description:total time\: 0\:00 description-from:aria-description description='total time: 0:00'
 ++ROLE_SYSTEM_PROGRESSBAR value='0' MIXED READONLY FOCUSABLE IA2_STATE_MULTI_LINE
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/no-source-video-expected-auralinux.txt b/content/test/data/accessibility/html/no-source-video-expected-auralinux.txt
index 214fe778e..3aabeb8 100644
--- a/content/test/data/accessibility/html/no-source-video-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/no-source-video-expected-auralinux.txt
@@ -7,8 +7,6 @@
 ++++++++++[section]
 ++++++++++++[push button] name='play'
 ++++++++++++++[section]
-++++++++++++[section] name='elapsed time: 0:00'
-++++++++++++++[static] name='0:00'
 ++++++++++++[section]
 ++++++++++++++[section]
 ++++++++++++++[push button] name='mute'
@@ -16,4 +14,4 @@
 ++++++++++++++[section]
 ++++++++++++[push button] name='show more media controls' description='more options' description-from:tooltip
 ++++++++++++++[section]
-++++++++++[slider] name='video time scrubber 0:00 / 0:00' horizontal current=0.000000 minimum=0.000000 maximum=100.000000
\ No newline at end of file
+++++++++++[slider] name='video time scrubber' description='total time: 0:00' horizontal description:total time: 0:00 description-from:aria-description current=0.000000 minimum=0.000000 maximum=100.000000
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/no-source-video-expected-blink.txt b/content/test/data/accessibility/html/no-source-video-expected-blink.txt
index a2e050f20..3f11bd58 100644
--- a/content/test/data/accessibility/html/no-source-video-expected-blink.txt
+++ b/content/test/data/accessibility/html/no-source-video-expected-blink.txt
@@ -12,11 +12,10 @@
 ++++++++++++++genericContainer
 ++++++++++++++++button name='play' restriction=disabled
 ++++++++++++++++++genericContainer
-++++++++++++++++genericContainer name='elapsed time: 0:00'
-++++++++++++++++++staticText name='0:00'
-++++++++++++++++++++inlineTextBox name='0:00'
 ++++++++++++++++genericContainer ignored invisible
-++++++++++++++++++staticText ignored name='/ 0:00'
+++++++++++++++++++staticText ignored invisible name='0:00'
+++++++++++++++++genericContainer ignored invisible
+++++++++++++++++++staticText ignored invisible name='/ 0:00'
 ++++++++++++++++genericContainer ignored
 ++++++++++++++++genericContainer
 ++++++++++++++++++genericContainer
@@ -26,7 +25,7 @@
 ++++++++++++++++++genericContainer
 ++++++++++++++++popUpButton description='more options' name='show more media controls' descriptionFrom=title restriction=disabled
 ++++++++++++++++++genericContainer
-++++++++++++++slider horizontal name='video time scrubber 0:00 / 0:00' value='elapsed time: 0:00' restriction=disabled valueForRange=0.00 minValueForRange=0.00 maxValueForRange=100.00
+++++++++++++++slider horizontal description='total time: 0:00' name='video time scrubber' value='elapsed time: 0:00' descriptionFrom=ariaDescription restriction=disabled valueForRange=0.00 minValueForRange=0.00 maxValueForRange=100.00
 ++++++++++menu ignored invisible
 ++++++++++menu ignored invisible
 ++++++++++menu ignored invisible
@@ -69,4 +68,4 @@
 ++++++++++++++button ignored invisible
 ++++++++++++++genericContainer ignored invisible
 ++++++++++++++++genericContainer ignored invisible
-++++++++++++++++++staticText ignored invisible name='Picture in picture'
+++++++++++++++++++staticText ignored invisible name='Picture in picture'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/no-source-video-expected-mac.txt b/content/test/data/accessibility/html/no-source-video-expected-mac.txt
index 0db8502b..5e074dbaf 100644
--- a/content/test/data/accessibility/html/no-source-video-expected-mac.txt
+++ b/content/test/data/accessibility/html/no-source-video-expected-mac.txt
@@ -7,8 +7,6 @@
 ++++++++++AXGroup
 ++++++++++++AXButton AXDescription='play'
 ++++++++++++++AXGroup
-++++++++++++AXGroup AXDescription='elapsed time: 0:00'
-++++++++++++++AXStaticText AXValue='0:00'
 ++++++++++++AXGroup
 ++++++++++++++AXGroup
 ++++++++++++++AXButton AXDescription='mute'
@@ -16,4 +14,4 @@
 ++++++++++++++AXGroup
 ++++++++++++AXPopUpButton AXDescription='show more media controls' AXHelp='more options'
 ++++++++++++++AXGroup
-++++++++++AXSlider AXDescription='video time scrubber 0:00 / 0:00' AXValue=0
\ No newline at end of file
+++++++++++AXSlider AXDescription='video time scrubber' AXHelp='total time: 0:00' AXValue=0
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/no-source-video-expected-uia-win.txt b/content/test/data/accessibility/html/no-source-video-expected-uia-win.txt
index e4c94b31..e6c362a 100644
--- a/content/test/data/accessibility/html/no-source-video-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/no-source-video-expected-uia-win.txt
@@ -7,8 +7,6 @@
 ++++++++++Group IsControlElement=false
 ++++++++++++Button Name='play' IsEnabled=false
 ++++++++++++++Group IsControlElement=false
-++++++++++++Group Name='elapsed time: 0:00'
-++++++++++++++Text Name='0:00'
 ++++++++++++Group IsControlElement=false
 ++++++++++++++Group IsControlElement=false
 ++++++++++++++Button Name='mute' IsEnabled=false
@@ -16,4 +14,4 @@
 ++++++++++++++Group IsControlElement=false
 ++++++++++++Button Name='show more media controls' IsEnabled=false ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++++++++++++Group IsControlElement=false
-++++++++++Slider Name='video time scrubber 0:00 / 0:00' IsEnabled=false RangeValue.IsReadOnly=true RangeValue.LargeChange=10.00 RangeValue.SmallChange=1.00 RangeValue.Maximum=100.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='elapsed time: 0:00'
\ No newline at end of file
+++++++++++Slider Name='video time scrubber' IsEnabled=false RangeValue.IsReadOnly=true RangeValue.LargeChange=10.00 RangeValue.SmallChange=1.00 RangeValue.Maximum=100.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='elapsed time: 0:00'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/no-source-video-expected-win.txt b/content/test/data/accessibility/html/no-source-video-expected-win.txt
index e57959d..f7d3854 100644
--- a/content/test/data/accessibility/html/no-source-video-expected-win.txt
+++ b/content/test/data/accessibility/html/no-source-video-expected-win.txt
@@ -7,8 +7,6 @@
 ++++++++++IA2_ROLE_SECTION
 ++++++++++++ROLE_SYSTEM_PUSHBUTTON name='play' UNAVAILABLE
 ++++++++++++++IA2_ROLE_SECTION
-++++++++++++IA2_ROLE_SECTION name='elapsed time: 0:00'
-++++++++++++++ROLE_SYSTEM_STATICTEXT name='0:00'
 ++++++++++++IA2_ROLE_SECTION
 ++++++++++++++IA2_ROLE_SECTION
 ++++++++++++++ROLE_SYSTEM_PUSHBUTTON name='mute' UNAVAILABLE
@@ -16,4 +14,4 @@
 ++++++++++++++IA2_ROLE_SECTION
 ++++++++++++ROLE_SYSTEM_BUTTONMENU name='show more media controls' UNAVAILABLE HASPOPUP description-from:tooltip description='more options'
 ++++++++++++++IA2_ROLE_SECTION
-++++++++++ROLE_SYSTEM_SLIDER name='video time scrubber 0:00 / 0:00' value='elapsed time: 0:00' UNAVAILABLE IA2_STATE_HORIZONTAL
\ No newline at end of file
+++++++++++ROLE_SYSTEM_SLIDER name='video time scrubber' value='elapsed time: 0:00' UNAVAILABLE IA2_STATE_HORIZONTAL description:total time\: 0\:00 description-from:aria-description description='total time: 0:00'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/video-controls-expected-auralinux.txt b/content/test/data/accessibility/html/video-controls-expected-auralinux.txt
index 305b96ef..61f3c9e7 100644
--- a/content/test/data/accessibility/html/video-controls-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/video-controls-expected-auralinux.txt
@@ -7,8 +7,6 @@
 ++++++++++[section]
 ++++++++++++[push button] name='play'
 ++++++++++++++[section]
-++++++++++++[section] name='elapsed time: 0:00'
-++++++++++++++[static] name='0:00'
 ++++++++++++[section]
 ++++++++++++++[section]
 ++++++++++++++[push button] name='mute'
@@ -16,4 +14,4 @@
 ++++++++++++++[section]
 ++++++++++++[push button] name='show more media controls' description='more options' description-from:tooltip haspopup:menu
 ++++++++++++++[section]
-++++++++++[slider] name='video time scrubber 0:00 / 0:00' horizontal current=0.000000 minimum=0.000000 maximum=100.000000
+++++++++++[slider] name='video time scrubber' description='total time: 0:00' horizontal description:total time: 0:00 description-from:aria-description current=0.000000 minimum=0.000000 maximum=100.000000
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/video-controls-expected-blink.txt b/content/test/data/accessibility/html/video-controls-expected-blink.txt
index e2f0fa6..8200f7f 100644
--- a/content/test/data/accessibility/html/video-controls-expected-blink.txt
+++ b/content/test/data/accessibility/html/video-controls-expected-blink.txt
@@ -12,11 +12,10 @@
 ++++++++++++++genericContainer
 ++++++++++++++++button name='play' restriction=disabled
 ++++++++++++++++++genericContainer
-++++++++++++++++genericContainer name='elapsed time: 0:00'
-++++++++++++++++++staticText name='0:00'
-++++++++++++++++++++inlineTextBox name='0:00'
 ++++++++++++++++genericContainer ignored invisible
-++++++++++++++++++staticText ignored name='/ 0:00'
+++++++++++++++++++staticText ignored invisible name='0:00'
+++++++++++++++++genericContainer ignored invisible
+++++++++++++++++++staticText ignored invisible name='/ 0:00'
 ++++++++++++++++genericContainer ignored
 ++++++++++++++++genericContainer
 ++++++++++++++++++genericContainer
@@ -26,7 +25,7 @@
 ++++++++++++++++++genericContainer
 ++++++++++++++++popUpButton description='more options' name='show more media controls' descriptionFrom=title restriction=disabled haspopup=menu
 ++++++++++++++++++genericContainer
-++++++++++++++slider horizontal name='video time scrubber 0:00 / 0:00' value='elapsed time: 0:00' restriction=disabled valueForRange=0.00 minValueForRange=0.00 maxValueForRange=100.00
+++++++++++++++slider horizontal description='total time: 0:00' name='video time scrubber' value='elapsed time: 0:00' descriptionFrom=ariaDescription restriction=disabled valueForRange=0.00 minValueForRange=0.00 maxValueForRange=100.00
 ++++++++++menu ignored invisible
 ++++++++++menu ignored invisible
 ++++++++++menu ignored invisible
diff --git a/content/test/data/accessibility/html/video-controls-expected-uia-win.txt b/content/test/data/accessibility/html/video-controls-expected-uia-win.txt
index e4c94b31..e6c362a 100644
--- a/content/test/data/accessibility/html/video-controls-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/video-controls-expected-uia-win.txt
@@ -7,8 +7,6 @@
 ++++++++++Group IsControlElement=false
 ++++++++++++Button Name='play' IsEnabled=false
 ++++++++++++++Group IsControlElement=false
-++++++++++++Group Name='elapsed time: 0:00'
-++++++++++++++Text Name='0:00'
 ++++++++++++Group IsControlElement=false
 ++++++++++++++Group IsControlElement=false
 ++++++++++++++Button Name='mute' IsEnabled=false
@@ -16,4 +14,4 @@
 ++++++++++++++Group IsControlElement=false
 ++++++++++++Button Name='show more media controls' IsEnabled=false ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++++++++++++Group IsControlElement=false
-++++++++++Slider Name='video time scrubber 0:00 / 0:00' IsEnabled=false RangeValue.IsReadOnly=true RangeValue.LargeChange=10.00 RangeValue.SmallChange=1.00 RangeValue.Maximum=100.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='elapsed time: 0:00'
\ No newline at end of file
+++++++++++Slider Name='video time scrubber' IsEnabled=false RangeValue.IsReadOnly=true RangeValue.LargeChange=10.00 RangeValue.SmallChange=1.00 RangeValue.Maximum=100.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='elapsed time: 0:00'
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Dawn Mac x64 Builder/properties.json b/infra/config/generated/builders/ci/Dawn Mac x64 Builder/properties.json
index 837b8520..7073447 100644
--- a/infra/config/generated/builders/ci/Dawn Mac x64 Builder/properties.json
+++ b/infra/config/generated/builders/ci/Dawn Mac x64 Builder/properties.json
@@ -1,8 +1,8 @@
 {
-  "$build/goma": {
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
+  "$build/reclient": {
+    "instance": "rbe-chromium-trusted",
+    "jobs": 250,
+    "metrics_project": "chromium-reclient-metrics"
   },
   "$recipe_engine/resultdb/test_presentation": {
     "column_keys": [],
diff --git a/infra/config/generated/builders/ci/GPU Mac Builder/properties.json b/infra/config/generated/builders/ci/GPU Mac Builder/properties.json
index 24aab43..864abf0b 100644
--- a/infra/config/generated/builders/ci/GPU Mac Builder/properties.json
+++ b/infra/config/generated/builders/ci/GPU Mac Builder/properties.json
@@ -124,10 +124,10 @@
       ]
     }
   },
-  "$build/goma": {
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
+  "$build/reclient": {
+    "instance": "rbe-chromium-trusted",
+    "jobs": 250,
+    "metrics_project": "chromium-reclient-metrics"
   },
   "$recipe_engine/resultdb/test_presentation": {
     "column_keys": [],
diff --git a/infra/config/generated/builders/ci/fuchsia-fyi-x64-reviver/properties.json b/infra/config/generated/builders/ci/fuchsia-fyi-x64-reviver/properties.json
deleted file mode 100644
index 3ee8f93..0000000
--- a/infra/config/generated/builders/ci/fuchsia-fyi-x64-reviver/properties.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "fuchsia-fyi-x64-reviver",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-fuchsia-archive",
-              "builder_group": "chromium.fyi",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "chromium",
-                "target_bits": 64,
-                "target_platform": "fuchsia"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "fuchsia_x64"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "fuchsia-fyi-x64-reviver",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.fyi",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-webkit-tot/properties.json b/infra/config/generated/builders/ci/ios-webkit-tot/properties.json
index ac3a16a..ad29b12 100644
--- a/infra/config/generated/builders/ci/ios-webkit-tot/properties.json
+++ b/infra/config/generated/builders/ci/ios-webkit-tot/properties.json
@@ -1,8 +1,8 @@
 {
-  "$build/goma": {
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
+  "$build/reclient": {
+    "instance": "rbe-chromium-trusted",
+    "jobs": 250,
+    "metrics_project": "chromium-reclient-metrics"
   },
   "$recipe_engine/resultdb/test_presentation": {
     "column_keys": [],
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index f4aa9d4..4d161cf 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -32168,87 +32168,6 @@
       }
     }
     builders {
-      name: "fuchsia-fyi-x64-reviver"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/fuchsia-fyi-x64-reviver/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.fyi",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      priority: 35
-      execution_timeout_secs: 36000
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "fuchsia-fyi-x64-wst"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -51859,13 +51778,66 @@
         '        "bucket": "ci",'
         '        "builder": "android-marshmallow-x86-rel",'
         '        "project": "chromium"'
-        '      },'
-        '      "dimensions": {'
-        '        "builderless": "1",'
-        '        "cpu": "x86-64",'
-        '        "free_space": "standard",'
-        '        "os": "Ubuntu-18.04",'
-        '        "ssd": "0"'
+        '      }'
+        '    }'
+        '  ]'
+        '}'
+      service_account: "reviver-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      resultdb {
+        enable: true
+      }
+    }
+    builders {
+      name: "fuchsia-coordinator"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builderless:1"
+      dimensions: "os:Ubuntu-18.04"
+      dimensions: "pool:luci.chromium.ci"
+      dimensions: "ssd:0"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$recipe_engine/resultdb/test_presentation": {'
+        '    "column_keys": [],'
+        '    "grouping_keys": ['
+        '      "status",'
+        '      "v.test_suite"'
+        '    ]'
+        '  },'
+        '  "recipe": "chromium_polymorphic/launcher",'
+        '  "runner_builder": {'
+        '    "bucket": "reviver",'
+        '    "builder": "runner",'
+        '    "project": "chromium"'
+        '  },'
+        '  "target_builders": ['
+        '    {'
+        '      "builder_id": {'
+        '        "bucket": "ci",'
+        '        "builder": "fuchsia-fyi-x64-rel",'
+        '        "project": "chromium"'
+        '      }'
+        '    },'
+        '    {'
+        '      "builder_id": {'
+        '        "bucket": "ci",'
+        '        "builder": "fuchsia-x64-dbg",'
+        '        "project": "chromium"'
+        '      }'
+        '    },'
+        '    {'
+        '      "builder_id": {'
+        '        "bucket": "ci",'
+        '        "builder": "fuchsia-fyi-x64-asan",'
+        '        "project": "chromium"'
         '      }'
         '    }'
         '  ]'
@@ -51882,7 +51854,12 @@
     builders {
       name: "runner"
       swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builderless:1"
+      dimensions: "cpu:x86-64"
+      dimensions: "free_space:standard"
+      dimensions: "os:Ubuntu-18.04"
       dimensions: "pool:luci.chromium.ci"
+      dimensions: "ssd:0"
       exe {
         cipd_package: "infra/chromium/bootstrapper/${platform}"
         cipd_version: "latest"
@@ -54862,10 +54839,6 @@
         value: 100
       }
       experiments {
-        key: "weetbix.enable_weetbix_exonerations"
-        value: 50
-      }
-      experiments {
         key: "weetbix.retry_weak_exonerations"
         value: 100
       }
@@ -55161,6 +55134,10 @@
         value: 100
       }
       experiments {
+        key: "weetbix.enable_weetbix_exonerations"
+        value: 50
+      }
+      experiments {
         key: "weetbix.retry_weak_exonerations"
         value: 100
       }
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg
index 8ba4817..5997e955 100644
--- a/infra/config/generated/luci/luci-milo.cfg
+++ b/infra/config/generated/luci/luci-milo.cfg
@@ -1883,11 +1883,6 @@
     short_name: "cov"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-reviver"
-    category: "fyi"
-    short_name: "rev"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-wst"
     category: "fyi"
     short_name: "work"
@@ -8029,11 +8024,6 @@
     short_name: "rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-reviver"
-    category: "fuchsia|x64"
-    short_name: "rev"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-wst"
     category: "fuchsia|x64"
     short_name: "work"
@@ -17396,6 +17386,9 @@
     name: "buildbucket/luci.chromium.reviver/android-launcher"
   }
   builders {
+    name: "buildbucket/luci.chromium.reviver/fuchsia-coordinator"
+  }
+  builders {
     name: "buildbucket/luci.chromium.reviver/runner"
   }
   builder_view_only: true
diff --git a/infra/config/generated/luci/luci-notify.cfg b/infra/config/generated/luci/luci-notify.cfg
index a7f9826..417ef42d 100644
--- a/infra/config/generated/luci/luci-notify.cfg
+++ b/infra/config/generated/luci/luci-notify.cfg
@@ -2933,19 +2933,6 @@
   }
   builders {
     bucket: "ci"
-    name: "fuchsia-fyi-x64-reviver"
-    repository: "https://chromium.googlesource.com/chromium/src"
-  }
-}
-notifiers {
-  notifications {
-    on_change: true
-    email {
-      recipients: "chrome-fuchsia-gardener@grotations.appspotmail.com"
-    }
-  }
-  builders {
-    bucket: "ci"
     name: "fuchsia-fyi-x64-wst"
     repository: "https://chromium.googlesource.com/chromium/src"
   }
diff --git a/infra/config/generated/luci/luci-scheduler.cfg b/infra/config/generated/luci/luci-scheduler.cfg
index e46bbb44..e55f52e 100644
--- a/infra/config/generated/luci/luci-scheduler.cfg
+++ b/infra/config/generated/luci/luci-scheduler.cfg
@@ -5411,16 +5411,6 @@
   }
 }
 job {
-  id: "fuchsia-fyi-x64-reviver"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "fuchsia-fyi-x64-reviver"
-  }
-}
-job {
   id: "fuchsia-fyi-x64-wst"
   realm: "ci"
   acl_sets: "ci"
@@ -7704,7 +7694,6 @@
   triggers: "fuchsia-fyi-x64-asan"
   triggers: "fuchsia-fyi-x64-dbg"
   triggers: "fuchsia-fyi-x64-rel"
-  triggers: "fuchsia-fyi-x64-reviver"
   triggers: "fuchsia-fyi-x64-wst"
   triggers: "fuchsia-official"
   triggers: "fuchsia-x64-cast"
diff --git a/infra/config/subprojects/chromium/ci/chromium.dawn.star b/infra/config/subprojects/chromium/ci/chromium.dawn.star
index 16183e9..02c07e3 100644
--- a/infra/config/subprojects/chromium/ci/chromium.dawn.star
+++ b/infra/config/subprojects/chromium/ci/chromium.dawn.star
@@ -212,8 +212,6 @@
         category = "ToT|Mac|Builder",
         short_name = "x64",
     ),
-    goma_backend = goma.backend.RBE_PROD,
-    reclient_instance = None,
 )
 
 ci.gpu.mac_builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fyi.star
index c0c7e7c..a0aa73d 100644
--- a/infra/config/subprojects/chromium/ci/chromium.fyi.star
+++ b/infra/config/subprojects/chromium/ci/chromium.fyi.star
@@ -307,38 +307,6 @@
 )
 
 ci.builder(
-    name = "fuchsia-fyi-x64-reviver",
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = ["fuchsia_x64"],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "chromium",
-            apply_configs = ["mb"],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 64,
-            target_platform = "fuchsia",
-        ),
-        build_gs_bucket = "chromium-fuchsia-archive",
-    ),
-    console_view_entry = [
-        consoles.console_view_entry(
-            category = "fuchsia|x64",
-            short_name = "rev",
-        ),
-        consoles.console_view_entry(
-            branch_selector = branches.MAIN,
-            console_view = "sheriff.fuchsia",
-            category = "fyi",
-            short_name = "rev",
-        ),
-    ],
-    notifies = ["cr-fuchsia"],
-    os = os.LINUX_DEFAULT,
-)
-
-ci.builder(
     name = "fuchsia-fyi-x64-wst",
     console_view_entry = [
         consoles.console_view_entry(
@@ -2123,6 +2091,9 @@
     schedule = "0 1-23/6 * * *",
     triggered_by = [],
     xcode = xcode.x13wk,
+    goma_backend = None,
+    reclient_instance = reclient.instance.DEFAULT_TRUSTED,
+    reclient_jobs = reclient.jobs.DEFAULT,
 )
 
 fyi_ios_builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.gpu.star b/infra/config/subprojects/chromium/ci/chromium.gpu.star
index fc62996..1cc07b9c 100644
--- a/infra/config/subprojects/chromium/ci/chromium.gpu.star
+++ b/infra/config/subprojects/chromium/ci/chromium.gpu.star
@@ -130,8 +130,6 @@
         category = "Mac",
     ),
     cq_mirrors_console_view = "mirrors",
-    goma_backend = goma.backend.RBE_PROD,
-    reclient_instance = None,
 )
 
 ci.gpu.mac_builder(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
index ced9dad..37f9cab3 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -267,7 +267,6 @@
         "remove_src_checkout_experiment": 100,
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
-        "weetbix.enable_weetbix_exonerations": 50,
     },
 )
 
@@ -300,6 +299,7 @@
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
         "remove_src_checkout_experiment": 100,
+        "weetbix.enable_weetbix_exonerations": 50,
     },
 )
 
diff --git a/infra/config/subprojects/reviver/reviver.star b/infra/config/subprojects/reviver/reviver.star
index c070678..59e154b 100644
--- a/infra/config/subprojects/reviver/reviver.star
+++ b/infra/config/subprojects/reviver/reviver.star
@@ -42,14 +42,13 @@
     omit_python2 = False,
 )
 
-def target_builder(*, name, dimensions):
+def target_builder(*, name):
     return {
         "builder_id": {
             "project": "chromium",
             "bucket": "ci",
             "builder": name,
         },
-        "dimensions": {k: str(v) for k, v in dimensions.items()},
     }
 
 builder(
@@ -66,13 +65,6 @@
         "target_builders": [
             target_builder(
                 name = "android-marshmallow-x86-rel",
-                dimensions = {
-                    "builderless": 1,
-                    "cpu": cpu.X86_64,
-                    "free_space": free_space.standard,
-                    "os": os.LINUX_DEFAULT.dimension,
-                    "ssd": "0",
-                },
             ),
         ],
     },
@@ -80,6 +72,33 @@
     schedule = "0 1,4,7,10,13 * * *",
 )
 
+# A coordinator of slightly aggressive scheduling with effectively unlimited
+# test bot capacity for fuchsia.
+builder(
+    name = "fuchsia-coordinator",
+    executable = "recipe:chromium_polymorphic/launcher",
+    os = os.LINUX_DEFAULT,
+    pool = "luci.chromium.ci",
+    properties = {
+        "runner_builder": {
+            "project": "chromium",
+            "bucket": "reviver",
+            "builder": "runner",
+        },
+        "target_builders": [
+            target_builder(
+                name = "fuchsia-fyi-x64-rel",
+            ),
+            target_builder(
+                name = "fuchsia-x64-dbg",
+            ),
+            target_builder(
+                name = "fuchsia-fyi-x64-asan",
+            ),
+        ],
+    },
+)
+
 builder(
     name = "runner",
     executable = "recipe:reviver/chromium/runner",
@@ -94,4 +113,9 @@
             bq_table = "chrome-luci-data.chromium.reviver_test_results",
         ),
     ],
+    builderless = 1,
+    cpu = cpu.X86_64,
+    free_space = free_space.standard,
+    os = os.LINUX_DEFAULT,
+    ssd = False,
 )
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm
index c8a4691..a8be5251 100644
--- a/ios/chrome/app/main_controller.mm
+++ b/ios/chrome/app/main_controller.mm
@@ -782,23 +782,6 @@
   [_spotlightManager shutdown];
   _spotlightManager = nil;
 
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)) {
-    if (self.appState.mainBrowserState->HasOffTheRecordChromeBrowserState()) {
-      breadcrumbs::BreadcrumbManagerKeyedService* service =
-          BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
-              self.appState.mainBrowserState
-                  ->GetOffTheRecordChromeBrowserState());
-      service->StopPersisting();
-      breakpad::StopMonitoringBreadcrumbManagerService(service);
-    }
-
-    breadcrumbs::BreadcrumbManagerKeyedService* service =
-        BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
-            self.appState.mainBrowserState);
-    service->StopPersisting();
-    breakpad::StopMonitoringBreadcrumbManagerService(service);
-  }
-
   _extensionSearchEngineDataUpdater = nullptr;
 
   // _localStatePrefChangeRegistrar is observing the PrefService, which is owned
@@ -1130,18 +1113,13 @@
 }
 
 - (void)startLoggingBreadcrumbs {
-  breadcrumbs::BreadcrumbManagerKeyedService* breadcrumbService =
-      BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
-          self.appState.mainBrowserState);
-  breakpad::MonitorBreadcrumbManagerService(breadcrumbService);
+  BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
+      self.appState.mainBrowserState);
 
+  // Get stored persistent breadcrumbs from last run to set on crash reports.
   breadcrumbs::BreadcrumbPersistentStorageManager* persistentStorageManager =
       GetApplicationContext()->GetBreadcrumbPersistentStorageManager();
   DCHECK(persistentStorageManager);
-
-  breadcrumbService->StartPersisting(persistentStorageManager);
-
-  // Get stored persistent breadcrumbs from last run to set on crash reports.
   persistentStorageManager->GetStoredEvents(
       base::BindOnce(^(std::vector<std::string> events) {
         breakpad::SetPreviousSessionEvents(events);
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h b/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h
index 8af98740..c888383 100644
--- a/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h
+++ b/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h
@@ -18,8 +18,7 @@
 extern const char kBreadcrumbOrientation[];
 
 // Listens for and logs application-wide breadcrumb events to the
-// BreadcrumbManager passed in the constructor. Includes iOS-specific events
-// such as device orientation.
+// BreadcrumbManager. Includes iOS-specific events such as device orientation.
 class ApplicationBreadcrumbsLogger
     : public breadcrumbs::ApplicationBreadcrumbsLogger {
  public:
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger_unittest.mm b/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger_unittest.mm
index efbf73e..c7811d4 100644
--- a/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger_unittest.mm
+++ b/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger_unittest.mm
@@ -12,7 +12,6 @@
 #import "base/files/scoped_temp_dir.h"
 #import "base/test/task_environment.h"
 #import "components/breadcrumbs/core/breadcrumb_manager.h"
-#import "components/breadcrumbs/core/breadcrumb_util.h"
 #import "testing/gtest/include/gtest/gtest.h"
 #import "testing/platform_test.h"
 
diff --git a/ios/chrome/browser/crash_report/crash_report_helper.h b/ios/chrome/browser/crash_report/crash_report_helper.h
index 5d2baa3..41873ef 100644
--- a/ios/chrome/browser/crash_report/crash_report_helper.h
+++ b/ios/chrome/browser/crash_report/crash_report_helper.h
@@ -61,10 +61,6 @@
 void MonitorBreadcrumbManagerService(
     breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_manager_service);
 
-// Stops listening for breadcrumbs logged to `breadcrumb_manager_service`.
-void StopMonitoringBreadcrumbManagerService(
-    breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_manager_service);
-
 // Sets breadcrumb events associated with the previous application session.
 void SetPreviousSessionEvents(const std::vector<std::string>& events);
 
diff --git a/ios/chrome/browser/crash_report/crash_report_helper.mm b/ios/chrome/browser/crash_report/crash_report_helper.mm
index 7bcf899..c8cd20a 100644
--- a/ios/chrome/browser/crash_report/crash_report_helper.mm
+++ b/ios/chrome/browser/crash_report/crash_report_helper.mm
@@ -234,18 +234,6 @@
       web_state_list);
 }
 
-void MonitorBreadcrumbManagerService(
-    breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_manager_service) {
-  breadcrumbs::CrashReporterBreadcrumbObserver::GetInstance()
-      .ObserveBreadcrumbManagerService(breadcrumb_manager_service);
-}
-
-void StopMonitoringBreadcrumbManagerService(
-    breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_manager_service) {
-  breadcrumbs::CrashReporterBreadcrumbObserver::GetInstance()
-      .StopObservingBreadcrumbManagerService(breadcrumb_manager_service);
-}
-
 void SetPreviousSessionEvents(const std::vector<std::string>& events) {
   breadcrumbs::CrashReporterBreadcrumbObserver::GetInstance()
       .SetPreviousSessionEvents(events);
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 bfabbfb2..3d52efd 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
@@ -83,17 +83,6 @@
   }
 
  protected:
-  // Returns the BreadcrumbManagerKeyedService for `browser_state`, and sets
-  // `crash_reporter_breadcrumb_observer_` as its observer.
-  breadcrumbs::BreadcrumbManagerKeyedService* GetAndObserveBreadcrumbService(
-      web::BrowserState* const browser_state) {
-    breadcrumbs::BreadcrumbManagerKeyedService* const breadcrumb_service =
-        BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(browser_state);
-    crash_reporter_breadcrumb_observer_.ObserveBreadcrumbManagerService(
-        breadcrumb_service);
-    return breadcrumb_service;
-  }
-
   id mock_breakpad_controller_;
   std::unique_ptr<ScopedBlockSwizzler>
       breakpad_controller_shared_instance_swizzler_;
@@ -116,7 +105,8 @@
   crash_helper::SetEnabled(true);
 
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      GetAndObserveBreadcrumbService(chrome_browser_state_.get());
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
+          chrome_browser_state_.get());
 
   id breadcrumbs_param_validation_block = [OCMArg checkWithBlock:^(id value) {
     if (![value isKindOfClass:[NSString class]]) {
@@ -145,7 +135,8 @@
   crash_helper::SetEnabled(true);
 
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      GetAndObserveBreadcrumbService(chrome_browser_state_.get());
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
+          chrome_browser_state_.get());
 
   // Build a sample breadcrumbs string greater than the maximum allowed size.
   NSMutableString* breadcrumbs = [[NSMutableString alloc] init];
@@ -179,7 +170,8 @@
   NSString* event_nsstring = base::SysUTF8ToNSString(event);
 
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
-      GetAndObserveBreadcrumbService(chrome_browser_state_.get());
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
+          chrome_browser_state_.get());
 
   [[mock_breakpad_controller_ expect]
       addUploadParameter:StringParameterValidatorWithCountOfSubstring(
@@ -189,7 +181,7 @@
   breadcrumb_service->AddEvent(event);
 
   breadcrumbs::BreadcrumbManagerKeyedService* otr_breadcrumb_service =
-      GetAndObserveBreadcrumbService(
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
           chrome_browser_state_->GetOffTheRecordChromeBrowserState());
 
   [[mock_breakpad_controller_ expect]
@@ -200,7 +192,8 @@
   otr_breadcrumb_service->AddEvent(event);
 
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service_2 =
-      GetAndObserveBreadcrumbService(chrome_browser_state_2_.get());
+      BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
+          chrome_browser_state_2_.get());
 
   [[mock_breakpad_controller_ expect]
       addUploadParameter:StringParameterValidatorWithCountOfSubstring(
diff --git a/ios/chrome/browser/flags/system_flags.h b/ios/chrome/browser/flags/system_flags.h
index 28f38c7..fefd3ff 100644
--- a/ios/chrome/browser/flags/system_flags.h
+++ b/ios/chrome/browser/flags/system_flags.h
@@ -36,6 +36,10 @@
 // TODO(crbug.com/1312124): Remove after launch.
 bool ShouldResetFirstFollowCount();
 
+// Returns true if the top of feed signin promo should be shown regardless of
+// dismissal conditions. The promo will still only show for signed out users.
+bool ShouldForceFeedSigninPromo();
+
 // Should be called after the count has been reset so that the resetting flag
 // can be turned off.
 // TODO(crbug.com/1312124): Remove after launch.
diff --git a/ios/chrome/browser/flags/system_flags.mm b/ios/chrome/browser/flags/system_flags.mm
index b97e1ad..f6258e9a 100644
--- a/ios/chrome/browser/flags/system_flags.mm
+++ b/ios/chrome/browser/flags/system_flags.mm
@@ -63,6 +63,11 @@
   return [[NSUserDefaults standardUserDefaults] boolForKey:@"ResetFirstFollow"];
 }
 
+bool ShouldForceFeedSigninPromo() {
+  return [[NSUserDefaults standardUserDefaults]
+      boolForKey:@"ForceFeedSigninPromo"];
+}
+
 void DidResetFirstFollowCount() {
   [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"ResetFirstFollow"];
 }
diff --git a/ios/chrome/browser/resources/Settings.bundle/Experimental.plist b/ios/chrome/browser/resources/Settings.bundle/Experimental.plist
index 05b8870..647e492 100644
--- a/ios/chrome/browser/resources/Settings.bundle/Experimental.plist
+++ b/ios/chrome/browser/resources/Settings.bundle/Experimental.plist
@@ -56,6 +56,16 @@
 			<key>Type</key>
 			<string>PSToggleSwitchSpecifier</string>
 			<key>Title</key>
+			<string>Force Feed Signin Promo</string>
+			<key>Key</key>
+			<string>ForceFeedSigninPromo</string>
+			<key>DefaultValue</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSToggleSwitchSpecifier</string>
+			<key>Title</key>
 			<string>Always show Follow IPH</string>
 			<key>Key</key>
 			<string>AlwaysShowFollowIPH</string>
diff --git a/ios/chrome/browser/ui/authentication/signin_promo_view_mediator.mm b/ios/chrome/browser/ui/authentication/signin_promo_view_mediator.mm
index aea12dd..d233853 100644
--- a/ios/chrome/browser/ui/authentication/signin_promo_view_mediator.mm
+++ b/ios/chrome/browser/ui/authentication/signin_promo_view_mediator.mm
@@ -14,6 +14,7 @@
 #import "components/prefs/pref_service.h"
 #import "components/signin/public/base/signin_metrics.h"
 #import "ios/chrome/browser/discover_feed/feed_constants.h"
+#import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service.h"
@@ -463,6 +464,13 @@
       return NO;
   }
 
+  // Always show the feed signin promo if the experimental setting is enabled.
+  if (accessPoint ==
+          signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO &&
+      experimental_flags::ShouldForceFeedSigninPromo()) {
+    return YES;
+  }
+
   // Checks if the user has exceeded the max impression count.
   const int maxDisplayedCount =
       accessPoint ==
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm
index abdd5ef..a67efca 100644
--- a/ios/chrome/browser/ui/main/scene_controller.mm
+++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -3239,17 +3239,6 @@
     [sceneController willDestroyIncognitoBrowserState];
   }
 
-  breadcrumbs::BreadcrumbPersistentStorageManager* persistentStorageManager =
-      nullptr;
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)) {
-    breadcrumbs::BreadcrumbManagerKeyedService* service =
-        BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
-            mainBrowserState->GetOffTheRecordChromeBrowserState());
-    persistentStorageManager = service->GetPersistentStorageManager();
-    breakpad::StopMonitoringBreadcrumbManagerService(service);
-    service->StopPersisting();
-  }
-
   // Record off-the-record metrics before detroying the BrowserState.
   if (mainBrowserState->HasOffTheRecordChromeBrowserState()) {
     ChromeBrowserState* otrBrowserState =
@@ -3268,14 +3257,8 @@
   }
 
   if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)) {
-    breadcrumbs::BreadcrumbManagerKeyedService* service =
-        BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
-            mainBrowserState->GetOffTheRecordChromeBrowserState());
-
-    if (persistentStorageManager) {
-      service->StartPersisting(persistentStorageManager);
-    }
-    breakpad::MonitorBreadcrumbManagerService(service);
+    BreadcrumbManagerKeyedServiceFactory::GetForBrowserState(
+        mainBrowserState->GetOffTheRecordChromeBrowserState());
   }
 
   // This seems the best place to deem the destroying and rebuilding the
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index ad5b2e0..790ac1c 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -949,8 +949,6 @@
     { "name": "viasinc.com", "policy": "custom", "mode": "force-https" },
     { "name": "spideroak.com", "policy": "custom", "mode": "force-https", "include_subdomains": true, "pins": "spideroak" },
     { "name": "guidetoiceland.is", "policy": "custom", "mode": "force-https", "include_subdomains": false },
-    { "name": "healthcare.gov", "policy": "custom", "mode": "force-https" },
-    { "name": "www.healthcare.gov", "policy": "custom", "mode": "force-https" },
     { "name": "carbonmade.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "branchtrack.com", "policy": "custom", "mode": "force-https" },
     { "name": "flipagram.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
@@ -959,11 +957,7 @@
     { "name": "www.vino.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "fastmail.com", "policy": "custom", "mode": "force-https" },
     { "name": "woima.fi", "policy": "custom", "mode": "force-https", "include_subdomains": false },
-    { "name": "segurosocial.gov", "policy": "custom", "mode": "force-https", "include_subdomains": false },
-    { "name": "socialsecurity.gov", "policy": "custom", "mode": "force-https", "include_subdomains": false },
-    { "name": "ssa.gov", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "www.captaintrain.com", "policy": "custom", "mode": "force-https" },
-    { "name": "gpo.gov", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "united.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "rememberthemilk.com", "policy": "custom", "mode": "force-https" },
     // END OF LEGACY MANUAL CUSTOM ENTRIES
@@ -1159,8 +1153,6 @@
     { "name": "www.viasinc.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "www.etsy.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "etsysecure.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "18f.gsa.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "my.usa.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "hg.python.org", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "doc.python.org", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "console.python.org", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
@@ -1168,20 +1160,6 @@
     { "name": "pay.ubuntu.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "login.launchpad.net", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "fassadenverkleidung24.de", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "uspsoig.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "notalone.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "aids.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "itdashboard.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "paymentaccuracy.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "cao.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "cfo.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "cio.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "earmarks.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "bfelob.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "max.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "save.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "saveaward.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "ustr.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "landscape.canonical.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "auth.mail.ru", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "e.mail.ru", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
@@ -1198,7 +1176,6 @@
     { "name": "reporturi.io", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "report-uri.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "thundr.eu", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
-    { "name": "www.gpo.gov", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "www.united.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "mobile.united.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
     { "name": "smartphone.continental.com", "policy": "bulk-legacy", "mode": "force-https", "include_subdomains": true },
@@ -1886,7 +1863,6 @@
     { "name": "benjamin.pe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptobin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csuw.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dccode.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dreadbyte.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dylanscott.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "e-kontakti.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -1924,7 +1900,6 @@
     { "name": "wevahoo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zentralwolke.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zhovner.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "acus.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "agrimap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ajouin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atishchenko.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -1935,23 +1910,19 @@
     { "name": "cyprus-company-service.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darkpony.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darom.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "donotcall.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "e-aut.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecg.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exon.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "extendwings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "federalregister.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fedorahosted.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "firma-offshore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freesounding.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freesounding.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ftccomplaintassistant.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getfedora.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getfittedstore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hatoko.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hda.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "helpadmin.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hsr.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iniiter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ionas-law.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "keepa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2013,7 +1984,6 @@
     { "name": "chartstoffarm.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chrisirwin.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "classdojo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumersentinel.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cybozulive.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datasnitch.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dn42.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2606,7 +2576,6 @@
     { "name": "f2f.cash", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "falconvintners.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fangs.ink", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fatherhood.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "feen.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ffbans.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fiftyshadesofluca.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2633,7 +2602,6 @@
     { "name": "haveibeenpwned.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "heftkaufen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "herzbotschaft.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hiv.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hs-group.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "impex.com.bd", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "informnapalm.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2826,7 +2794,6 @@
     { "name": "elitegameservers.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dorianmuthig.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecrimex.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "flra.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fabse.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fotiu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "core.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3113,7 +3080,6 @@
     { "name": "unionstationapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "utonia.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vokeapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitehouse.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wikibooks.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wikimediafoundation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wikinews.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3694,7 +3660,6 @@
     { "name": "moparscape.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "my-pawnshop.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mygov.scot", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nagb.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nagb.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "najedlo.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newmediaone.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3751,7 +3716,6 @@
     { "name": "andreaskluge.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fastaim.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "matrip.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "18f.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "1co-jp.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "1password.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ad-notam.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3795,7 +3759,6 @@
     { "name": "diasp.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dime-staging.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "docket.news", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "econsumer.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elephpant.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elimdengelen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "entersynapse.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3811,7 +3774,6 @@
     { "name": "flamewall.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freelance.boutique", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freifunk-luenen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "frtr.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "g-m-w.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gamingzoneservers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "garbage-juice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3942,7 +3904,6 @@
     { "name": "domodedovo.travel", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dziekonski.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "easykonto.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "edpubs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eeqj.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elitefishtank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "englerts.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -4817,7 +4778,6 @@
     { "name": "stopwoodfin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stressfreehousehold.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "student-scientist.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "studentloans.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "studentresearcher.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "styles.pm", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sulek.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -4946,7 +4906,6 @@
     { "name": "fallenspirits.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faspirits.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faspirits.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fdsys.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "feezmodo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "floridaescapes.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "florismouwen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -6859,7 +6818,6 @@
     { "name": "scriptict.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seanholcroft.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "setfix.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sftool.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shannoneichorn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shome.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sighup.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -7505,7 +7463,6 @@
     { "name": "hugocollignon.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "husakbau.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibarf.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "identitytheft.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idgsupply.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "immortals-co.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "incendiary-arts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8325,7 +8282,6 @@
     { "name": "fsbpaintrock.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fsbturton.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fsm2016.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ftc.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fundacionhijosdelsol.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fundays.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "funi4u.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8907,7 +8863,6 @@
     { "name": "navigate-it-services.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nb6.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nbp.com.pk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ncpw.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ncstep.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nebra.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "neftebitum-kngk.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8983,7 +8938,6 @@
     { "name": "onefour.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oneweb.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oneworldbank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "onguardonline.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oniichan.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "online-wetten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onlinecompliance.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -9221,7 +9175,6 @@
     { "name": "riskmgt.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "riversideauto.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "riyono.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "robodeidentidad.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rocksberg.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rolandreed.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "root.eu.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -9442,7 +9395,6 @@
     { "name": "surgenet.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "survature.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "susastudentenjobs.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sustainability.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sustsol.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "svenskacasino.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swaggerdile.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10406,7 +10358,6 @@
     { "name": "neer.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nelhage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "natenom.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ncpc.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netnodes.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nerdtime.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netsoins.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10918,7 +10869,6 @@
     { "name": "ck.cx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "clanrose.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "closient.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cloud.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "clustermaze.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cmylife.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cocaine-import.agency", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12065,7 +12015,6 @@
     { "name": "hyper-matrix.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hypotecnicentrum.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "i1314.gdn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ic3.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ice.yt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ich-tanke.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ichnichtskaufmann.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12199,7 +12148,6 @@
     { "name": "kisskiss.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kjaer.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kkyy.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "klamathrestoration.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kncg.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "koethen-markt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "komidoc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12513,7 +12461,6 @@
     { "name": "prospanek.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prosperident.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prot.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "protecciondelconsumidor.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proxybay.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prt.in.th", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prxio.site", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12737,7 +12684,6 @@
     { "name": "stephenschrauger.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stephenschrauger.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stitchfiddle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "stopfraud.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "storiesofhealth.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "strangemusicinc.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "streetspotr.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -13208,7 +13154,6 @@
     { "name": "beehive42.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "casbuijs.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "captured-symphonies.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "childreninadversity.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ciphrex.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chicolawfirm.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cbamo.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -13955,7 +13900,6 @@
     { "name": "nationalcrimecheck.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minoris.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ndtmarket.place", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "neglecteddiseases.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mystery-science-theater-3000.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "notify.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nabu-bad-nauheim.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14523,7 +14467,6 @@
     { "name": "weissman.agency", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "world-in-my-eyes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xmonk.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "uscurrency.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wearepapermill.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wobblylang.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sitennisclub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14599,8 +14542,6 @@
     { "name": "alyoung.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airhart.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adventure-inn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "adr.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ada.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abolitionist-society.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ahoynetwork.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abolitionism.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14957,8 +14898,6 @@
     { "name": "exactphilosophy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foxontheinter.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dobrev.family", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foia.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fara.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "flagburningworld.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dintrafic.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "futurenda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15195,7 +15134,6 @@
     { "name": "kngk-azs.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lafeemam.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kuoruan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lep.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kwondratsch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lennier.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "labfox.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15388,7 +15326,6 @@
     { "name": "noclegi-online.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "norrkemi.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oldoakflorist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "opic.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "novavoidhowl.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nwork.media", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nationwidevehiclecontracts.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15535,7 +15472,6 @@
     { "name": "saferedirectlink.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "savingrecipe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qul.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "science360.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schweizerbolzonello.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saferpost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scooterservis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15600,7 +15536,6 @@
     { "name": "smallpath.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spamloco.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slimk1nd.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "standards.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ssky.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sunyanzi.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "starandshield.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15709,7 +15644,6 @@
     { "name": "tursiae.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "transcendmotor.sg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tutorialinux.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vcf.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twee-onder-een-kap-woning-in-delfzijl-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unxicdellum.cat", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vestacp.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15735,7 +15669,6 @@
     { "name": "weibomiaopai.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "voltotc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vedatkamer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vets.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thesehighsandlows.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spron.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wienergyjobs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15842,7 +15775,6 @@
     { "name": "9yw.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "a-rickroll-n.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airedaleterrier.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aging.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0100dev.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0100dev.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abolitionist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15853,7 +15785,6 @@
     { "name": "adelinlydia-coach.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "agfmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abulanov.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alertaenlinea.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "39sihu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "2600edinburgh.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "1kando.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15948,7 +15879,6 @@
     { "name": "asafilm.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aparaatti.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ariacreations.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "askkaren.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asuhe.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0day.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arab.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16008,7 +15938,6 @@
     { "name": "aviationstrategy.aero", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bichonmaltes.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bestgifts4you.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "befoodsafe.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bicha.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "axiomer.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "be-webdesign.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16019,7 +15948,6 @@
     { "name": "asr.solar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bibliaon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atypicom.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "betobaccofree.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "azun.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bastiv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bettolinokitchen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16188,7 +16116,6 @@
     { "name": "citationgurus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "castagnonavocats.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chorkley.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "clinicaltrials.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "codewiz.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ahwah.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chirpstory.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16204,7 +16131,6 @@
     { "name": "chenky.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "clickgram.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "computer-acquisti.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "christophercolumbusfoundation.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "claimit.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cleanexperts.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "corecodec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16299,7 +16225,6 @@
     { "name": "db-works.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "direnv.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberxpert.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dhhs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diferenca.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "develux.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darkstance.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16468,26 +16393,21 @@
     { "name": "equitee.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "filesense.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eventmake.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedjobs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europastudien.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "farmacia.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "federaljobs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "farfetchos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fantopia.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "flooringnightmares.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "earticleblog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "buyaccessible.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eupho.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fixthetimeline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "erstehilfeprodukte.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fix-the-timeline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fix-the-timeline.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fixthetimeline.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fbijobs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "easyocm.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.hr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fitness.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "famdouma.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "firesofheaven.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etath.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16497,7 +16417,6 @@
     { "name": "europapier.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foxhound.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.si", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foodsafety.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.rs", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.ba", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16534,7 +16453,6 @@
     { "name": "fzslm.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "galgopersa.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "floth.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fhfaoig.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gaite.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gabi.soy", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "galgoafegao.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16547,7 +16465,6 @@
     { "name": "friedhelm-wolf.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "friendlyfiregameshow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fresh.co.il", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "freshempire.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freelanced.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gbcsummercamps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "g3rv4.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16573,7 +16490,6 @@
     { "name": "getpake.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datamatic.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getfestify.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "globalhealth.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "g-rickroll-o.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "graphsearchengine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geschmacksache.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16621,7 +16537,6 @@
     { "name": "habtium.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gruene-wattenscheid.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "group4layers.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "governmentjobs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grumpy.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "green-care.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "helencrump.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16632,7 +16547,6 @@
     { "name": "habtium.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "handysex.live", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "habbos.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hhs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "guso.gq", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "halongbaybackpackertour.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "heimprofis.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16693,7 +16607,6 @@
     { "name": "heptner24.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hybridworx.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huchet.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fws.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ilgi.work", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huodongweb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "honovere.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16760,7 +16673,6 @@
     { "name": "internaut.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "interracial.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ingesol.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "isitdoneyet.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "infinity-freedom.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ithakama.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ipv4.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17004,7 +16916,6 @@
     { "name": "megaplonk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maxwellflynn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "magicbroccoli.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "marine.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marriage-shrine.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mediaarea.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maservant.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17224,7 +17135,6 @@
     { "name": "ning.so", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paino.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "p-rickroll-o.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "onrr.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pastormaremanoabruzes.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oeko-bundesfreiwilligendienst.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panpsychism.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17352,7 +17262,6 @@
     { "name": "purplepr.bg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "repugnant-conclusion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "reproductive-revolution.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "reaganlibrary.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rc-offi.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "remedica.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "professors.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17494,7 +17403,6 @@
     { "name": "shiftdevices.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "snekchat.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seobot.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "smartcheck.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shaken110.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shadowguardian507.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skidstresser.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17554,7 +17462,6 @@
     { "name": "srcc.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "southafrican.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stadt-apotheke-muensingen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "stopbullying.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spresso.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spornkuller.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "surasak.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17585,7 +17492,6 @@
     { "name": "studentrdh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stamboomvanderwal.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "subdev.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "surgeongeneral.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sternen-sitzberg.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sorincocorada.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "technologysi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17625,7 +17531,6 @@
     { "name": "tequilazor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thetruthhurvitz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "technoscoots.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "therealcost.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sutas.market", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tcacademy.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swisslinux.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17642,12 +17547,10 @@
     { "name": "timdoug.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sylvangarden.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sweetlegs.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tobacco.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "taqun.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thailandpropertylistings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "todapolitica.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "techreview.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thisfreelife.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thecrochetcottage.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thehighersideclothing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tampabaybusinesslistings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17733,7 +17636,6 @@
     { "name": "v2bv.win", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twelverocks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twodadsgames.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "usajobs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ttuwiki.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tonyw.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ttuwiki.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17752,7 +17654,6 @@
     { "name": "twee-onder-een-kap-woning-in-veendam-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tweeondereenkapwoningverkopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tussengelegenwoningverkopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "usmint.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twee-onder-een-kap-woning-in-alphen-aan-den-rijn-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twee-onder-een-kap-woning-in-de-friese-meren-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twotube.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17773,7 +17674,6 @@
     { "name": "vega.dyndns.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vintagetrailerbuyers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "v-u-z.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vaccines.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "victordiaz.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "voidpay.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vicianovi.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17831,7 +17731,6 @@
     { "name": "weimaraner.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "westhighlandwhiteterrier.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ujob.com.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whistleblower.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vjeff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "voodoochile.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webcontentspinning.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17857,7 +17756,6 @@
     { "name": "wyam.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "w3n.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wahrnehmungswelten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wrp.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wallabag.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vrijstaandhuis-in-brielle-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "widsl.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18186,8 +18084,6 @@
     { "name": "ajetaci.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bassblog.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bestellipticalmachinereview.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bjs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "biopreferred.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bblove.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "batook.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "belgien.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18351,7 +18247,6 @@
     { "name": "collbox.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "colincampbell.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "carwashvapeur.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "clintonlibrary.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cashmyphone.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cerpa.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cioconference.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18419,7 +18314,6 @@
     { "name": "csgf.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dearfcc.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conkret.mobi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "data.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "criminal-attorney.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defendinnovation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "danielmoch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18562,7 +18456,6 @@
     { "name": "dirips.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-kahlen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-liebeskind.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "endingthedocumentgame.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dotspaperie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektrofinke.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-hammes.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18653,7 +18546,6 @@
     { "name": "faber.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fernandobarata.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "f43.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fcsic.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fairedeseconomies.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "centralfor.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fiareapp.red", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18691,7 +18583,6 @@
     { "name": "filey.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frattaroli.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "employeestore.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foodsafetyworkinggroup.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foxmay.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "famio.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freelifer.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18710,7 +18601,6 @@
     { "name": "fpersona.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fedo.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forellenpark.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foodsafetyjobs.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "funideas.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "froggitt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fritteli.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18826,7 +18716,6 @@
     { "name": "hackbubble.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hawk-la.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grieg.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hearttruth.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "heisenberg.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "friendship-quotes.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gymkirchenfeld.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18989,7 +18878,6 @@
     { "name": "intelbet.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inplacers.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jeremycantu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fmi.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huangjingjing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jazzy.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jimbraaten.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19006,7 +18894,6 @@
     { "name": "josericaurte.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jphandjob.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jplesbian.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ftcefile.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idinby.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "how2fsbo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joshuajohnson.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19167,7 +19054,6 @@
     { "name": "lidl-gewinnspiel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "loganparkneighborhood.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "laskas.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "locatorplus.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lowson.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lostwithdan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lilapmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19235,7 +19121,6 @@
     { "name": "mcynews.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "makinen.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "memory-plus-180.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "medlineplus.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "matthew-carson.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "matillat.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kinderopvangengeltjes.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19395,7 +19280,6 @@
     { "name": "noncombatant.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nellen.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nobleparkapartments.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nlm.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nmueller.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "northbrisbaneapartments.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "moonmelo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19486,7 +19370,6 @@
     { "name": "okad-center.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "okad.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "order.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pandemicflu.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pakitow.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "payfazz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panama-gbs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19586,8 +19469,6 @@
     { "name": "pseudo.coffee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pourlesenfants.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paymon.tj", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pregunteleakaren.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "prc.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "polarityschule.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "obscur.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prokop.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19739,7 +19620,6 @@
     { "name": "saunahats.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scottnicol.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scenicbyways.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sciencebase.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "salon-minipli.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rooneytours.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "security.love", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20054,7 +19934,6 @@
     { "name": "tsdom.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "toutenmusic.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tranglenull.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ucrdatatool.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "todaymeow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tubanten.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "trewe.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20266,7 +20145,6 @@
     { "name": "yin.roma.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xperiacodes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zenwears.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "watermonitor.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yugege.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zenfusion.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0x00ff00ff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20517,7 +20395,6 @@
     { "name": "dingcc.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "disco-crazy-world.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "discoveryballoon.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "docline.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "does.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dominomatrix.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dooby.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20667,7 +20544,6 @@
     { "name": "iconomi.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "icpc.pp.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "id7.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "idtheft.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imga.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "immobilien-badlippspringe.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "impactfestival.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20865,7 +20741,6 @@
     { "name": "net-navi.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newspsychology.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "niagara.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nicic.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ninaundandre.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nirudo.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nodum.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21184,7 +21059,6 @@
     { "name": "windelnkaufen24.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wineworksonline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "witneywaterpolo.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wlci.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wmkowa.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wolfram.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wollekorb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21352,7 +21226,6 @@
     { "name": "active-escape.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "addicional.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adlerweb.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "admongo.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adrafinil.wiki", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adriancohea.ninja", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "advantagehomeexteriors.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22576,7 +22449,6 @@
     { "name": "hrtraining.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "httpsecured.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huangguancq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "huduser.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hulsoft.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "human-clone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "humanenrich.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22608,7 +22480,6 @@
     { "name": "iddconnect.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idealmoto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idealwhite.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "idmanagement.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iemas.azurewebsites.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ignatovich.by", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ignatovich.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23121,7 +22992,6 @@
     { "name": "mercedes-ig.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mercury-studio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mescaline.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mesh.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meshlab.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "metacode.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meterhost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23408,7 +23278,6 @@
     { "name": "osha-kimi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oshanko.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oshinagaki.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oshrc.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oswaldsmillaudio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "otr.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ouimoove.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25635,7 +25504,6 @@
     { "name": "geektopia.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gmx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gmx.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ginniemae.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gelis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gottfridsberg.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fysiovdberg.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25865,7 +25733,6 @@
     { "name": "itsdcdn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hydroagro.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itsmejohn.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "itis.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iskai.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ichasco.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "islief.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26466,7 +26333,6 @@
     { "name": "nsbfalconacademy.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oklahomanotepro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netbows.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nlrb.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ojaioliveoil.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "omyogarishikesh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "normankranich.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26754,7 +26620,6 @@
     { "name": "richardson.engineering", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "revisionnotes.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rednoseday.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "registertovoteflorida.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rekorsanat.com.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "regime-maigrir-vite.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rationem.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26786,7 +26651,6 @@
     { "name": "reimann.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "retetenoi.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qscloud.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "psa.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rolandslate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rootscope.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rosehosting.reviews", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27728,7 +27592,6 @@
     { "name": "annonasoftware.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alqassam.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alle.bg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "acwi.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alastairs-place.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alexperry.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amadilo.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28071,7 +27934,6 @@
     { "name": "deude.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doctorsonmaps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "donhoward.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dotgov.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "do-it.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "domainelaremejeanne.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "downtimerobot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28779,7 +28641,6 @@
     { "name": "nba2k.com.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nba2k.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nba2k.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nic.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nickcleans.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "neojo.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "n4v.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28817,7 +28678,6 @@
     { "name": "mireiaseuba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "orangecomputers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "orleika.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oversight.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "opsnotepad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "owl.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nephelion.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28969,7 +28829,6 @@
     { "name": "reignsphere.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "replaceits.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "redgatesoftware.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "regulations.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "regnix.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rebirthia.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "raykitchenware.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29009,7 +28868,6 @@
     { "name": "safegold.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rudrastyh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "roulons-autrement.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pretrialservices.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "romanticschemermovie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "s3gfault.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rocketgnomes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30327,11 +30185,9 @@
     { "name": "nkautoservice.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noyocenter.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuamooreaindonesia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "obamalibrary.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "obrienlab.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "octohedralpvp.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "officium.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ogis.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ohchouette.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ohd.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "okanaganrailtrail.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30550,7 +30406,6 @@
     { "name": "andrewdaws.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "angelic47.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "annrusnak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "anstaskforce.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "baconate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bageluncle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "baglu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31191,7 +31046,6 @@
     { "name": "getyourlifestraight.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ggrks-asano.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ggs-marschallstrasse.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ghi.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "giftedconsortium.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gilangcp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "giochistem.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31589,7 +31443,6 @@
     { "name": "nickguyver.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nien.gq", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nienkeslop.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nixonlibrary.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nlfant.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nodefiles.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noglobalwarrants.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31827,7 +31680,6 @@
     { "name": "selectcertifiedautos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "selkiemckatrick.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sellguard.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sentinel.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sergos.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "serve-a.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "servea.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32191,7 +32043,6 @@
     { "name": "91travel.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "9iwan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aardvarksolutions.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "abandonedmines.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abidinginhesed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abinyah.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "accoun.technology", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32490,7 +32341,6 @@
     { "name": "mediablaster.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mediagrand.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mediajurnal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "medicalcountermeasures.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "melerpaine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mes10doigts.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "messagescelestes-archives.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33411,7 +33261,6 @@
     { "name": "idraulico.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ienakanote.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ifyou.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ignet.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ijunohana.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ikenmeyer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ikinokori-marketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -33500,7 +33349,6 @@
     { "name": "junespina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "junglejackscastles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "justbouncecastles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "justice.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "juventusclublugano.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "juwelierstoopman.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jvbouncycastlehire.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34054,7 +33902,6 @@
     { "name": "unobrindes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unworthy.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usbevents.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usds.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usualbeings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "v-desk.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "v-tek.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34296,7 +34143,6 @@
     { "name": "brickwerks.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bridgeglobalmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "btc2secure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "budgetlob.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buildplease.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buildrightbuildingservicesltd.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "businessetmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34332,7 +34178,6 @@
     { "name": "creativesprite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creativewolf.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crip-usk.ba", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "crt2014-2024review.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cryp.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crypt.is-by.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptolosophy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34667,7 +34512,6 @@
     { "name": "rxcheck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ryu22e.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sabrinajoiasprontaentrega.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "salmonrecovery.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "salon-claudia.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sambaa.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sarkarischeme.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34975,7 +34819,6 @@
     { "name": "expresstinte.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eyelashconcept.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "famer.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "federalreserve.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "felixcrux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fetlife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filebox.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35056,7 +34899,6 @@
     { "name": "ims-sargans.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inixal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inkvisual.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "isotope.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "isz.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "it-jobbank.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "itfensi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35309,7 +35151,6 @@
     { "name": "wienerwichtelchallenge.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wilcodeboer.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wildbirds.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wildlifeadaptationstrategy.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wk577.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wnmed.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wolferstetterkeller.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35392,7 +35233,6 @@
     { "name": "bilsho.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bipyo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bleep.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "blm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluefinger.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bngs.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bologna-disinfestazioni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35503,7 +35343,6 @@
     { "name": "geekshirts.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geekz.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gensenwedding.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "geocommunicator.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getcleartouch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getticker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "giardinaggio.napoli.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35789,7 +35628,6 @@
     { "name": "uel-thompson-okanagan.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unblocked.vc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unsacsurledos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "utahfireinfo.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vagaerg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vagaerg.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "varcare.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35894,7 +35732,6 @@
     { "name": "amalficoastchauffeur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amalfitabula.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amauf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "america.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ameriikanpoijat.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amielucha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ammanagingdirectors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35990,7 +35827,6 @@
     { "name": "ballinarsl.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bamboorelay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "banduhn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "banknet.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baodan666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baptistedeleris.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "barabrume.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36081,7 +35917,6 @@
     { "name": "bsd-box.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bsdes.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bserved.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "budget.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bulario.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "burtplasticsurgery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buryit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36206,7 +36041,6 @@
     { "name": "cueca.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cumplegenial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cupcakesandcrinoline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cupcao.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cybercrew.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberseguranca.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyelint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36376,17 +36210,14 @@
     { "name": "farmaciamedicom.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastvistorias.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faui2k17.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fbiic.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fbtholdings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fedemo.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "federatedbank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedpartnership.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feeriedesign-event.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feetpa.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "felger-times.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feudaltactics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feuerwehr-mehring.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ffiec.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filanthropystar.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "finchnest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fingerscrossed.style", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36415,7 +36246,6 @@
     { "name": "focuspointtechnologies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forbid.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "force-des-maths.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fordlibrarymuseum.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forecastcity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forfunssake.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forpc.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36438,7 +36268,6 @@
     { "name": "generalinsuranceservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "generationsweldom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geojs.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "georgewbushlibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getenergized2018.kpn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getpagespeed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getteamninja.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36460,7 +36289,6 @@
     { "name": "grahamcluley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grandcafetwist.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gratiswifivoorjegasten.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "greatagain.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greenitpark.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grengine.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grexx.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36485,9 +36313,6 @@
     { "name": "hashimoto-jimusho.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hayleishop.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdnastudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "health.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "healthfinder.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "healthypeople.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hearty.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hearty.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hebocon.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36495,7 +36320,6 @@
     { "name": "heinemann.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helpfute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helpverif.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpwithmybank.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "henkboelman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hermann.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heute.training", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36674,7 +36498,6 @@
     { "name": "laut.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "law.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lc-cs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lcrmscp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "le-drive-de-just-vet.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leadquest.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "learnforestry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36778,7 +36601,6 @@
     { "name": "minu.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mirrorsedgearchive.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mirrorsedgearchive.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mitigationcommission.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mixer.cash", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mjscustomcreations.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlmjam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36827,8 +36649,6 @@
     { "name": "nakada4610.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "namskra.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nataniel-perissier.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nationalbank.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nationalbanknet.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nay.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nbad.al", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nc-beautypro.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36878,7 +36698,6 @@
     { "name": "oliviervaillancourt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ollies.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onahonavi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ondcp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oneidentity.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onetly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "online-calculator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36896,7 +36715,6 @@
     { "name": "oregonmu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orum.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osla.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "osmre.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otus-magnum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ouowo.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pablo.scot", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37057,7 +36875,6 @@
     { "name": "schwerkraftlabor.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scib.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scicomm.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "scijinks.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "screenmachine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sdxcentral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sean-wright.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37277,7 +37094,6 @@
     { "name": "upperroommission.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urbanmic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urth.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usbr.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "utcast-mate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "utgifter.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vantagepointpreneed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37332,7 +37148,6 @@
     { "name": "weld.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "werkenvoorphiladelphia.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wezl.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitehousedrugpolicy.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whocybered.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "willowtree.school", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wisak.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37414,8 +37229,6 @@
     { "name": "8da2018.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "8da999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "8dabet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "9-11commission.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "911commission.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aacfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abchelp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abcstudio.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37664,7 +37477,6 @@
     { "name": "fabriziocavaliere.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fairssl.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastlike.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "federalreserveconsumerhelp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ferienhaeuser-krummin.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ferry.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fiery.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37821,7 +37633,6 @@
     { "name": "magnetpass.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maioresemelhores.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "make-your-own-song.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "malwareinvestigator.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marcaixala.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "markhenrick.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marloncommunications.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38197,7 +38008,6 @@
     { "name": "ynnovasport.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "you.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yousei.ne.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "youth.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yumli.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "z33.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zanzabar.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38451,7 +38261,6 @@
     { "name": "fansided.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faxvorlagen-druckvorlagen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fdn.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "feb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "felixgenicio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feriespotter.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feuerwehr-vechta.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38498,7 +38307,6 @@
     { "name": "h1ctf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hackerschat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hallettxn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "harp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "haus-zeitlos.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hayvid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdritalyphotos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38515,7 +38323,6 @@
     { "name": "holzundgarten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "honda-centrum.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hotelcoliber.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hru.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hundesport-psvhalle.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hustle.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "i-logic.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38877,7 +38684,6 @@
     { "name": "urlaub-busreisen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urltodomain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usa-greencard.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usalearning.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "useevlo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uwekoetter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "valtlai.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39015,7 +38821,6 @@
     { "name": "animojis.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "annmariewaltsphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ansgar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "applicationmanager.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appshuttle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arno-klein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arno-klein.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39103,7 +38908,6 @@
     { "name": "croncron.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cursosgratuitos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberatlantis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cybercareers.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daniel-milnes.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danwolff.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dataregister.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39155,7 +38959,6 @@
     { "name": "eliminercellulite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elisabethrene.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emmababy420.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "employeeexpress.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enbecom.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "encrypt.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "entercenter.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39175,7 +38978,6 @@
     { "name": "faisalshuvo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "familyworld.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faraonplay5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fegli.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "final-expense-quotes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "financepark.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "finnwea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39354,7 +39156,6 @@
     { "name": "narenderchopra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nationalhomequotes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nationwiderealtyinvestors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nbib.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nbrain.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neil-barrett.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neil-barrett.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39516,7 +39317,6 @@
     { "name": "teenerotic.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telamon.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telecharger-itunes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "telework.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teltru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tempflix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tetrafinancial-manufacturing-industrial-equipment-financing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39555,7 +39355,6 @@
     { "name": "unedouleur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unstamps.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usage.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usastaffing.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uwvloereruit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vapecrunch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "venenum.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40010,7 +39809,6 @@
     { "name": "boke112.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bondtofte.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "booksinthefridge.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bpa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brackets-salad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bueroshop24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caiwenjian.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40367,7 +40165,6 @@
     { "name": "9y.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a-msystems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acerentalandsales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "acquisition.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adrup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advertisemant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aep-digital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40457,7 +40254,6 @@
     { "name": "celcomhomefibre.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cerivo.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ceskepivnisety.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cfda.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chat2.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chrisbryant.me.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chundelac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40524,7 +40320,6 @@
     { "name": "emobilityforum.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "esgr.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "esolitos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "esrs.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "etd-glasfaser.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ether.school", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exoten-spezialist.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40535,8 +40330,6 @@
     { "name": "familie-poeppinghaus.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "farrel-f.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "farrel-f.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedbizopps.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedshirevets.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feuerloescher-arten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feuerloescher-test.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ffw-zeven.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40559,7 +40352,6 @@
     { "name": "forum-heg.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fotoflits.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frettirnar.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fsrs.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ftptest.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fuck-your-false-positive.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fulltxt.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40782,7 +40574,6 @@
     { "name": "plastovelehatko.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plob.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plumbingglenvista.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pmf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "poloniex.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "porkel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "porte.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40824,7 +40615,6 @@
     { "name": "rondreis-schotland.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ronnylindner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ruckzuck-privatpatient.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "safeocs.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sailingonward.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "salland1.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saltireconservation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40913,7 +40703,6 @@
     { "name": "ubis.company", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ubis.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "un-framed.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unlocktalent.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unmarkdocs.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urltell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vasel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -41153,7 +40942,6 @@
     { "name": "deliciousmedia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "derattizzazioni.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diesteppenreiter.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "digitalliteracy.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dinheirolucrar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dirba.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "disciplina.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -41417,7 +41205,6 @@
     { "name": "nevermore.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nf4.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nibo.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nicsezcheckfbi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "niffler.software", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nodecraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noelclaremont.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42189,7 +41976,6 @@
     { "name": "97bros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "9won.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a1moldsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "abilityone.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ableprop.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "accessoirescheveuxchic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acorntreecare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42271,14 +42057,12 @@
     { "name": "century-group.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cernakova.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "certevia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cftc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "challstrom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "charlespitonltd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "charlotteswimmingpoolbuilder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chartkick.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cheapcaribbean.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chenkun.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "childstats.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ci-suite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cinay.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cineplex.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42288,10 +42072,8 @@
     { "name": "codeproxy.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codestep.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cognitip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "collegenavigator.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "collegeprospectsofcentralindiana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "comercialtpv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "comptrollerofthecurrency.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "concertsto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "concreterepairatlanta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "connexas.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42400,7 +42182,6 @@
     { "name": "floj.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flosserver.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flurp.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fmc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "folk.as", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foreveryoung.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "francois-gaillard.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42449,7 +42230,6 @@
     { "name": "haoqi.men", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hardloopfysio.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hausarztpraxis-linn.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "healthit.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hearty.org.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heatingandairconditioningdallastx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hejianpeng.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42529,7 +42309,6 @@
     { "name": "langzijn.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laplacesicherheit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lars.moi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lca.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lcars-sv.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lcy.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lcybox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42613,7 +42392,6 @@
     { "name": "narakenkoland.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naturblogg.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naturesbest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nea.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nesbase.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "net-rencontre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newtonproject.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42633,7 +42411,6 @@
     { "name": "nosecrets.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "notora.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noxi.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nrc-gateway.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nur.berlin", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nvl-game.tokyo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nwr-waffenbuch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42715,7 +42492,6 @@
     { "name": "schur-it.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sclns.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scripter.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sec.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "secteer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seosec.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "septicrepairspecialists.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42806,7 +42582,6 @@
     { "name": "vicjuwelen-annelore.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "videosdiversosdatv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viralsouls.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vistacampus.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visualdrone.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viyf.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vmzone.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42911,7 +42686,6 @@
     { "name": "aprikaner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aproposcomputing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arise19.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "arts.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asianbet77.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assistenzalavatrice.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asws.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43054,7 +42828,6 @@
     { "name": "filmitis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filmsite-studio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fimsquad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fireleadership.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstinnovation.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flight.school", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flixports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43683,7 +43456,6 @@
     { "name": "bordadoenpedreria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brand-foo.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brand-foo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bsee.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buchwegweiser.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buurtpreventiefraneker.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bvgg.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43960,7 +43732,6 @@
     { "name": "jaion.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jala.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jamesrobertson.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jem.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jobify.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joeyfelix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johnbpodcast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43994,7 +43765,6 @@
     { "name": "kualiti.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kuhne-electronic.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kvnsport.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lacoast.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lagout.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lahnau-akustik.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lakeoswegotowncar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44047,7 +43817,6 @@
     { "name": "metaword.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "metaword.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mfgusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mgi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "michaels-homepage-service.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mikeguy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "miku.party", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44211,7 +43980,6 @@
     { "name": "redweek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "repo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "restaurantemiperu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "restorethegulf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rftoon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rhd-instruments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rhd-instruments.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45243,7 +45011,6 @@
     { "name": "certifix.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cheolguso.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chif16.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "childwelfare.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chrismorgan.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cisum-cycling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cna5.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45324,7 +45091,6 @@
     { "name": "hps.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "httpsiseasy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hveradistributions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ibwc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icake.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ignitedlocal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "incompliance.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45664,7 +45430,6 @@
     { "name": "cloudns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "colinsnaith.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "collectorsystems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "commerce.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "comocurarlagastritis24.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "compassfinance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "conectumfinanse.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46022,7 +45787,6 @@
     { "name": "nmontag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "notsafefor.work", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ntwt.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "occ.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oculus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oldprop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oliveoilschool.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47351,7 +47115,6 @@
     { "name": "otakuyun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ottoversand.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "our-box.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ourdocuments.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p1cn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pact2017.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pagalworld.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47965,7 +47728,6 @@
     { "name": "huntsmansecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huonit.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hyperstack.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "iaf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ibodyiq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "idratherbequilting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ifxd.bid", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48104,7 +47866,6 @@
     { "name": "noret.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nova-kultura.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nstrust.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "obamawhitehouse.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oceanlord.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oenings.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "offertegiuste.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48372,7 +48133,6 @@
     { "name": "amateurradionotes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amionvpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ankitpati.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aoa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aqdun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arbeitsch.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "architectryan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48435,7 +48195,6 @@
     { "name": "crgalvin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cursosforex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cursossena.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cybercrime.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cypherpunk.observer", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "denwauranailab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devnull.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50435,7 +50194,6 @@
     { "name": "wangwill.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wayfairertravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weather-schools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "weather.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webgap.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "werkslimreisslim.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "westernfrontierins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50587,7 +50345,6 @@
     { "name": "dive-japan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dlcwilson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dojozendebourges.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "doleta.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "domwkwiatach.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dongjingre.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dostalsecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50603,7 +50360,6 @@
     { "name": "eco2u.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "efipsactiva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ekostrateg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "elderjustice.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eletor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eletor.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eliaskordelakos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50623,7 +50379,6 @@
     { "name": "faidatefacile.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fantasticservicesgroup.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faultlines.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fbi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feeeei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feuerwehr-gebirge.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "finkmartin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50637,7 +50392,6 @@
     { "name": "freebies.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freesslcertificate.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frownonline.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frpg.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fs-g.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "futaba-works.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "g-ds.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50662,7 +50416,6 @@
     { "name": "ilovethiscampsite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "im-haus-sonnenschein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "info-screen-usercontent.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "interpol.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "invinoaustria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "invinoaustria.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ipid.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50679,7 +50432,6 @@
     { "name": "jonasled.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joompress.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jtconsultancy.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jwod.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "k-bone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kalkulacka-havarijni.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kanzlei-gaengler.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50712,7 +50464,6 @@
     { "name": "llemoz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loanreadycredit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "longtermcare.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loteamentomontereiitu.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lovemanagementaccounts.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lsscreens.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50757,22 +50508,17 @@
     { "name": "nefro-cme.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neheim-huesten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neuber.uno", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nfpors.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ngt.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nifc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nihtek.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ninetailed.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nixtest.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nkforum.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "northcreekresort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ntsb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nvtc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ocni-ambulance-most.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "okurapictures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oldsticker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oldstmary.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olympeakgaming.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "osti.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ourladymountcarmel.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ourladyofcalvary.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ourladyoftheassumptionchurch.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50790,23 +50536,18 @@
     { "name": "pornsocket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pracevjihlave.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "practisforms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "presidio.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prihatno.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proeflokaalbakker.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "progresswww.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "projectsafechildhood.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "promods.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qtmsheep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "raspitec.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "razvanburz.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "realpropertyprofile.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rediverge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "regeneo.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "reginfo.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reifr.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "responsepartner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "richardfeinbergdds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rocis.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rokass.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rteguide.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rteworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50823,11 +50564,9 @@
     { "name": "schlarb.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schneidr.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schwarz-gelbe-fuechse.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "scra.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sebastian-tobie.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sendtrix.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "serinamusic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "servicemembers.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sewa.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sfg-net.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sfg-net.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50838,12 +50577,10 @@
     { "name": "silica-project.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "silica-project.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sinfonietta-meridiana.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "smokefree.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soontm.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sopo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sotai.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "spartacuslife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "spectrum.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "st-bede.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "steemyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stfrancisnaugatuck.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50875,11 +50612,7 @@
     { "name": "tradernet.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelemy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "treussart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tribaljusticeandsafety.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trix360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usaseanconnect.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usdoj.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "userra.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ussst.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ustugov.kiev.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ustugova.kiev.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50901,9 +50634,7 @@
     { "name": "weems.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whirlpool.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whiskygentle.men", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitehouseconferenceonaging.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "winningattitudeawards.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "worker.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyydsb.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyydsb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyydsb.xin", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50917,7 +50648,6 @@
     { "name": "xn--ehqw04eq6e.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "youpickfarms.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "your-waterserver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "youthrules.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yxs.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zeibekiko-souvlaki.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zirka24.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51393,7 +51123,6 @@
     { "name": "888funcity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "888funcity.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a-invest.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "acl.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acscbasket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "afwd.international", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahawkesrealtors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51410,7 +51139,6 @@
     { "name": "alieke.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allbursaries.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alpinehighlandrealty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "anchorit.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andreasmuelhaupt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andrejstefanovski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andrelauzier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51422,7 +51150,6 @@
     { "name": "aranchhomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "architectureandgovernance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arizonahomeownerinsurance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "arm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aromatlas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artfabrics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asiinc-tex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51430,7 +51157,6 @@
     { "name": "atelierhsn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atisystem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atlasbrown.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "atvsafety.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audiobookboo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audreyjudson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aurelieburn.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51558,7 +51284,6 @@
     { "name": "cowo.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coxcapitalmanagement.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cpasperdu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cpsc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cr9499.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cra-bank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cra-search.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51623,7 +51348,6 @@
     { "name": "drlinkcheck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dronova-art.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drsamuelkoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "drywallresponse.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dtoweb.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dvipadmin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dynamicsretailnotes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52034,8 +51758,6 @@
     { "name": "playcollect.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "poc88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pogetback.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "poolsafely.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "poolsafety.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pooltools.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "poorclarepa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pornovk.xxx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52067,7 +51789,6 @@
     { "name": "realestatemarketingblog.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "realtygroup-virginia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "realtyink.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "recalls.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "regionalgrowth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "remarketable.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "remiafon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52093,8 +51814,6 @@
     { "name": "rutika.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sadhana.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saechsischer-christstollen.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "saferproduct.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "saferproducts.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safetyworkkits.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sainthelena-centersquare.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saintisidorecyo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52138,7 +51857,6 @@
     { "name": "sebepoznani.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "securityescrownews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "securityindicators.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "seguridadconsumidor.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "segurosdecarroshialeah.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "segurosdevidamiami.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seniorhomepurchaseprogram.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52190,7 +51908,6 @@
     { "name": "stantabler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "starttls-everywhere.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "static.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stbartholomewmanchester.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stbl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stcatharine-stmargaret.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -53510,7 +53227,6 @@
     { "name": "robinfrancq.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rootpigeon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rostros.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rowancountync.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "royalbeautyclinic.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "roygerritse.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rs-maschinenverleih.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54500,7 +54216,6 @@
     { "name": "heroco.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hervespanneut.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "himiku.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "history.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hnrk.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hochdorf-tennis.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoge.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54547,7 +54262,6 @@
     { "name": "intr0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intrigue3d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ionspin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "iprcenter.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "irisdesideratum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "itinthebubble.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iwatchcops.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55136,7 +54850,6 @@
     { "name": "balter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bananice.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bani99.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bankanswers.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bariumoxide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baumkuchen-aus-dresden.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baza-gai.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55289,11 +55002,9 @@
     { "name": "csadc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "csasummit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "csasummit.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "csosa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cube.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "curlify.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cvtemplatemaster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cwc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberbot.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberdyne.llc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "d7211.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55369,7 +55080,6 @@
     { "name": "dutchfoodie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dynocc.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "e-sushi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eac.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "easypayments.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "echarity.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecp.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55430,7 +55140,6 @@
     { "name": "fosterpark.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frasch-umzuege.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frau-pusteblu.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freeministryresources.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freetaxusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "friplay.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55836,7 +55545,6 @@
     { "name": "osolutionscorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ostachstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otisko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ots.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "outfit-weimar.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "outincanberra.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "overlandireland.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55859,7 +55567,6 @@
     { "name": "peckcloths.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pencil2d.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "penzionvzahrade.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pepfar.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peppelmedi.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "performancegate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "permaseal.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55964,7 +55671,6 @@
     { "name": "schmatloch.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schmidtlohwasser.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schonstedt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "science.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sehablazolano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sek.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sektor.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -56015,7 +55721,6 @@
     { "name": "springtxcarpetcleaning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sqlbi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sqprod.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ssab.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "st-tir-pln.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stahlfeuer-ofenwerkstatt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "star.garden", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -56631,7 +56336,6 @@
     { "name": "eromond.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "espacelanguetokyo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "event-fullyyours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "everify.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "expii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "extradiely.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "face-fashion.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57084,7 +56788,6 @@
     { "name": "mukyu.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "murphycraftbeerfest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mvbug.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mycreditunion.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nailsart.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "napkins-wholesale.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "napkins-wholesale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57094,7 +56797,6 @@
     { "name": "napkins-wholesale.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nasosvdom.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nauris.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ncua.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nebras.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "networkhane.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "new-vip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57215,7 +56917,6 @@
     { "name": "unicmotos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unkn0wncat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "upcloud.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "uscis.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "valuehost.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "veggiesecret.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vexsoluciones.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58778,7 +58479,6 @@
     { "name": "diagnoseo.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diagnoseo.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "die-machons.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "distracteddriving.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doda.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dollchan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doubledash.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58950,7 +58650,6 @@
     { "name": "ruffinstorage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "runningrabb.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ryanparman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "safercar.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sailbookers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanqinyinshi.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "satserwis.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59094,7 +58793,6 @@
     { "name": "dvlot.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ehorizon.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "embsaypreschool.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ems.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ergoterapeutas.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ert.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "essencespresso.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59242,7 +58940,6 @@
     { "name": "runner.az", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "s-kanbanya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saberhortifruti.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "safertruck.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scottdunn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seberova.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "secard.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59317,7 +59014,6 @@
     { "name": "716227.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "716331.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7pb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "911.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "933325.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aattrans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adaptiveicons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59397,7 +59093,6 @@
     { "name": "dhelixnet.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "die-pleners.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "directscripts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "distraction.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmoj.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dreamdestine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drgerthplasticsurgery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59424,7 +59119,6 @@
     { "name": "feiya.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feldbogenclub-hamburg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flexve.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "floodsmart.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "floristmou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forthetoys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "founderio.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59432,7 +59126,6 @@
     { "name": "gamejobs.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "garazskapuszereles.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geekbundle.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "geomac.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "germanmasterpainters.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gervais-avocat.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geteventbox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59643,7 +59336,6 @@
     { "name": "vygeja.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wearepapermill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "website-traffic.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wgdp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whatsthisword.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wir-machen-druck.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "with.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60180,7 +59872,6 @@
     { "name": "beboldpr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bellware.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "belmarresort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "benefits.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "benefitsbookcase.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bensoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "benzina.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60290,7 +59981,6 @@
     { "name": "criptocert.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crsoresina.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cryobiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cttso.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cubiest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cuchichi.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cuddlecat.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60443,7 +60133,6 @@
     { "name": "goodiesoft.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goonfleet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gotrek.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "govloans.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gpccp.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greta-birkner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gridpack.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60663,7 +60352,6 @@
     { "name": "naradiehusqvarna.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naradiemakita.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "natevolker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nationalresourcedirectory.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nch.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ndvr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nedzadalibegovic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60682,11 +60370,9 @@
     { "name": "norrlandsbilverkstad.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "notes24x7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noticiasdetv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nrd.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nsnsp.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nspawn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "numo.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nwtrb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nyerjenaheraval.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nyzed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "o0c.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60996,7 +60682,6 @@
     { "name": "touchtunesnz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tozdev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tpastream.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trafficsafetymarketing.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transparent.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tratamientodelvitiligo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trattamentocotto.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61363,7 +61048,6 @@
     { "name": "pentagonreviewcenter.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pirapiserver.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plumbingkingsllc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pnnl.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "po0k.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "post.monster", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "postawnasiebie.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61673,7 +61357,6 @@
     { "name": "artigianociao.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "associatedwomenshealthcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asu.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "atf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "athenacle.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audioboom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auto-i-dat.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62398,7 +62081,6 @@
     { "name": "detusmascotas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dh9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dh9721.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "digitalgov.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "digitalprimate.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "discarica.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmhtwebordering.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62594,7 +62276,6 @@
     { "name": "n9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "n9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nadine-birkner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nationalservice.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newinf.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nn5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nn9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -63924,7 +63605,6 @@
     { "name": "emrah.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emulovers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ethicalconsumer.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "exploretsp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "f6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "f6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "f6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -63945,7 +63625,6 @@
     { "name": "filecloud.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fizjoterapia.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foxroy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frtib.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fucknazis.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fucknazis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "g116688.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64372,7 +64051,6 @@
     { "name": "bongbabyhouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boxlink.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "btt7676.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "buyusa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bwin2288.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caetanobenet.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caetanoformula.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64448,8 +64126,6 @@
     { "name": "excellence-eventos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "expicore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "familyrecipe.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fdicig.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fdicoig.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fewo32.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ff6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "floridamainmovers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -65222,7 +64898,6 @@
     { "name": "drivermototaxi.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dryudha.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "duggtec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecpic.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "egold-keeper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ekimma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ellatotal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66850,7 +66525,6 @@
     { "name": "adonai.eti.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advens.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "airanyumi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "americorps.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andesnevadotours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "angelinaangulo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anhqv.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -67044,7 +66718,6 @@
     { "name": "limit.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "limnt.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "limstash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lmvsci.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lohvinau.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lolcloud.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lolio.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -67098,14 +66771,12 @@
     { "name": "personalnames.net.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pharmacistinfo.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "philomathiclife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "piedrasblancas.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pikio.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plagiarismcheck.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plaintextpledge.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plaintextpledge.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plaintextpledge.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plaintextpledge.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pmi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "productliabilityinsurance.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proeski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proseo4u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -68606,7 +68277,6 @@
     { "name": "mazavto.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "me-news.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "med-line.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "medalofvalor.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mediagetnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "medichat.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "medivox.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -69988,7 +69658,6 @@
     { "name": "fastknigi.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fcapollo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fcarsenal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fcic.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feministreview.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "festesuniversitaries.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fifacup.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -70983,7 +70652,6 @@
     { "name": "trickgsm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "triplethreatband.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tristanhager.i234.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trumanlibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trz.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "turkface.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "turkmistress.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71063,7 +70731,6 @@
     { "name": "wa3368.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "waplumber.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wapspaces.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wartimecontracting.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "washburnenglishschool.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "waytofreedom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wearethreebears.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71808,7 +71475,6 @@
     { "name": "b303.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "b81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baufi24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bea.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beatz-anime.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beticalia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bhat.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71873,8 +71539,6 @@
     { "name": "edusercontent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ehealthfest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "einquiz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eisenhowerlibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "emergency-federal-register.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enerte.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epicginger.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "escortsforu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71890,15 +71554,12 @@
     { "name": "fh169.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "finotax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "florian-lefevre.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fmcs.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fmeventcentre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freshair.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "funerare-cazacu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fvap.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "g81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "galerialamanai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "garchi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gcdamp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gkasper.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glitzafricafashionweek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gooty.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71942,7 +71603,6 @@
     { "name": "jazerxx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jellyfloral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jiayi.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jimmycarterlibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joljeugdstad.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "k81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karakatoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71994,15 +71654,12 @@
     { "name": "mralonas.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mralonas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mrvnt.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "msha.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "muku-flooring.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "munera.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mychamberlain.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myekon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myeriri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "n81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nativeonestop.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nbm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nkp.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noobsrus.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "novacoaching.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72014,8 +71671,6 @@
     { "name": "onelifenutrition.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "operrbilling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "operrgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "osac.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "osagenation-nsn.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oxsec.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pacificautobody.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72060,7 +71715,6 @@
     { "name": "resumeprime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "resumeprofessionalwriters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ritualesyamarresdelamor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rivers.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rochcloud.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "romacoffee.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "royaloz.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72110,7 +71764,6 @@
     { "name": "thefuelcardpeople.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theoosmetalart.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theoutsiders.stream", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "time.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tokitover.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tommyemo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topappandroid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72125,7 +71778,6 @@
     { "name": "ucmjlawyers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "un.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unblocked.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unionreports.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "upacores.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urlaubstipps.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uxtag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72952,7 +72604,6 @@
     { "name": "eciso.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecmeshltd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecrownoffire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eldercare.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elektrische-zahnbuerste24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enrico-caruso.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enzoic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -74913,7 +74564,6 @@
     { "name": "df5cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "df5dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "df5ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dfafacts.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "digimaat.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "digitalarchives.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ditec.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -74947,7 +74597,6 @@
     { "name": "ff00228.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fffinfo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fibroarrendacaseton.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "firstnet.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flaggorvarlden.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flagi-panstw.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flagistrany.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -76341,7 +75990,6 @@
     { "name": "firstcoastteaco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fittingperfetto.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fonamperu.org.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "forfeiture.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forthewin.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foselectro.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fozzie.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -77883,7 +77531,6 @@
     { "name": "comparecompensationclaims.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "consultingconnection.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "courvix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cpars.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cpls.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cswebi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberdyne.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -77932,10 +77579,8 @@
     { "name": "ezftrs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "f8cp0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fabulosa.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "faca.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fachversand-hennes.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fanbot.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fapiis.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "farallonesrentacar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fenom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fluglektuere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -79501,7 +79146,6 @@
     { "name": "lovesove.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lucascantor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lukaswiden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lummi-nsn.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "m-epigrafes.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "m-hydravlika.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "m-office.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -81330,7 +80974,6 @@
     { "name": "exxoncannabis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fac.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "facepolo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fai.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faithfuladvisor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fast-events.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feelgood.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82685,7 +82328,6 @@
     { "name": "adventurealpinetreks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adventures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advisercentre.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "afadvantage.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahfazahmed.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "airventilation.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alacritylaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83063,7 +82705,6 @@
     { "name": "stock-solution.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "straightnude.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sttl-topographie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "studentaid.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stuudium-mail.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "symeonchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "systemnik.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83778,7 +83419,6 @@
     { "name": "alunara.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "am5.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amazingmalang.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "americathebeautifulquarters.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amethystwebsitedesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amnesty-in-bewegung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ampleitsolutions.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83865,7 +83505,6 @@
     { "name": "bounty.software", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boxtub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bpisites.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "brainhealth.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bramhopetails.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bramming-fysio.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bricomium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83900,10 +83539,7 @@
     { "name": "caylee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbxp.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "celebxx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cendi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cenfo.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cerebrosano.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "challenges.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chanderson.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chaoscommunication.camp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chaturbate.global", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83937,7 +83573,6 @@
     { "name": "concito.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "connelink.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "conrazon.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumeraction.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "contabilidadebhpampulha.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "container-kormann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "contaminatie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83961,8 +83596,6 @@
     { "name": "custosd.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "custosd.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cutienautica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cyber.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cybersecurity.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyprus-company-for.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "d-vision-create.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dailyblocks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84111,7 +83744,6 @@
     { "name": "fomo.af", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fomo.exposed", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fomo.trading", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "forms.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortresslinux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortresslinux.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortresslinux.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84146,7 +83778,6 @@
     { "name": "giulianomanzoni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gliagrumi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gmgard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gobiernousa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gocdn.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "godofredo.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gometa.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84194,7 +83825,6 @@
     { "name": "hlidani-tornado.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hnsseed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hochzeitstypen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "homelandsecurity.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homemakerschallenge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homeopata.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homestead-honey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84223,7 +83853,6 @@
     { "name": "indianhelpline.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "indigopaints.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "industrialpaintservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "info.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infographicsmania.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infojeunes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infopronetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84358,7 +83987,6 @@
     { "name": "matrimonio.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matrimonios.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maximemichaud.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mbda.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mcfallout.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mcsteve.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "medibasket.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84490,7 +84118,6 @@
     { "name": "ops.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orangeacademy.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oratto.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "organdonor.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oscreen.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ourladymtcarmel.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oxegenmedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84621,7 +84248,6 @@
     { "name": "ryandewsbury.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sagytec.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "salekaz.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "samhsa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "satoshilabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "savagecore.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sceventures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84803,8 +84429,6 @@
     { "name": "uponsel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uptownbabe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uropenn.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usagov.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "userbase.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usolvit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vanhatten.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85821,7 +85445,6 @@
     { "name": "upsdelperu.com.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uq1k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "us.ax", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "us.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "us.kg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ut5s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "utopique.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87606,7 +87229,6 @@
     { "name": "niemandmussirgendwas.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nikelunartw.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nizozemsku.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nmb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nn04.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nolz.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noriskit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88527,7 +88149,6 @@
     { "name": "app3w.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appbot.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aqlivia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "archives.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arclookup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arroyoins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atomictag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92247,7 +91868,6 @@
     { "name": "firouz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "first-money.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstclassnuisance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "firstgov.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstlightinspirations.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstnetwork.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstplace.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -93601,7 +93221,6 @@
     { "name": "khoteyev.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "khukhrain.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kiasarnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kids.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kietblog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kiev-live.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kilkimzaibu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99078,7 +98697,6 @@
     { "name": "nerdoftheherd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nesscitycatholic.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newsbay.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nhtsa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nothingwired.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nptn.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nucleios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99319,7 +98937,6 @@
     { "name": "coletrain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "colorbitor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "commaschool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "computersforlearning.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "connectedbynexus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "covid19resilience.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cpanels.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99400,7 +99017,6 @@
     { "name": "gofobo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golosinascbd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golternet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "govsales.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grast.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greatlms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greekpistols.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100439,7 +100055,6 @@
     { "name": "grapheneengine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "graphicapps.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "groundhogg.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gsaxcess.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hagabilvardscenter.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hanikira.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "harmonyonline.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100788,7 +100403,6 @@
     { "name": "bigmountainmail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bikemod.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bingedb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "biometrics.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bipedecurieux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blog-cannabis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bobstikkers.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100797,7 +100411,6 @@
     { "name": "brandweerzonecentrum.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bsolution.edu.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bt-kc.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "businessusa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buyitmalta.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cakalnedobe.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "camilalima.adv.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100859,7 +100472,6 @@
     { "name": "djfunkyju.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dm-ppp.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmehub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "donaciondeorganos.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doodle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "droneservices.com.fj", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drpa.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100895,7 +100507,6 @@
     { "name": "fieldsgynroboticsurgery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fiercerunning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filmsearch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "firstresponder.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fixatelierstore.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flourish.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fluff.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100918,7 +100529,6 @@
     { "name": "gavilanz.ddnsfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gdretrofunk.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "georgesand.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "girlshealth.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "givemeyour.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golestanehali.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golestanehali.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100964,7 +100574,6 @@
     { "name": "idp.onl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "igenuinebeauty.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ignasiak.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "imls.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inspiration.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "instalamosyreformamos.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "interbec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -101222,7 +100831,6 @@
     { "name": "weryfikacjapodatnika.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "windroide.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "woelfer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "womenshealth.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wpcrs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "writebyus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xaynhachothue.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -101947,7 +101555,6 @@
     { "name": "dynamicsdays.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "e30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecozona.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eda.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edok.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "educalis.altervista.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edukarl.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102218,7 +101825,6 @@
     { "name": "rate.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ravmda.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rdmshit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "recordsmanagement.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "redwaymu.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "refrigeratorrepair-austin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reidrice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103562,7 +103168,6 @@
     { "name": "gruaskmsa.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grupo-zoom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gsa-online.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gsaauctions.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdevent.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hekoro.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heliumbrno.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105010,7 +104615,6 @@
     { "name": "fbthirdpartypixel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fbwat.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feecreativity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "feedthefuture.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feitam.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fetish-x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filokiralama.name.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105069,7 +104673,6 @@
     { "name": "hookahshop.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hostelxaxid.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hotsoft.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hrsa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hydroxide.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hyy.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hyychat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105226,7 +104829,6 @@
     { "name": "rc21x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "readable.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "realcanada.com.gt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "realestatesales.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "redraven.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rentacar.name.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "replyua.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105438,12 +105040,10 @@
     { "name": "chinees.restaurant", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chstrategies.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clickrising.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "code.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coin-money.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coinforce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coinnewspulse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coinsubtle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "connect.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cookinsumos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "corujacriattiva.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cr4pr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105727,7 +105327,6 @@
     { "name": "postermywall.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "potcha.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "premiumcbd.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "presidentialinnovationfellows.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "presstrades.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pricevortex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "principedepaz.gt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105762,7 +105361,6 @@
     { "name": "santhoshveer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanweb.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sars-cov-2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sbst.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "secrecion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seekweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seewp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105854,7 +105452,6 @@
     { "name": "unblockit.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unlockerboss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urko.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usability.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "valoan.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vernonreinike.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viamilitaris.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105866,7 +105463,6 @@
     { "name": "virusdelebola.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vivemercadosaludable.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voltainsite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vote.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vr3marcas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vulkanruhe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vulkanruhe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106952,7 +106548,6 @@
     { "name": "trasatsatelital.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelcompany.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelunicorns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tsp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuvankinhdoanhonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "twilo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "twistertech.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107612,7 +107207,6 @@
     { "name": "broadmooroutfitters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brockwayministorage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brownie.plus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bush41library.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "byteultra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "byw.cymru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c-rpg.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107794,7 +107388,6 @@
     { "name": "lansing.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laparoscopyhospital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "larvps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lbjlibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leisurecooker.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leisurecooker.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "limpiadordeporos.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108187,7 +107780,6 @@
     { "name": "eveetcie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "extraspaces.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faunatrek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedrooms.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fermier-mag.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ferrarichat.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "financieracademy.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108298,7 +107890,6 @@
     { "name": "its-em.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jasonisclever.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jeanmichelaudet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jemezsprings-nm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jestyc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jhoncampos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jimsheatandcool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108326,7 +107917,6 @@
     { "name": "levabilligt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "levapsych.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lily.flowers", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lincolnil.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lindaquerida.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lisahutson.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "littleorangecookbook.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108481,7 +108071,6 @@
     { "name": "tontonroger.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "top1.com.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toplevel.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "townofgoldenmeadow-la.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trouvons.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ttcmed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tubach.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108496,13 +108085,11 @@
     { "name": "unicintas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unimeias.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unreal.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "upperskagittribe-nsn.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uruharushia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uvcleanfrance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vap.llc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vigo-select.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viktorovi.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "virginiagardens-fl.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visitorsguide.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "volcano.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vyuticonsulting.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108557,7 +108144,6 @@
     { "name": "aperto-nota.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apollochiropractor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appcitor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "arcadiaca.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "archangelbio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artevento.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asoziales-wiki.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108940,7 +108526,6 @@
     { "name": "afbrtv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "afbryt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agentedebienes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agingstats.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aicevote.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aicfb.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alapetite.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109108,7 +108693,6 @@
     { "name": "grundlage.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gruposiit.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guide-ecole.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gunlaketribe-nsn.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "haidtechnology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "happineo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "harapjunk.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109323,7 +108907,6 @@
     { "name": "skrooter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "slidemembers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartroofingandsheetmetal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "smithsstational.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soapex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "softonline.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "solvingforu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110268,7 +109851,6 @@
     { "name": "sanayi.gov.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanchooriginal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanjacintotitle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "santabarbaraca.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sasapost.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sata-group.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "satisfactory-calculator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110422,7 +110004,6 @@
     { "name": "understrap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uniritter.edu.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urbanmsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "usadf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uxpressia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uzmansorusu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vacreativos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110471,7 +110052,6 @@
     { "name": "wpdepo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wrestlingnewssource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wso.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wyomingmi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyregisteredagent.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xemxx.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xiidraiinsider.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110509,10 +110089,8 @@
     { "name": "acceldigital.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acomerygozar.cam", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agrobytex.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ahcpr.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahealthyjourney.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahhcomfortshoes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ahrq.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aidenlx.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aimias.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "almanassa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110765,7 +110343,6 @@
     { "name": "nopm.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nosnik.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "not4hack.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nsep.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nvprog.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nyerjamilkaval.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oldrun.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110980,7 +110557,6 @@
     { "name": "circular.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clarins-unlimited.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cloudprints.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cmsdca.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codelistbd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coenraets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "colegioalemanmcbo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111921,8 +111497,6 @@
     { "name": "goedkopetaxiservice.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "groupeifams.sn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gryphonfinancialsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "guideline.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "guidelines.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guruarchive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gvirtualclassroom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gwg-march.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112649,7 +112223,6 @@
     { "name": "butcherpaxtattoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "calvadia.duckdns.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catme.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cbca.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccdiscussion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccdlab.ooo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccpaas.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113420,8 +112993,6 @@
     { "name": "goetheschule-giessen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gotoeat-aichi.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greciahora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gsa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gsaadvantage.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gscgh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guaranteedservice.company", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gyefund.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113666,7 +113237,6 @@
     { "name": "painful.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pamperssamples.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pancybertronics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pandemicoversight.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paragon-consult.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paramo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parelweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113968,7 +113538,6 @@
     { "name": "500foods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a-sparks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abacus-essen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "access-board.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "accesshq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aceleraguria.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acuityfinishing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114857,7 +114426,6 @@
     { "name": "nativetitle.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nds-online.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nearbyprinter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nehrp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neograftaustintx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newsite.moscow", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nfitraining.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114876,13 +114444,10 @@
     { "name": "nove.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "novopromo.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nr1hosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nsopr.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nsopw.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nutrislice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nydig.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "obcevents.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "obdinvest.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oea.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "offertemodule.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "officeefficient.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ognedoor.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114970,7 +114535,6 @@
     { "name": "rut2.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sacredart-murals.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safecoin.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sam.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanificazioni.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanodent.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "santehart.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115242,7 +114806,6 @@
     { "name": "commonsenseinactie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "computerhelpbutton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "contactelus88.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "contractdirectory.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "costazulinmobiliaria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cromefire.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptosolicitations.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115301,8 +114864,6 @@
     { "name": "foldnfly-travel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forwardtogether.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fourcask.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fpc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fpds.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "free-vectors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freeebooksblog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frisaga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115443,7 +115004,6 @@
     { "name": "mail.tm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "makelindazi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mangga.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "manufacturing.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "manufacturingusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mar.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marga.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115581,7 +115141,6 @@
     { "name": "pixalus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pixelcrayons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pizza-soprano.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "plainlanguage.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plast.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "playtoearn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "po-krasivi.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115608,7 +115167,6 @@
     { "name": "propertiesmiami.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proshop.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ps.energy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pscr.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "psylliums.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puredisinfection.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "purelypestcontrol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116036,7 +115594,6 @@
     { "name": "btssiou.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bubnovsky.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buenosproductos.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "buildbackbetter.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buildpriceoption.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bulldogscuba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bunnybloythost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118804,7 +118361,6 @@
     { "name": "graftonglobe.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grand-house.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grandcountydronepilot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "grantsolutions.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "graphviewer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gratishandy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gratisparati.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121348,7 +120904,6 @@
     { "name": "adamaveray.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adams.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "addictlaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "adf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adilsoybali.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adondevamosmundo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adrianadelrossi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122744,8 +122299,6 @@
     { "name": "tronghoanggia.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tronika.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trubos.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trumplibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trumpwhitehouse.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trustcert.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trustcert.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tryknow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122822,7 +122375,6 @@
     { "name": "wearereasonablepeople.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webbuilder.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webdesignfenua.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "webharvest.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webjobposting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weblistposting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webpostingmart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125342,7 +124894,6 @@
     { "name": "vitaalfitcoaching.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vivi.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vongdeophongthuy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "votebymail.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voxsiren.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vutruso.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vzducho-klima.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125602,7 +125153,6 @@
     { "name": "buchhammer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "budget.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bungeeireland.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bunkerhilltx.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "burberry-outlet.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "businesscorp.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "businesscorporation.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126384,7 +125934,6 @@
     { "name": "amiv.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amphora.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amsterdam5.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "amtrakoig.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amytuarez.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amytuarez.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amywinehouseaddicted.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126687,7 +126236,6 @@
     { "name": "ccpinturas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cctld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccxperience.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cdo.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ceetzie.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "celebritypic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cellul19.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -127220,7 +126768,6 @@
     { "name": "hellobarestore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hellomunnar.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hellonews.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpamericavote.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "henkibeer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hennessy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "henrywithu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130905,7 +130452,6 @@
     { "name": "mywpdesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nadadigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "namevirus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nara.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nataliealba.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nature-avenue.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "natures-design.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133598,7 +133144,6 @@
     { "name": "chmfin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "christinabjoern-nilsson.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "christopheduverger.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "citizenscience.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clarotvpromocao.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cleandrains.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clevyr.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133724,11 +133269,9 @@
     { "name": "ex-slots.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exemplarypainting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eyecon.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "facadatabase.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fast4ever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastmeet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "favorita.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fbo.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fcg.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fdp-heinsberg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "felipesexto.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133760,7 +133303,6 @@
     { "name": "frostfire.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frozen-gaming.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frutuozo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fsd.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ftx.cool", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fullcolors7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fundiggitydog.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134227,7 +133769,6 @@
     { "name": "pornbabetyra.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "porumbei.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "powerbux.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "presidiotunneltops.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "primesense.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proglib.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projectmap.solutions", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134481,7 +134022,6 @@
     { "name": "wanderfullcoven.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "waterside-inn.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "waukeshairon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wdol.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "we-id.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wearit.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webdating.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136022,7 +135562,6 @@
     { "name": "ceti.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cgt-univ-nantes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chadslive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "challenge.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chanchi.idv.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chatdrop.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chatline.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136548,7 +136087,6 @@
     { "name": "russianews.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rybnitsa.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "s2605.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "saferfederalworkforce.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safevisit.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saggis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saintlouisehouse.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139599,7 +139137,6 @@
     { "name": "willsigal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "win7tips.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "windowsfreak.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "winnebagocountyiowa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "winona-area-scum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "winternacht14.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wisconsinnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139969,7 +139506,6 @@
     { "name": "es-ostan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "escae.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "et420nrw.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eutawal.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "execom68.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exira.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "extact.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141175,7 +140711,6 @@
     { "name": "mangamonde.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marcelois.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "margotbworldnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "marioncountyiowa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marmurmedical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "martinmaiolo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maryeileenkelly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141304,7 +140839,6 @@
     { "name": "professionalrakeback.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projectgazaabindo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "promajna.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "prosperafrica.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pticoaching.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puenschge.pp.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puzzlepiehouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146252,7 +145786,6 @@
     { "name": "traveladventure.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelersuniverse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelways.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ttbonline.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ttdrive.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "turkology.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuslamparasonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146551,7 +146084,6 @@
     { "name": "f6s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "farmaciasantabrigida.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastburg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fehrm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "felin.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fenris.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fickfreundinnen.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146616,7 +146148,6 @@
     { "name": "helastel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helpatmyhome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hereits.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hive.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hjorslev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hodi.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoffmanns-ballonshop.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146800,7 +146331,6 @@
     { "name": "oyantec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p.sb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pacenterforhearingandbalance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "paslc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "patrickod.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paysoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pc94666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147012,7 +146542,6 @@
     { "name": "urlcitr.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usintimate.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uxlab-agency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vacunas.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "valeryvenom.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vanitybiss.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vanral.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147071,7 +146600,6 @@
     { "name": "2leplace.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "3dvisual.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "3rd.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "400yaahc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "4iplatform.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "52yanhao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "59yanhao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148067,7 +147595,6 @@
     { "name": "thedanielswedding.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thehijau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thelittlecountrykitchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thenamingcommission.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theschoolab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theshroomery.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thestitchynerd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148178,7 +147705,6 @@
     { "name": "arcada-company.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "archimedesconsult.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "area51webhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "asap.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atk-nexus.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atlanticwatches.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "attireaccessories.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148186,9 +147712,6 @@
     { "name": "aussieofficefitout.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aussieofficefurniture.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "awaan.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ayudaconmibanco.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bankcustomerassistance.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bankhelp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baracca.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bcradio.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bestofjazz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148240,7 +147763,6 @@
     { "name": "canceraid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casado.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catsforfun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cdc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cerezacomunicacion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cg-consult.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chief.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148338,7 +147860,6 @@
     { "name": "hcqmeta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heartymail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "help24.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpwithmycreditcardbank.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herez.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "highcalorierecipes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "highground.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148362,7 +147883,6 @@
     { "name": "jatinagroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "javiercasares.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jdtrust.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "joinamericorps.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jonasvdc.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ka.wtf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kamilst96.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148405,10 +147925,8 @@
     { "name": "menlotraining.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "menlotraining.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "menlotraining.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mentor.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mercenaryvfx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mijnejk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mlkday.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmanews24.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mrg-srv.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "msk-balkon.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148419,7 +147937,6 @@
     { "name": "myfi24.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myprfsite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myrtlebeachdogtrainers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nationsreportcard.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naturheilkunde-sabine-klein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neteye.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nextsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148429,13 +147946,11 @@
     { "name": "nostalgiamusical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nutrijets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nuvasystem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "occhelps.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oclube.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "odyso.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "offentligsektormedmoln.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "officialbuckshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oleotourhomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "opm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osorezone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paginas-web.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pakmarkas.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148489,7 +148004,6 @@
     { "name": "selectanderect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sellingclassiccars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seniorlivingspain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "serve.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "servercore.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "serviciotecnicoencomputacion.com.ve", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shoppingonlinecoffee2u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148533,7 +148047,6 @@
     { "name": "tomi.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topdogtrainingcourse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topechelon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trade.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelandtourismy.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trochoi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trynewjobs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148663,7 +148176,6 @@
     { "name": "ayein.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baas.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "badrap.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bankcustomer.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baratzegrowshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "barz.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bbfxtraders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148880,7 +148392,6 @@
     { "name": "haywardhonda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdvburs.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heijmans.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpwithmymortgage.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heptagonsystems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herne-kupony.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hetcoronalab.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149560,7 +149071,6 @@
     { "name": "david-almeida.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davogroep.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dbjg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dd214.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dd23project.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dedede.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dehuidstudio.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149727,7 +149237,6 @@
     { "name": "hedgehogs.pet", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helloartisan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hellocoding.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpwithmycheckingaccount.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hestaheimur.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heyghost.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hkvi.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150058,7 +149567,6 @@
     { "name": "sdns.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "searena.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seattlecornerstonedental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "section508.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "securebuildingaccess.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "securely.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "securesiteaccess.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150762,7 +150270,6 @@
     { "name": "na-agency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "namastehomecooking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nandertga.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nationalbankhelp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "natuurlijkehaarkleuring.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nb.mba", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nedapflux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151462,8 +150969,6 @@
     { "name": "hellov.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "help724.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helpmelah.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpwithmycreditcard.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "helpwithmymortgagebank.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hendrichfallriskmodel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hepsimedikal.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herbacom.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152362,7 +151867,6 @@
     { "name": "pornolab.appspot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "powerserg.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "praktijkinfano.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "presidentialserviceawards.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "princebazawule.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proaudiogc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qinandwang.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154142,7 +153646,6 @@
     { "name": "covenantbattle.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "covergarage.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "covidconsult.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "covidtests.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cow-ims.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cowleysexeter.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cozanne.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -156582,7 +156085,6 @@
     { "name": "niwtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nixie.fashion", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "njuftp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nnlm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noacore.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noadi-pixels.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nobellc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158782,7 +158284,6 @@
     { "name": "bbh-kreislauf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bbmsarauniteam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bc-stroy.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bcfp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "be4web.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beachsmile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beadaptive.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159007,8 +158508,6 @@
     { "name": "cepapk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ceramahit.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cfnewsinfra.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cfpa.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cfpb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cgestiona.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cgtburgos.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chalet-gerard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159097,11 +158596,6 @@
     { "name": "constellatio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "consulentedellavoro.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "consultoreswpo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumerbureau.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumerfinance.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumerfinancial.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumerfinancialprotectionbureau.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "consumerprotectionbureau.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "controle-exportations.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "controleert.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "conversationexchange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160612,7 +160106,6 @@
     { "name": "odinpl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "odonata-editions.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ofamdakar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oge.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oggyp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ogot.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ohrus.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160635,7 +160128,6 @@
     { "name": "olympiclodgebyayres.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omanmegadeals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omasporno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "omb.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omedita.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omfmf.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omilia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160725,7 +160217,6 @@
     { "name": "osakagasaustralia.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osapartner.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osbornepro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "osc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oses.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oskety.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osmt.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160735,7 +160226,6 @@
     { "name": "osteopatiaymasaje.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ostermcbride.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ostern-osterfest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ostp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osveld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otariarutiunian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otd-dentalcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -161877,7 +161367,6 @@
     { "name": "westchesteranxietytreatment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "westjp-tetuke-hosyou.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wgauthier.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wh.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whatfontis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whawtheme.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wheelhero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -162464,7 +161953,6 @@
     { "name": "faster-disinfestazioni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fcrrijswijk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fd-lajante.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedramp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feed-back.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feiyang.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feliratok.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -162648,7 +162136,6 @@
     { "name": "insportline.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "instareeldownload.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "instocktho.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "integrity.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "interacademybrazil.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inwx.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inwx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -162961,7 +162448,6 @@
     { "name": "penrite.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pepe.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "perdele-draperii.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "performance.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pergamo.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "persianrom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petlindo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -162971,9 +162457,7 @@
     { "name": "philipbuckmaster.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "photo-on-event.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "photosavi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pic.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "piel.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pif.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pilotshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pims-hub.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pirnaaktuell.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -163299,7 +162783,6 @@
     { "name": "unvired.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usefulinsight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usoptical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ussm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uttenheim.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vakilik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "val-casies.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -163611,7 +163094,6 @@
     { "name": "f1ltr0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "facchinaggio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fdg-98.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fedidcard.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fereum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fernhowe.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ferrigestion.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -163692,8 +163174,6 @@
     { "name": "ineight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inetpub.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inpresso.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "internet4all.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "internetforall.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "invidious.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "invivo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ioxio-dataspace.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -167504,7 +166984,6 @@
     { "name": "leadtour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leadtrend.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leafpad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "learndoj.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "learndrive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "learnmba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "learnsurf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -171078,7 +170557,6 @@
     { "name": "asuikit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atacadoclube.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atelierdelacreation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "atfonline.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atisoft.biz.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atisoft.name.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atisoft.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -171200,7 +170678,6 @@
     { "name": "chamudi.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chatkitty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chatounerie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "chcoc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chequeraccounting.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cherryjimbo.sucks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chikahaku1001vr.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -171712,7 +171189,6 @@
     { "name": "latakuta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "law-moshkovich.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ldlorangecountylocksmith.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "learnatf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lebibicloset.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lemediajustice.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lemgstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -174432,7 +173908,6 @@
     { "name": "davelbostoncoach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davidalbert.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davidtorres4congress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "deaecom.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "debtpaypro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deckshop.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "decor-essentials.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -174475,7 +173950,6 @@
     { "name": "dresscodeny.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drivebespokelab.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "driveincleveland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "drought.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drwongsuni.com.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dynasend.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dzogchentoday.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -174859,7 +174333,6 @@
     { "name": "ofpad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ogilvy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oier-meet.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ojp.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oldvps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olsenban.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "on-tandemdrive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -175218,7 +174691,6 @@
     { "name": "abacustech.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abella.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abhy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "abmc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adamtulis.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adblock.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aetna-medicareplans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -175356,7 +174828,6 @@
     { "name": "daily.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davep.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dayuse.com.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dea.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "decokeuken.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defkey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "delta-electric.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -175914,7 +175385,6 @@
     { "name": "hyatt.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "ft.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "www.ft.com", "policy": "custom", "mode": "force-https", "include_subdomains": true },
-    { "name": "va.gov", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "gov.uk", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "www.mojadm.sk", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "mojadm.sk", "policy": "custom", "mode": "force-https", "include_subdomains": false },
@@ -176030,6 +175500,536 @@
     // eTLD owners who are working towards wide HSTS adoption can request to
     // preload entries at registration time.
     // START OF ETLD-OWNER REQUESTED ENTRIES
+    { "name": "healthcare.gov", "policy": "public-suffix-requested", "mode": "force-https" },
+    { "name": "www.healthcare.gov", "policy": "public-suffix-requested", "mode": "force-https" },
+    { "name": "segurosocial.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": false },
+    { "name": "socialsecurity.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": false },
+    { "name": "ssa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": false },
+    { "name": "gpo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": false },
+    { "name": "18f.gsa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "my.usa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "uspsoig.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "notalone.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "aids.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "itdashboard.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "paymentaccuracy.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cao.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cfo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cio.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "earmarks.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bfelob.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "max.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "save.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "saveaward.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ustr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "www.gpo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "dccode.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "acus.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "donotcall.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "federalregister.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ftccomplaintassistant.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hsr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumersentinel.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fatherhood.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hiv.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "flra.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "whitehouse.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nagb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "18f.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "econsumer.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "frtr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "edpubs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "studentloans.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fdsys.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sftool.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "identitytheft.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ftc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ncpw.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "onguardonline.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "robodeidentidad.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sustainability.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ncpc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cloud.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ic3.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "klamathrestoration.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "protecciondelconsumidor.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "stopfraud.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "childreninadversity.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "neglecteddiseases.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "uscurrency.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "adr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ada.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "foia.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fara.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lep.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "opic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "science360.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "standards.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "vcf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "vets.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "aging.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "alertaenlinea.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "askkaren.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "befoodsafe.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "betobaccofree.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "clinicaltrials.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "christophercolumbusfoundation.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "dhhs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedjobs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "federaljobs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "buyaccessible.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fbijobs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fitness.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "foodsafety.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fhfaoig.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "freshempire.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "globalhealth.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "governmentjobs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hhs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fws.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "isitdoneyet.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "marine.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "onrr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "reaganlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "smartcheck.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "stopbullying.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "surgeongeneral.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "therealcost.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "tobacco.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "thisfreelife.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usajobs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usmint.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "vaccines.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "whistleblower.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wrp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bjs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "biopreferred.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "clintonlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "data.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "endingthedocumentgame.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fcsic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "foodsafetyworkinggroup.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "foodsafetyjobs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hearttruth.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fmi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ftcefile.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "locatorplus.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "medlineplus.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nlm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pandemicflu.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pregunteleakaren.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "prc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sciencebase.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ucrdatatool.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "watermonitor.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "docline.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "idtheft.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nicic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wlci.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "admongo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "huduser.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "idmanagement.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mesh.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "oshrc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ginniemae.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "itis.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nlrb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "registertovoteflorida.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "psa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "acwi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "dotgov.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "oversight.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "regulations.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pretrialservices.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "obamalibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ogis.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "anstaskforce.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ghi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nixonlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sentinel.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "abandonedmines.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "medicalcountermeasures.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ignet.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "justice.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usds.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "budgetlob.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "crt2014-2024review.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "salmonrecovery.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "federalreserve.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "isotope.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wildlifeadaptationstrategy.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "blm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "geocommunicator.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "utahfireinfo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "america.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "banknet.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "budget.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cupcao.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fbiic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedpartnership.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ffiec.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fordlibrarymuseum.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "georgewbushlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "greatagain.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "health.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthfinder.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthypeople.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpwithmybank.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lcrmscp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mitigationcommission.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nationalbank.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nationalbanknet.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ondcp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "osmre.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "scijinks.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usbr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "whitehousedrugpolicy.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "9-11commission.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "911commission.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "federalreserveconsumerhelp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "malwareinvestigator.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "youth.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "feb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "harp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hru.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usalearning.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "applicationmanager.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cybercareers.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "employeeexpress.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fegli.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nbib.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "telework.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usastaffing.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bpa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "acquisition.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cfda.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "esrs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedbizopps.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedshirevets.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fsrs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pmf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "safeocs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "unlocktalent.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "digitalliteracy.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nicsezcheckfbi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "abilityone.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cftc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "childstats.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "collegenavigator.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "comptrollerofthecurrency.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fmc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthit.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lca.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nea.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nrc-gateway.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sec.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "vistacampus.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "arts.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fireleadership.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bsee.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "jem.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lacoast.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mgi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "restorethegulf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "childwelfare.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ibwc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "commerce.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "occ.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ourdocuments.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "iaf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "obamawhitehouse.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "aoa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cybercrime.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "weather.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "doleta.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "elderjustice.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fbi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "frpg.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "interpol.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "jwod.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "longtermcare.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nfpors.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nifc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ntsb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nvtc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "osti.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "presidio.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "projectsafechildhood.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "realpropertyprofile.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "reginfo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "rocis.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "scra.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "servicemembers.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "smokefree.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "spectrum.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "tribaljusticeandsafety.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usaseanconnect.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usdoj.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "userra.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "whitehouseconferenceonaging.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "worker.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "youthrules.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "acl.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "anchorit.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "arm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "atvsafety.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cpsc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "drywallresponse.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "poolsafely.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "poolsafety.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "recalls.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "saferproduct.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "saferproducts.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "seguridadconsumidor.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "stb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "rowancountync.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "history.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "iprcenter.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bankanswers.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "csosa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cwc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "eac.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "frc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ots.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pepfar.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "science.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ssab.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "everify.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mycreditunion.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ncua.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "uscis.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "distracteddriving.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "safercar.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ems.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "safertruck.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "911.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "distraction.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "floodsmart.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "geomac.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wgdp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "benefits.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cttso.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "govloans.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nationalresourcedirectory.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nrd.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nwtrb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "trafficsafetymarketing.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pnnl.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "atf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "digitalgov.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nationalservice.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "exploretsp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "frtib.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "buyusa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fdicig.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fdicoig.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ecpic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "americorps.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lmvsci.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "piedrasblancas.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pmi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "medalofvalor.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fcic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "trumanlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wartimecontracting.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bea.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "eisenhowerlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "emergency-federal-register.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fmcs.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fvap.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gcdamp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "jimmycarterlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "msha.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nativeonestop.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nbm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "osac.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "osagenation-nsn.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "rivers.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "time.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "unionreports.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "eldercare.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "dfafacts.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "firstnet.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "forfeiture.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cpars.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "faca.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fapiis.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lummi-nsn.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fai.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "afadvantage.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "studentaid.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "americathebeautifulquarters.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "brainhealth.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cendi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cerebrosano.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "challenges.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumeraction.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyber.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cybersecurity.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "forms.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gobiernousa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "homelandsecurity.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "info.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mbda.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "organdonor.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "samhsa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usagov.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "us.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nmb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "archives.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "firstgov.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "kids.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nhtsa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "computersforlearning.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "govsales.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gsaxcess.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "biometrics.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "businessusa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "donaciondeorganos.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "firstresponder.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "girlshealth.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "imls.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "womenshealth.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "eda.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "recordsmanagement.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gsaauctions.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "feedthefuture.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hrsa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "realestatesales.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "code.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "connect.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "presidentialinnovationfellows.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sbst.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usability.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "vote.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "tsp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bush41library.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lbjlibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedrooms.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "jemezsprings-nm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "lincolnil.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "townofgoldenmeadow-la.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "upperskagittribe-nsn.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "virginiagardens-fl.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "arcadiaca.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "agingstats.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gunlaketribe-nsn.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "smithsstational.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "santabarbaraca.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "usadf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wyomingmi.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ahcpr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ahrq.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nsep.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cmsdca.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "guideline.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "guidelines.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cbca.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gsa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "gsaadvantage.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pandemicoversight.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "access-board.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nehrp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nsopr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nsopw.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "oea.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "sam.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "contractdirectory.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fpc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fpds.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "manufacturing.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "plainlanguage.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pscr.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "buildbackbetter.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "grantsolutions.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "adf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "trumplibrary.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "trumpwhitehouse.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "webharvest.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "votebymail.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bunkerhilltx.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "amtrakoig.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cdo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpamericavote.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nara.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "citizenscience.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "facadatabase.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fbo.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fsd.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "presidiotunneltops.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wdol.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "challenge.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "saferfederalworkforce.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "winnebagocountyiowa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "eutawal.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "marioncountyiowa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "prosperafrica.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ttbonline.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fehrm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "hive.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "paslc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "vacunas.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "400yaahc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "thenamingcommission.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "asap.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ayudaconmibanco.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bankcustomerassistance.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bankhelp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cdc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpwithmycreditcardbank.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "joinamericorps.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mentor.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "mlkday.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nationsreportcard.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "occhelps.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "opm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "serve.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "trade.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bankcustomer.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpwithmymortgage.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "dd214.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpwithmycheckingaccount.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "section508.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nationalbankhelp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpwithmycreditcard.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpwithmymortgagebank.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "presidentialserviceawards.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "covidtests.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "nnlm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "bcfp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cfpa.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "cfpb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumerbureau.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumerfinance.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumerfinancial.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumerfinancialprotectionbureau.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "consumerprotectionbureau.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "oge.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "omb.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "osc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ostp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "wh.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedramp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "integrity.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "performance.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pic.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "pif.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ussm.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "fedidcard.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "internet4all.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "internetforall.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "learndoj.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "atfonline.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "chcoc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "learnatf.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "deaecom.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "drought.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "ojp.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "abmc.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "dea.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
+    { "name": "va.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": false },
     { "name": "login.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
     { "name": "digital.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
     { "name": "cdcpartners.gov", "policy": "public-suffix-requested", "mode": "force-https", "include_subdomains": true },
diff --git a/remoting/base/protobuf_http_test_responder.cc b/remoting/base/protobuf_http_test_responder.cc
index 71523a06..84a721f 100644
--- a/remoting/base/protobuf_http_test_responder.cc
+++ b/remoting/base/protobuf_http_test_responder.cc
@@ -4,8 +4,8 @@
 
 #include "remoting/base/protobuf_http_test_responder.h"
 
-#include <algorithm>
-
+#include "base/containers/adapters.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "net/http/http_status_code.h"
 #include "remoting/base/protobuf_http_client_messages.pb.h"
@@ -101,11 +101,10 @@
     const std::string& url,
     google::protobuf::MessageLite* out_message) {
   base::RunLoop().RunUntilIdle();
-  auto pending_request_it = std::find_if(
-      test_url_loader_factory_.pending_requests()->rbegin(),
-      test_url_loader_factory_.pending_requests()->rend(),
-      [url](const network::TestURLLoaderFactory::PendingRequest& request) {
-        return request.request.url.spec() == url;
+  auto pending_request_it = base::ranges::find(
+      base::Reversed(*test_url_loader_factory_.pending_requests()), url,
+      [](const network::TestURLLoaderFactory::PendingRequest& request) {
+        return request.request.url.spec();
       });
   if (pending_request_it ==
       test_url_loader_factory_.pending_requests()->rend()) {
diff --git a/remoting/client/empty_cursor_filter.cc b/remoting/client/empty_cursor_filter.cc
index d8ae7c4..6eee7ac 100644
--- a/remoting/client/empty_cursor_filter.cc
+++ b/remoting/client/empty_cursor_filter.cc
@@ -48,7 +48,7 @@
 
 // Returns true if there is at least one visible pixel in the given range.
 bool IsVisibleRow(const uint32_t* begin, const uint32_t* end) {
-  return std::find_if(begin, end, &IsVisiblePixel) != end;
+  return std::any_of(begin, end, &IsVisiblePixel);
 }
 
 }  // namespace
diff --git a/remoting/client/notification/gstatic_json_fetcher.cc b/remoting/client/notification/gstatic_json_fetcher.cc
index cdaf63b2..71be850 100644
--- a/remoting/client/notification/gstatic_json_fetcher.cc
+++ b/remoting/client/notification/gstatic_json_fetcher.cc
@@ -6,6 +6,7 @@
 
 #include "base/json/json_reader.h"
 #include "base/logging.h"
+#include "base/ranges/algorithm.h"
 #include "net/http/http_status_code.h"
 #include "remoting/base/url_request_context_getter.h"
 #include "services/network/public/cpp/resource_request.h"
@@ -60,13 +61,9 @@
 void GstaticJsonFetcher::OnURLLoadComplete(
     const network::SimpleURLLoader* source,
     std::unique_ptr<std::string> body) {
-  auto find_fetcher =
-      [source](const std::pair<std::unique_ptr<network::SimpleURLLoader>,
-                               FetchJsonFileCallback>& pair) {
-        return pair.first.get() == source;
-      };
-  auto it = std::find_if(loader_callback_map_.begin(),
-                         loader_callback_map_.end(), find_fetcher);
+  auto it =
+      base::ranges::find(loader_callback_map_, source,
+                         [](const auto& pair) { return pair.first.get(); });
   if (it == loader_callback_map_.end()) {
     LOG(DFATAL) << "Fetcher not found in the map";
     return;
diff --git a/remoting/host/chromoting_host.cc b/remoting/host/chromoting_host.cc
index b9a44b9d..cdd0231 100644
--- a/remoting/host/chromoting_host.cc
+++ b/remoting/host/chromoting_host.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 
@@ -14,6 +13,7 @@
 #include "base/callback.h"
 #include "base/command_line.h"
 #include "base/memory/ptr_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/single_thread_task_runner.h"
 #include "build/build_config.h"
 #include "components/webrtc/thread_wrapper.h"
@@ -209,10 +209,8 @@
 void ChromotingHost::OnSessionClosed(ClientSession* client) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  auto it = std::find_if(clients_.begin(), clients_.end(),
-                         [client](const std::unique_ptr<ClientSession>& item) {
-                           return item.get() == client;
-                         });
+  auto it = base::ranges::find(clients_, client,
+                               &std::unique_ptr<ClientSession>::get);
   CHECK(it != clients_.end());
 
   bool was_authenticated = client->is_authenticated();
diff --git a/remoting/host/it2me/it2me_confirmation_dialog_chromeos_unittest.cc b/remoting/host/it2me/it2me_confirmation_dialog_chromeos_unittest.cc
index 7a809a9c..6569a4f1 100644
--- a/remoting/host/it2me/it2me_confirmation_dialog_chromeos_unittest.cc
+++ b/remoting/host/it2me/it2me_confirmation_dialog_chromeos_unittest.cc
@@ -4,12 +4,12 @@
 
 #include "remoting/host/it2me/it2me_confirmation_dialog.h"
 
-#include <algorithm>
 #include <cstddef>
 #include <memory>
 #include <string>
 
 #include "base/i18n/message_formatter.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_future.h"
@@ -67,11 +67,8 @@
 
   int FindIndex(const std::vector<message_center::ButtonInfo>& array,
                 const std::u16string& button_title) {
-    auto button_iter =
-        std::find_if(array.cbegin(), array.cend(),
-                     [button_title](const message_center::ButtonInfo& button) {
-                       return button.title == button_title;
-                     });
+    auto button_iter = base::ranges::find(array, button_title,
+                                          &message_center::ButtonInfo::title);
     if (button_iter == array.cend())
       return -1;
 
diff --git a/remoting/host/linux/x11_character_injector.cc b/remoting/host/linux/x11_character_injector.cc
index f5e2418..f718888 100644
--- a/remoting/host/linux/x11_character_injector.cc
+++ b/remoting/host/linux/x11_character_injector.cc
@@ -4,9 +4,8 @@
 
 #include "remoting/host/linux/x11_character_injector.h"
 
-#include <algorithm>
-
 #include "base/bind.h"
+#include "base/ranges/algorithm.h"
 #include "base/time/time.h"
 #include "remoting/host/linux/x11_keyboard.h"
 
@@ -97,9 +96,8 @@
 
   if (keyboard_->FindKeycode(code_point, &result.keycode, &result.modifiers)) {
     uint32_t keycode = result.keycode;
-    auto position = std::find_if(
-        available_keycodes_.begin(), available_keycodes_.end(),
-        [keycode](const KeyInfo& info) { return info.keycode == keycode; });
+    auto position =
+        base::ranges::find(available_keycodes_, keycode, &KeyInfo::keycode);
     if (position != available_keycodes_.end()) {
       ResetKeyInfoExpirationTime(now, position);
     }
diff --git a/remoting/host/linux/x11_character_injector_unittest.cc b/remoting/host/linux/x11_character_injector_unittest.cc
index d9fe01c..42c2d83e 100644
--- a/remoting/host/linux/x11_character_injector_unittest.cc
+++ b/remoting/host/linux/x11_character_injector_unittest.cc
@@ -8,6 +8,7 @@
 
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -102,10 +103,11 @@
 bool FakeX11Keyboard::FindKeycode(uint32_t code_point,
                                   uint32_t* keycode,
                                   uint32_t* modifiers) {
-  auto position = std::find_if(keycode_mapping_.begin(), keycode_mapping_.end(),
-               [code_point](const std::pair<uint32_t, MappingInfo>& pair) {
-    return pair.second.code_point == code_point;
-  });
+  auto position =
+      base::ranges::find(keycode_mapping_, code_point,
+                         [](const std::pair<uint32_t, MappingInfo>& pair) {
+                           return pair.second.code_point;
+                         });
   if (position == keycode_mapping_.end()) {
     return false;
   }
diff --git a/remoting/host/webauthn/remote_webauthn_native_messaging_host.cc b/remoting/host/webauthn/remote_webauthn_native_messaging_host.cc
index 5c74fb8..fa7e9e2 100644
--- a/remoting/host/webauthn/remote_webauthn_native_messaging_host.cc
+++ b/remoting/host/webauthn/remote_webauthn_native_messaging_host.cc
@@ -4,12 +4,12 @@
 
 #include "remoting/host/webauthn/remote_webauthn_native_messaging_host.h"
 
-#include <algorithm>
 #include <memory>
 
 #include "base/bind.h"
 #include "base/json/json_writer.h"
 #include "base/logging.h"
+#include "base/ranges/algorithm.h"
 #include "base/values.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
@@ -493,11 +493,9 @@
     mojo::RemoteSetElementId disconnecting_canceller) {
   DCHECK(task_runner_->BelongsToCurrentThread());
 
-  auto it = std::find_if(id_to_request_canceller_.begin(),
-                         id_to_request_canceller_.end(),
-                         [disconnecting_canceller](const auto& pair) {
-                           return pair.second == disconnecting_canceller;
-                         });
+  auto it =
+      base::ranges::find(id_to_request_canceller_, disconnecting_canceller,
+                         &IdToRequestMap::value_type::second);
   if (it != id_to_request_canceller_.end()) {
     id_to_request_canceller_.erase(it);
   }
diff --git a/remoting/host/webauthn/remote_webauthn_native_messaging_host.h b/remoting/host/webauthn/remote_webauthn_native_messaging_host.h
index ce492e1..9e9b13a0 100644
--- a/remoting/host/webauthn/remote_webauthn_native_messaging_host.h
+++ b/remoting/host/webauthn/remote_webauthn_native_messaging_host.h
@@ -42,6 +42,8 @@
  private:
   friend class RemoteWebAuthnNativeMessagingHostTest;
 
+  using IdToRequestMap = base::flat_map<base::Value, mojo::RemoteSetElementId>;
+
   RemoteWebAuthnNativeMessagingHost(
       std::unique_ptr<ChromotingHostServicesProvider> host_service_api_client,
       scoped_refptr<base::SingleThreadTaskRunner> task_runner);
@@ -101,8 +103,7 @@
   std::unique_ptr<ChromotingHostServicesProvider> host_service_api_client_;
   mojo::Remote<mojom::WebAuthnProxy> remote_;
   mojo::RemoteSet<mojom::WebAuthnRequestCanceller> request_cancellers_;
-  base::flat_map<base::Value, mojo::RemoteSetElementId>
-      id_to_request_canceller_;
+  IdToRequestMap id_to_request_canceller_;
 
   // Only available after Start() is called.
   raw_ptr<extensions::NativeMessageHost::Client> client_ = nullptr;
diff --git a/remoting/protocol/jingle_session.cc b/remoting/protocol/jingle_session.cc
index 178174d..0e031f0a 100644
--- a/remoting/protocol/jingle_session.cc
+++ b/remoting/protocol/jingle_session.cc
@@ -13,6 +13,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/logging.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_split.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -456,11 +457,8 @@
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   // Delete the request from the list of pending requests.
-  pending_requests_.erase(
-      std::find_if(pending_requests_.begin(), pending_requests_.end(),
-                   [request](const std::unique_ptr<IqRequest>& ptr) {
-                     return ptr.get() == request;
-                   }));
+  pending_requests_.erase(base::ranges::find(pending_requests_, request,
+                                             &std::unique_ptr<IqRequest>::get));
 
   // Ignore all responses after session was closed.
   if (state_ == CLOSED || state_ == FAILED)
@@ -495,11 +493,8 @@
 
   // Consider transport-info requests sent before this one lost and delete
   // all IqRequest objects in front of |request|.
-  auto request_it = std::find_if(
-      transport_info_requests_.begin(), transport_info_requests_.end(),
-      [request](const std::unique_ptr<IqRequest>& ptr) {
-        return ptr.get() == request;
-      });
+  auto request_it = base::ranges::find(transport_info_requests_, request,
+                                       &std::unique_ptr<IqRequest>::get);
   DCHECK(request_it != transport_info_requests_.end());
   transport_info_requests_.erase(transport_info_requests_.begin(),
                                  request_it + 1);
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index ecf4aae..ad8d7e7 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -31373,1117 +31373,6 @@
       }
     ]
   },
-  "fuchsia-fyi-x64-reviver": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "absl_hardening_tests",
-        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "accessibility_unittests",
-        "test_id_prefix": "ninja://ui/accessibility:accessibility_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "aura_unittests",
-        "test_id_prefix": "ninja://ui/aura:aura_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "base_unittests",
-        "test_id_prefix": "ninja://base:base_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_common_unittests",
-        "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_fuzzer_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_fuzzer_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_heap_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_platform_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/controller:blink_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_crypto_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_ssl_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "capture_unittests",
-        "test_id_prefix": "ninja://media/capture:capture_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "color_unittests",
-        "test_id_prefix": "ninja://ui/color:color_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "components_browsertests",
-        "test_id_prefix": "ninja://components:components_browsertests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "components_unittests",
-        "test_id_prefix": "ninja://components:components_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "compositor_unittests",
-        "test_id_prefix": "ninja://ui/compositor:compositor_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "content_unittests",
-        "test_id_prefix": "ninja://content/test:content_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crypto_unittests",
-        "test_id_prefix": "ninja://crypto:crypto_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "events_unittests",
-        "test_id_prefix": "ninja://ui/events:events_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "filesystem_service_unittests",
-        "test_id_prefix": "ninja://components/services/filesystem:filesystem_service_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gcm_unit_tests",
-        "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gin_unittests",
-        "test_id_prefix": "ninja://gin:gin_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "google_apis_unittests",
-        "test_id_prefix": "ninja://google_apis:google_apis_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gpu_unittests",
-        "test_id_prefix": "ninja://gpu:gpu_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gwp_asan_unittests",
-        "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "headless_browsertests",
-        "test_id_prefix": "ninja://headless:headless_browsertests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ipc_tests",
-        "test_id_prefix": "ninja://ipc:ipc_tests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "latency_unittests",
-        "test_id_prefix": "ninja://ui/latency:latency_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "media_unittests",
-        "test_id_prefix": "ninja://media:media_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "midi_unittests",
-        "test_id_prefix": "ninja://media/midi:midi_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_core_unittests",
-        "test_id_prefix": "ninja://mojo/core:mojo_core_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_unittests",
-        "test_id_prefix": "ninja://mojo:mojo_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "native_theme_unittests",
-        "test_id_prefix": "ninja://ui/native_theme:native_theme_unittests/"
-      },
-      {
-        "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.net_unittests.filter",
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "net_unittests",
-        "test_id_prefix": "ninja://net:net_unittests/"
-      },
-      {
-        "args": [
-          "--",
-          "--ozone-platform=headless",
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ozone_gl_unittests",
-        "test_id_prefix": "ninja://ui/ozone/gl:ozone_gl_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ozone_unittests",
-        "test_id_prefix": "ninja://ui/ozone:ozone_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "perfetto_unittests",
-        "test_id_prefix": "ninja://third_party/perfetto:perfetto_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "service_manager_unittests",
-        "test_id_prefix": "ninja://services/service_manager/tests:service_manager_unittests/"
-      },
-      {
-        "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.services_unittests.filter",
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "services_unittests",
-        "test_id_prefix": "ninja://services:services_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "shell_dialogs_unittests",
-        "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "skia_unittests",
-        "test_id_prefix": "ninja://skia:skia_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "snapshot_unittests",
-        "test_id_prefix": "ninja://ui/snapshot:snapshot_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sql_unittests",
-        "test_id_prefix": "ninja://sql:sql_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "storage_unittests",
-        "test_id_prefix": "ninja://storage:storage_unittests/"
-      },
-      {
-        "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter",
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_base_unittests",
-        "test_id_prefix": "ninja://ui/base:ui_base_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_touch_selection_unittests",
-        "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "url_unittests",
-        "test_id_prefix": "ninja://url:url_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wm_unittests",
-        "test_id_prefix": "ninja://ui/wm:wm_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wtf_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/"
-      },
-      {
-        "args": [
-          "--gtest_also_run_disabled_tests",
-          "--gtest_filter=*DISABLE*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "kvm": "1",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "zlib_unittests",
-        "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
-      }
-    ]
-  },
   "fuchsia-fyi-x64-wst": {
     "gtest_tests": [
       {
diff --git a/testing/buildbot/filters/android.emulator_n.chrome_public_test_apk.filter b/testing/buildbot/filters/android.emulator_n.chrome_public_test_apk.filter
index d6d28bab..ee95cdc 100644
--- a/testing/buildbot/filters/android.emulator_n.chrome_public_test_apk.filter
+++ b/testing/buildbot/filters/android.emulator_n.chrome_public_test_apk.filter
@@ -37,3 +37,6 @@
 -org.chromium.chrome.browser.firstrun.FirstRunActivitySigninAndSyncTest.clickingSettingsThenCancelForChildAccountWithAllowSyncOffDisabledPartiallyEnablesSync
 -org.chromium.chrome.browser.firstrun.FirstRunActivitySigninAndSyncTest.continueButtonClickShowsSyncConsentPageWithChildAccountAndEarlySigninCheckerCreation
 -org.chromium.chrome.browser.firstrun.FirstRunActivitySigninAndSyncTest.acceptingSyncForChildAccountEndsFreAndEnablesSyncIfAllowSyncOffForChildAccountsFeatureEnabled
+
+# TODO(crbug/1366098)
+-org.chromium.chrome.browser.autofill_assistant.AutofillAssistantCollectUserDataIntegrationTest.testEnterPayment
diff --git a/testing/buildbot/filters/android.emulator_n.content_browsertests.filter b/testing/buildbot/filters/android.emulator_n.content_browsertests.filter
index 26a34bd..caf40f35 100644
--- a/testing/buildbot/filters/android.emulator_n.content_browsertests.filter
+++ b/testing/buildbot/filters/android.emulator_n.content_browsertests.filter
@@ -17,6 +17,7 @@
 -PrefetchBrowserTest/PrefetchBrowserTest.CrossOriginWithPreloadHasNoSameSiteCookies/7
 
 # TODO(crbug.com/1116774)
+-All/SitePerProcessBrowserTest.PageScaleFactorPropagatesToOOPIFs/0
 -All/SitePerProcessBrowserTest.PageScaleFactorPropagatesToOOPIFs/1
 
 # TODO(crbug.com/1344391)
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 21dfb15..022575ee 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -3360,31 +3360,6 @@
           'gtest_tests': 'fuchsia_experimental_gtests',
         },
       },
-      # A builder for early prototype of test-reviver (http://go/test-reviver)
-      # with gtest_also_run_disabled_tests enabled.
-      # Ideally this builder is not necessary, the regular x64-rel built
-      # binaries should be reused. But I do not think it's possible based on
-      # current infrastructure. So a new builder is setup to make thing move
-      # forward for now.
-      # TODO(zijiehe): Remove this builder once we have a way to reuse the
-      # built binaries or a formal solution for test-reviver.
-      'fuchsia-fyi-x64-reviver': {
-        'os_type': 'fuchsia',
-        'mixins': [
-          'gtest_run_disabled_only',
-          'linux-bionic',
-        ],
-        'swarming': {
-          'dimension_sets': [
-            {
-              'kvm': '1',
-            },
-          ],
-        },
-        'test_suites': {
-          'gtest_tests': 'fuchsia_common_gtests',
-        },
-      },
       'fuchsia-fyi-x64-wst': {
         'browser_config': 'fuchsia-chrome',
         'os_type': 'fuchsia',
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 506e467..f05a3dd 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -5148,42 +5148,6 @@
             ]
         }
     ],
-    "HeapProfilingSubprocess": [
-        {
-            "platforms": [
-                "chromeos",
-                "chromeos_lacros",
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "EnabledInBrowserAndGPU",
-                    "params": {
-                        "nonstable-probability": "1",
-                        "stable-probability": "1",
-                        "supported-processes": "browser;gpu"
-                    },
-                    "enable_features": [
-                        "HeapProfilerReporting"
-                    ]
-                },
-                {
-                    "name": "EnabledInGPU",
-                    "params": {
-                        "nonstable-probability": "1",
-                        "sampling-rate": "1000000",
-                        "stable-probability": "1",
-                        "supported-processes": "gpu"
-                    },
-                    "enable_features": [
-                        "HeapProfilerReporting"
-                    ]
-                }
-            ]
-        }
-    ],
     "HelpAppLauncherSearch": [
         {
             "platforms": [
@@ -7275,30 +7239,6 @@
             ]
         }
     ],
-    "OptimizationHintsShorterHostKeyedCacheDuration": [
-        {
-            "platforms": [
-                "android",
-                "chromeos",
-                "ios",
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled_20220729",
-                    "params": {
-                        "hints_fetch_refresh_duration_in_hours": "1",
-                        "max_store_duration_for_featured_hints_in_days": "1"
-                    },
-                    "enable_features": [
-                        "OptimizationHintsFetching"
-                    ]
-                }
-            ]
-        }
-    ],
     "OptimizeAccessibilityUiThreadWork": [
         {
             "platforms": [
@@ -11879,7 +11819,7 @@
             ]
         }
     ],
-    "ZeroCopyTabCaptureExperiment": [
+    "ZeroCopyTabCaptureStudyMac": [
         {
             "platforms": [
                 "mac"
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index 783e1ff..4225a26 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -234,6 +234,12 @@
              "AnchorElementInteraction",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
+// Enable "interoperable" Android virtual-keyboard. i.e. the keyboard doesn't
+// affect page layout, resizing only the visual viewport. This matches WebKit
+// and ChromeOS behavior.
+const base::Feature kOSKResizesVisualViewport{
+    "OSKResizesVisualViewport", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Enable browser-initiated dedicated worker script loading
 // (PlzDedicatedWorker). https://crbug.com/906991
 BASE_FEATURE(kPlzDedicatedWorker,
@@ -333,6 +339,11 @@
       blink::features::kSameSiteCrossOriginForSpeculationRulesPrerender);
 }
 
+bool OSKResizesVisualViewport() {
+  return base::FeatureList::IsEnabled(
+      blink::features::kOSKResizesVisualViewport);
+}
+
 bool IsFencedFramesEnabled() {
   return base::FeatureList::IsEnabled(blink::features::kFencedFrames);
 }
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
index 77cb8974..6c7b4067 100644
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -79,6 +79,7 @@
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kMixedContentAutoupgrade);
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kNavigationPredictor);
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAnchorElementInteraction);
+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kOSKResizesVisualViewport);
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kPlzDedicatedWorker);
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kPortalsCrossOrigin);
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kFencedFrames);
@@ -177,6 +178,9 @@
 // enabled.
 BLINK_COMMON_EXPORT bool
 IsSameSiteCrossOriginForSpeculationRulesPrerender2Enabled();
+// Returns true if the Android On-Screen-Keyboard is in "resize visual
+// viewport" mode.
+BLINK_COMMON_EXPORT bool OSKResizesVisualViewport();
 
 // Fenced Frames:
 BLINK_COMMON_EXPORT bool IsFencedFramesEnabled();
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index 20fdf8f..f33b092 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -8467,6 +8467,7 @@
       HasEffectiveUrl
       ActivatedBeforeStarted
       InactivePageRestriction
+      StartFailed
 
   # Fired when a prerender attempt is completed.
   experimental event prerenderAttemptCompleted
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn
index 9c315a8c..a89aaea5 100644
--- a/third_party/blink/public/mojom/BUILD.gn
+++ b/third_party/blink/public/mojom/BUILD.gn
@@ -1112,6 +1112,7 @@
       "//services/network/public/mojom:cookies_mojom",
       "//services/network/public/mojom:url_loader_base",
       "//third_party/blink/public/mojom/tokens",
+      "//ui/base/ime/mojom",
       "//ui/base/mojom",
       "//ui/events/mojom",
     ]
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom
index 75f5daaf..58891610 100644
--- a/third_party/blink/public/mojom/frame/frame.mojom
+++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -57,6 +57,7 @@
 import "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom";
 import "third_party/blink/public/mojom/widget/platform_widget.mojom";
 import "third_party/blink/public/mojom/window_features/window_features.mojom";
+import "ui/base/ime/mojom/virtual_keyboard_types.mojom";
 import "ui/base/mojom/window_open_disposition.mojom";
 import "ui/events/mojom/scroll_granularity.mojom";
 import "ui/gfx/geometry/mojom/geometry.mojom";
@@ -229,10 +230,9 @@
   // in order to service IntersectionObserver's that track visibility.
   SetNeedsOcclusionTracking(bool needs_tracking);
 
-  // Indication that the associated frame would like to change the policy on
-  // whether or not the virtual keyboard should overlay content (vs. default
-  // behavior of 'shifting' the content via insets and a scrollIntoView).
-  SetVirtualKeyboardOverlayPolicy(bool vk_overlays_content);
+  // Indicates that the associated frame would like to change the policy of how
+  // the virtual keyboard interacts with Blink's viewports.
+  SetVirtualKeyboardMode(ui.mojom.VirtualKeyboardMode type);
 
   // Notifies the browser that the associated frame has changed its visibility
   // status. Visibility status changes occur when the frame moves in/out
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
index a5245cd..b9185a1 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
@@ -660,6 +660,19 @@
   v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(diff);
 }
 
+bool SerializedScriptValue::IsLockedToAgentCluster() const {
+  return !wasm_modules_.empty() || !shared_array_buffers_contents_.empty() ||
+         base::ranges::any_of(attachments_,
+                              [](const auto& entry) {
+                                return entry.value->IsLockedToAgentCluster();
+                              }) ||
+         shared_value_conveyor_.has_value();
+}
+
+bool SerializedScriptValue::IsOriginCheckRequired() const {
+  return file_system_access_tokens_.size() > 0 || wasm_modules_.size() > 0;
+}
+
 // This ensures that the version number published in
 // WebSerializedScriptValueVersion.h matches the serializer's understanding.
 // TODO(jbroman): Fix this to also account for the V8-side version. See
@@ -668,8 +681,4 @@
                   SerializedScriptValue::kWireFormatVersion,
               "Update WebSerializedScriptValueVersion.h.");
 
-bool SerializedScriptValue::IsOriginCheckRequired() const {
-  return file_system_access_tokens_.size() > 0 || wasm_modules_.size() > 0;
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
index 6f37804..564b344 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
@@ -36,6 +36,7 @@
 #include "base/containers/span.h"
 #include "base/dcheck_is_on.h"
 #include "base/ranges/algorithm.h"
+#include "base/types/optional_util.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "third_party/blink/public/common/messaging/message_port_channel.h"
 #include "third_party/blink/public/common/messaging/message_port_descriptor.h"
@@ -288,13 +289,12 @@
 
   StreamArray& GetStreams() { return streams_; }
 
-  bool IsLockedToAgentCluster() const {
-    return !wasm_modules_.empty() || !shared_array_buffers_contents_.empty() ||
-           base::ranges::any_of(attachments_, [](const auto& entry) {
-             return entry.value->IsLockedToAgentCluster();
-           });
+  const v8::SharedValueConveyor* MaybeGetSharedValueConveyor() const {
+    return base::OptionalToPtr(shared_value_conveyor_);
   }
 
+  bool IsLockedToAgentCluster() const;
+
   // Returns true after serializing script values that remote origins cannot
   // access.
   bool IsOriginCheckRequired() const;
@@ -393,6 +393,7 @@
   FileSystemAccessTokensArray file_system_access_tokens_;
   HashMap<const void* const*, std::unique_ptr<Attachment>> attachments_;
 
+  absl::optional<v8::SharedValueConveyor> shared_value_conveyor_;
   bool has_registered_external_allocation_;
 #if DCHECK_IS_ON()
   bool was_unpacked_ = false;
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
index 1f8dae0..24460a77 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
@@ -805,4 +805,17 @@
   return v8::MaybeLocal<v8::SharedArrayBuffer>();
 }
 
+const v8::SharedValueConveyor*
+V8ScriptValueDeserializer::GetSharedValueConveyor(v8::Isolate* isolate) {
+  if (auto* conveyor =
+          serialized_script_value_->MaybeGetSharedValueConveyor()) {
+    return conveyor;
+  }
+  ExceptionState exception_state(isolate, ExceptionState::kUnknownContext,
+                                 nullptr, nullptr);
+  exception_state.ThrowDOMException(DOMExceptionCode::kDataCloneError,
+                                    "Unable to deserialize shared JS value.");
+  return nullptr;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h
index 286b37fc..f495ff6 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h
@@ -113,6 +113,7 @@
   v8::MaybeLocal<v8::SharedArrayBuffer> GetSharedArrayBufferFromId(
       v8::Isolate*,
       uint32_t) override;
+  const v8::SharedValueConveyor* GetSharedValueConveyor(v8::Isolate*) override;
 
   ScriptState* script_state_;
   UnpackedSerializedScriptValue* unpacked_value_;
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
index f056362..726fc86 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
@@ -999,4 +999,23 @@
   return WTF::Partitions::BufferFree(buffer);
 }
 
+bool V8ScriptValueSerializer::AdoptSharedValueConveyor(
+    v8::Isolate* isolate,
+    v8::SharedValueConveyor&& conveyor) {
+  auto* execution_context = ExecutionContext::From(script_state_);
+  if (for_storage_ || !execution_context->SharedArrayBufferTransferAllowed()) {
+    DCHECK(exception_state_);
+    ExceptionState exception_state(script_state_->GetIsolate(),
+                                   exception_state_->GetContext());
+    exception_state.ThrowDOMException(
+        DOMExceptionCode::kDataCloneError,
+        for_storage_
+            ? "A shared JS value cannot be serialized for storage."
+            : "Shared JS value conveyance requires self.crossOriginIsolated.");
+    return false;
+  }
+  serialized_script_value_->shared_value_conveyor_.emplace(std::move(conveyor));
+  return true;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h
index e1a493a5..89f7793 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h
@@ -122,6 +122,9 @@
                                size_t* actual_size) override;
   void FreeBufferMemory(void* buffer) override;
 
+  bool AdoptSharedValueConveyor(v8::Isolate* isolate,
+                                v8::SharedValueConveyor&& conveyor) override;
+
   ScriptState* script_state_;
   scoped_refptr<SerializedScriptValue> serialized_script_value_;
   v8::ValueSerializer serializer_;
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
index a13d7eac..0a499cb 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
@@ -2171,4 +2171,13 @@
   EXPECT_TRUE(result->IsNull());
 }
 
+TEST(V8ScriptValueSerializerTest, NoSharedValueConveyor) {
+  V8TestingScope scope;
+  scoped_refptr<SerializedScriptValue> input =
+      SerializedValue({0xff, 0x14, 0xff, 0x0f, 'p', 0x00});
+  v8::Local<v8::Value> result =
+      V8ScriptValueDeserializer(scope.GetScriptState(), input).Deserialize();
+  EXPECT_TRUE(result->IsNull());
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni
index 7a2c44a8..7b283c4d 100644
--- a/third_party/blink/renderer/bindings/generated_in_modules.gni
+++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -397,6 +397,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_command_encoder_descriptor.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_descriptor.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_descriptor.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_timestamp_write.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_timestamp_write.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pipeline_descriptor.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pipeline_descriptor.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_depth_stencil_state.cc",
@@ -459,6 +461,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_descriptor.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_layout.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_layout.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_timestamp_write.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_timestamp_write.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pipeline_descriptor.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pipeline_descriptor.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_request_adapter_options.cc",
@@ -1148,6 +1152,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compare_function.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compilation_message_type.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compilation_message_type.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_timestamp_location.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_timestamp_location.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_cull_mode.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_cull_mode.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_device_lost_reason.cc",
@@ -1172,6 +1178,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_primitive_topology.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_query_type.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_query_type.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_timestamp_location.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_timestamp_location.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_sampler_binding_type.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_sampler_binding_type.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_stencil_operation.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
index 77a10e06..5a2156d 100644
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -984,6 +984,7 @@
           "//third_party/blink/renderer/modules/webgpu/gpu_compilation_message.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_compute_pass_descriptor.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_compute_pass_encoder.idl",
+          "//third_party/blink/renderer/modules/webgpu/gpu_compute_pass_timestamp_write.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_compute_pipeline.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_compute_pipeline_descriptor.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_depth_stencil_state.idl",
@@ -1033,6 +1034,7 @@
           "//third_party/blink/renderer/modules/webgpu/gpu_render_pass_descriptor.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_render_pass_encoder.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_render_pass_layout.idl",
+          "//third_party/blink/renderer/modules/webgpu/gpu_render_pass_timestamp_write.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_render_pipeline.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_render_pipeline_descriptor.idl",
           "//third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl",
diff --git a/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl b/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl
index 7021ad6..2d770398 100644
--- a/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl
+++ b/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl
@@ -9,6 +9,7 @@
 #include <iterator>
 
 #include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "build/build_config.h"
 #include "build/buildflag.h"
 #include "build/chromeos_buildflags.h"
@@ -73,9 +74,8 @@
 
 base::span<const OriginTrialFeature> origin_trials::FeaturesForTrial(
     base::StringPiece trial_name) {
-  auto it = std::find_if(
-      std::begin(kTrialToFeaturesMap), std::end(kTrialToFeaturesMap),
-      [&](const auto& entry) { return entry.trial_name == trial_name; });
+  auto it = base::ranges::find(kTrialToFeaturesMap, trial_name,
+                               &TrialToFeature::trial_name);
   DCHECK(it != std::end(kTrialToFeaturesMap));
   return {it->features.begin(), it->feature_count};
 }
diff --git a/third_party/blink/renderer/core/DEPS b/third_party/blink/renderer/core/DEPS
index 197f05d..462aad7 100644
--- a/third_party/blink/renderer/core/DEPS
+++ b/third_party/blink/renderer/core/DEPS
@@ -98,6 +98,7 @@
     "+ui/base/ime/mojom/ime_types.mojom-blink-forward.h",
     "+ui/base/ime/mojom/ime_types.mojom-blink.h",
     "+ui/base/ime/mojom/text_input_state.mojom-blink.h",
+    "+ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h",
     "+ui/base/mojom/attributed_string.mojom-blink.h",
     "+ui/base/pointer/pointer_device.h",
     "+ui/base/resource/resource_scale_factor.h",
diff --git a/third_party/blink/renderer/core/aom/accessible_node.cc b/third_party/blink/renderer/core/aom/accessible_node.cc
index f0b363b..6a566f6c 100644
--- a/third_party/blink/renderer/core/aom/accessible_node.cc
+++ b/third_party/blink/renderer/core/aom/accessible_node.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/aom/accessible_node.h"
 
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/core/accessibility/ax_object_cache.h"
 #include "third_party/blink/renderer/core/aom/accessible_node_list.h"
 #include "third_party/blink/renderer/core/dom/element.h"
@@ -1028,10 +1029,8 @@
         "Node to remove is not a child of this node.");
     return;
   }
-  auto* ix = std::find_if(children_.begin(), children_.end(),
-                          [old_child](const Member<AccessibleNode> child) {
-                            return child.Get() == old_child;
-                          });
+  auto* ix =
+      base::ranges::find(children_, old_child, &Member<AccessibleNode>::Get);
   if (ix == children_.end()) {
     exception_state.ThrowDOMException(
         DOMExceptionCode::kInvalidAccessError,
diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/blink/renderer/core/css/style_engine.cc
index 78d0382..8474f1f 100644
--- a/third_party/blink/renderer/core/css/style_engine.cc
+++ b/third_party/blink/renderer/core/css/style_engine.cc
@@ -30,6 +30,8 @@
 #include "third_party/blink/renderer/core/css/style_engine.h"
 
 #include "base/auto_reset.h"
+#include "base/containers/adapters.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/public/mojom/frame/color_scheme.mojom-blink.h"
 #include "third_party/blink/public/platform/web_theme_engine.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_observable_array_css_style_sheet.h"
@@ -225,9 +227,9 @@
           origin == WebCssOrigin::kUser ? injected_user_style_sheets_
                                         : injected_author_style_sheets_;
   // Remove the last sheet that matches.
-  const auto& it =
-      std::find_if(injected_style_sheets.rbegin(), injected_style_sheets.rend(),
-                   [&key](const auto& item) { return item.first == key; });
+  const auto& it = base::ranges::find(
+      base::Reversed(injected_style_sheets), key,
+      &std::pair<StyleSheetKey, Member<CSSStyleSheet>>::first);
   if (it != injected_style_sheets.rend()) {
     injected_style_sheets.erase(std::next(it).base());
     if (origin == WebCssOrigin::kUser)
diff --git a/third_party/blink/renderer/core/document_transition/document_transition_style_tracker.cc b/third_party/blink/renderer/core/document_transition/document_transition_style_tracker.cc
index b09d9da9..837ba4d 100644
--- a/third_party/blink/renderer/core/document_transition/document_transition_style_tracker.cc
+++ b/third_party/blink/renderer/core/document_transition/document_transition_style_tracker.cc
@@ -6,6 +6,7 @@
 
 #include <limits>
 
+#include "base/containers/contains.h"
 #include "components/viz/common/shared_element_resource_id.h"
 #include "third_party/blink/public/resources/grit/blink_resources.h"
 #include "third_party/blink/renderer/core/animation/element_animations.h"
@@ -210,12 +211,8 @@
   auto& value = pending_shared_element_tags_
                     .insert(element, HashSet<std::pair<AtomicString, int>>())
                     .stored_value->value;
-  // Find the existing tag if one is there.
-  auto it = std::find_if(
-      value.begin(), value.end(),
-      [&tag](const std::pair<AtomicString, int>& p) { return p.first == tag; });
-  // If it is there, do nothing.
-  if (it != value.end())
+  // Find the existing tag if one is there. If it is there, do nothing.
+  if (base::Contains(value, tag, &std::pair<AtomicString, int>::first))
     return;
   // Otherwise, insert a new sequence id with this tag. We'll use the sequence
   // to sort later.
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index f4e6eb87..d06e20a 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -38,6 +38,7 @@
 #include "base/debug/dump_without_crashing.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "base/time/time.h"
 #include "cc/animation/animation_host.h"
 #include "cc/animation/animation_timeline.h"
@@ -3063,9 +3064,7 @@
 }
 
 void Document::RemoveAXContext(AXContext* context) {
-  auto** iter =
-      std::find_if(ax_contexts_.begin(), ax_contexts_.end(),
-                   [&context](const auto& item) { return item == context; });
+  auto** iter = base::ranges::find(ax_contexts_, context);
   if (iter != ax_contexts_.end())
     ax_contexts_.erase(iter);
   if (ax_contexts_.size() == 0) {
diff --git a/third_party/blink/renderer/core/editing/ime/edit_context.cc b/third_party/blink/renderer/core/editing/ime/edit_context.cc
index 4966d644..06a6e202 100644
--- a/third_party/blink/renderer/core/editing/ime/edit_context.cc
+++ b/third_party/blink/renderer/core/editing/ime/edit_context.cc
@@ -758,10 +758,8 @@
 }
 
 void EditContext::DetachElement(Element* element_to_detach) {
-  auto* it = std::find_if(attached_elements_.begin(), attached_elements_.end(),
-                          [element_to_detach](const auto& element) {
-                            return element.Get() == element_to_detach;
-                          });
+  auto* it = base::ranges::find(attached_elements_, element_to_detach,
+                                &Member<Element>::Get);
 
   if (it != attached_elements_.end())
     attached_elements_.erase(it);
diff --git a/third_party/blink/renderer/core/editing/markers/unsorted_document_marker_list_editor.cc b/third_party/blink/renderer/core/editing/markers/unsorted_document_marker_list_editor.cc
index 61de163..5fbc534 100644
--- a/third_party/blink/renderer/core/editing/markers/unsorted_document_marker_list_editor.cc
+++ b/third_party/blink/renderer/core/editing/markers/unsorted_document_marker_list_editor.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/editing/markers/unsorted_document_marker_list_editor.h"
 
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/core/editing/markers/spell_check_marker_list_impl.h"
 
 namespace blink {
@@ -93,12 +94,11 @@
     unsigned end_offset) {
   DCHECK_LE(start_offset, end_offset);
 
-  auto* const it =
-      std::find_if(list.begin(), list.end(),
-                   [start_offset, end_offset](const DocumentMarker* marker) {
-                     return marker->StartOffset() < end_offset &&
-                            marker->EndOffset() > start_offset;
-                   });
+  auto* const it = base::ranges::find_if(
+      list, [start_offset, end_offset](const DocumentMarker* marker) {
+        return marker->StartOffset() < end_offset &&
+               marker->EndOffset() > start_offset;
+      });
 
   if (it == list.end())
     return nullptr;
diff --git a/third_party/blink/renderer/core/editing/spellcheck/spell_check_requester.cc b/third_party/blink/renderer/core/editing/spellcheck/spell_check_requester.cc
index 0124615..a6165b3 100644
--- a/third_party/blink/renderer/core/editing/spellcheck/spell_check_requester.cc
+++ b/third_party/blink/renderer/core/editing/spellcheck/spell_check_requester.cc
@@ -25,6 +25,7 @@
 
 #include "third_party/blink/renderer/core/editing/spellcheck/spell_check_requester.h"
 
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/public/web/web_text_check_client.h"
 #include "third_party/blink/public/web/web_text_checking_completion.h"
@@ -257,12 +258,9 @@
   // Spellcheck requests for chunks of text in the same element should not
   // overwrite each other.
   if (!continuation) {
-    RequestQueue::const_iterator same_element_request = std::find_if(
-        request_queue_.begin(), request_queue_.end(),
-        [request](const SpellCheckRequest* queued_request) -> bool {
-          return request->RootEditableElement() ==
-                 queued_request->RootEditableElement();
-        });
+    RequestQueue::const_iterator same_element_request =
+        base::ranges::find(request_queue_, request->RootEditableElement(),
+                           &SpellCheckRequest::RootEditableElement);
     if (same_element_request != request_queue_.end())
       request_queue_.erase(same_element_request);
   }
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
index 26336be7..a916d82e6 100644
--- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
+++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h"
 
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/renderer/core/clipboard/data_transfer.h"
 #include "third_party/blink/renderer/core/clipboard/data_transfer_access_policy.h"
@@ -171,14 +172,15 @@
       const String& suggestion = marker_suggestions[suggestion_index];
       if (suggestion_infos.size() == max_number_of_suggestions)
         break;
-      if (std::find_if(suggestion_infos.begin(), suggestion_infos.end(),
-                       [marker, &suggestion](const TextSuggestionInfo& info) {
-                         return info.span_start ==
-                                    (int32_t)marker->StartOffset() &&
-                                info.span_end == (int32_t)marker->EndOffset() &&
-                                info.suggestion == suggestion;
-                       }) != suggestion_infos.end())
+      if (base::ranges::any_of(
+              suggestion_infos,
+              [marker, &suggestion](const TextSuggestionInfo& info) {
+                return info.span_start == (int32_t)marker->StartOffset() &&
+                       info.span_end == (int32_t)marker->EndOffset() &&
+                       info.suggestion == suggestion;
+              })) {
         continue;
+      }
 
       TextSuggestionInfo suggestion_info;
       suggestion_info.marker_tag = marker->Tag();
diff --git a/third_party/blink/renderer/core/exported/web_media_player_impl_unittest.cc b/third_party/blink/renderer/core/exported/web_media_player_impl_unittest.cc
index 3f419fb7..e60fd1f3 100644
--- a/third_party/blink/renderer/core/exported/web_media_player_impl_unittest.cc
+++ b/third_party/blink/renderer/core/exported/web_media_player_impl_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
@@ -2198,21 +2199,16 @@
         auto* player_dump = it->second.get();
         const auto& entries = player_dump->entries();
 
-        auto instance_counter_it =
-            std::find_if(entries.begin(), entries.end(), [](const auto& e) {
-              auto* name =
-                  base::trace_event::MemoryAllocatorDump::kNameObjectCount;
-              return e.name == name && e.value_uint64 == 1;
-            });
-        ASSERT_NE(entries.end(), instance_counter_it);
+        ASSERT_TRUE(base::ranges::any_of(entries, [](const auto& e) {
+          auto* name = base::trace_event::MemoryAllocatorDump::kNameObjectCount;
+          return e.name == name && e.value_uint64 == 1;
+        }));
 
         if (args.level_of_detail ==
             base::trace_event::MemoryDumpLevelOfDetail::DETAILED) {
-          auto player_state_it =
-              std::find_if(entries.begin(), entries.end(), [](const auto& e) {
-                return e.name == "player_state" && !e.value_string.empty();
-              });
-          ASSERT_NE(entries.end(), player_state_it);
+          ASSERT_TRUE(base::ranges::any_of(entries, [](const auto& e) {
+            return e.name == "player_state" && !e.value_string.empty();
+          }));
         }
         dump_count++;
       });
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index 9dd8b8b..a95e5a7 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -2789,6 +2789,16 @@
   if (!GetPage()->MainFrame()->IsLocalFrame())
     return;
 
+  if (virtual_keyboard_mode_ != description.virtual_keyboard_mode) {
+    // TODO(bokan): This should handle portals.
+    DCHECK(MainFrameImpl()->IsOutermostMainFrame());
+    virtual_keyboard_mode_ = description.virtual_keyboard_mode;
+    mojom::blink::LocalFrameHost& frame_host =
+        MainFrameImpl()->GetFrame()->GetLocalFrameHostRemote();
+
+    frame_host.SetVirtualKeyboardMode(virtual_keyboard_mode_);
+  }
+
   if (!GetSettings()->ViewportEnabled()) {
     GetPageScaleConstraintsSet().ClearPageDefinedConstraints();
     UpdateMainFrameLayoutSize();
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h
index 49da24d..ac381115 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.h
+++ b/third_party/blink/renderer/core/exported/web_view_impl.h
@@ -73,6 +73,7 @@
 #include "third_party/blink/renderer/platform/wtf/hash_set.h"
 #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/vector2d_f.h"
@@ -466,6 +467,9 @@
   bool FakePageScaleAnimationUseAnchorForTesting() const {
     return fake_page_scale_animation_use_anchor_;
   }
+  ui::mojom::blink::VirtualKeyboardMode VirtualKeyboardModeForTesting() {
+    return virtual_keyboard_mode_;
+  }
 
   void EnterFullscreen(LocalFrame&,
                        const FullscreenOptions*,
@@ -933,6 +937,12 @@
   // uses it whenever asking the browser process to allocate new storage areas.
   SessionStorageNamespaceId session_storage_namespace_id_;
 
+  // The mode that the virtual keyboard is in, with respect to how it will
+  // affect the Blink viewport and layout. This can be set by the page using
+  // the viewport meta tag.
+  ui::mojom::blink::VirtualKeyboardMode virtual_keyboard_mode_ =
+      ui::mojom::blink::VirtualKeyboardMode::kUnset;
+
   // All the registered observers.
   base::ObserverList<WebViewObserver> observers_;
 
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
index 79d32ea55..f002b07 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -1888,11 +1888,6 @@
   return custom_elements_;
 }
 
-void LocalDOMWindow::SetModulator(Modulator* modulator) {
-  DCHECK(!modulator_);
-  modulator_ = modulator;
-}
-
 External* LocalDOMWindow::external() {
   if (!external_)
     external_ = MakeGarbageCollected<External>();
@@ -2257,7 +2252,6 @@
   visitor->Trace(navigator_);
   visitor->Trace(media_);
   visitor->Trace(custom_elements_);
-  visitor->Trace(modulator_);
   visitor->Trace(external_);
   visitor->Trace(visualViewport_);
   visitor->Trace(event_listener_observers_);
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.h b/third_party/blink/renderer/core/frame/local_dom_window.h
index f739d3b..6b7b6cd 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.h
+++ b/third_party/blink/renderer/core/frame/local_dom_window.h
@@ -528,11 +528,6 @@
   mutable Member<Navigator> navigator_;
   mutable Member<StyleMedia> media_;
   mutable Member<CustomElementRegistry> custom_elements_;
-  // We store reference to Modulator here to have it TraceWrapper-ed.
-  // This is wrong, as Modulator is per-context, where as LocalDOMWindow is
-  // shared among context. However, this *works* as Modulator is currently only
-  // enabled in the main world,
-  Member<Modulator> modulator_;
   Member<External> external_;
 
   String status_;
diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
index d65ce43..2f6e5c8 100644
--- a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
@@ -607,9 +607,9 @@
   // The rect passed to us from content is in DIP, relative to the main frame.
   // This doesn't take the page's zoom factor into account so we must scale by
   // the inverse of the page zoom in order to get correct client coordinates.
-  // Note that when use-zoom-for-dsf is enabled, WindowToViewportScalar will
-  // be the true device scale factor, and PageZoomFactor will be the combination
-  // of the device scale factor and the zoom percent of the page.
+  // WindowToViewportScalar is the device scale factor while PageZoomFactor is
+  // the combination of the device scale factor and the zoom factor of the
+  // page.
   blink::LocalFrame& local_frame_root = frame_->LocalFrameRoot();
   const float window_to_viewport_factor =
       page->GetChromeClient().WindowToViewportScalar(&local_frame_root, 1.0f);
diff --git a/third_party/blink/renderer/core/frame/viewport_data.cc b/third_party/blink/renderer/core/frame/viewport_data.cc
index 7aac63c..345c064 100644
--- a/third_party/blink/renderer/core/frame/viewport_data.cc
+++ b/third_party/blink/renderer/core/frame/viewport_data.cc
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/core/page/chrome_client.h"
 #include "third_party/blink/renderer/core/page/page.h"
 #include "third_party/blink/renderer/core/page/viewport_description.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h"
 
 namespace blink {
 
@@ -67,6 +68,13 @@
   if (ShouldOverrideLegacyDescription(viewport_description_.type))
     applied_viewport_description = viewport_description_;
 
+  // Setting `navigator.virtualKeyboard.overlaysContent` should override the
+  // virtual-keyboard mode set from the viewport meta tag.
+  if (virtual_keyboard_overlays_content_) {
+    applied_viewport_description.virtual_keyboard_mode =
+        ui::mojom::blink::VirtualKeyboardMode::kOverlaysContent;
+  }
+
   return applied_viewport_description;
 }
 
@@ -119,4 +127,12 @@
   UpdateViewportDescription();
 }
 
+void ViewportData::SetVirtualKeyboardOverlaysContent(bool overlays_content) {
+  if (virtual_keyboard_overlays_content_ == overlays_content)
+    return;
+
+  virtual_keyboard_overlays_content_ = overlays_content;
+  UpdateViewportDescription();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/viewport_data.h b/third_party/blink/renderer/core/frame/viewport_data.h
index a7771db..c9d60a22 100644
--- a/third_party/blink/renderer/core/frame/viewport_data.h
+++ b/third_party/blink/renderer/core/frame/viewport_data.h
@@ -40,6 +40,11 @@
     return viewport_fit_;
   }
 
+  CORE_EXPORT void SetVirtualKeyboardOverlaysContent(bool overlays_content);
+  CORE_EXPORT bool GetVirtualKeyboardOverlaysContent() const {
+    return virtual_keyboard_overlays_content_;
+  }
+
  private:
   Member<Document> document_;
 
@@ -47,6 +52,9 @@
   ViewportDescription legacy_viewport_description_;
   Length viewport_default_min_width_;
 
+  // Whether overlays content was set via the virtualKeyboard API.
+  bool virtual_keyboard_overlays_content_ = false;
+
   // Stores the current value viewport-fit value.
   mojom::ViewportFit viewport_fit_ = blink::mojom::ViewportFit::kAuto;
   bool force_expand_display_cutout_ = false;
diff --git a/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc b/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
index 46572c3..686ddb6 100644
--- a/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
+++ b/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
@@ -25,6 +25,7 @@
 
 #include "third_party/blink/renderer/core/html/forms/date_time_edit_element.h"
 
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/core/css/style_change_reason.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/text.h"
@@ -857,9 +858,7 @@
 }
 
 DateTimeFieldElement* DateTimeEditElement::GetField(DateTimeField type) const {
-  auto* it = std::find_if(
-      fields_.begin(), fields_.end(),
-      [&type](const auto& field) { return field->Type() == type; });
+  auto* it = base::ranges::find(fields_, type, &DateTimeFieldElement::Type);
   if (it == fields_.end())
     return nullptr;
   return *it;
diff --git a/third_party/blink/renderer/core/html/html_meta_element.cc b/third_party/blink/renderer/core/html/html_meta_element.cc
index 2cbc7c1..abc6c3a 100644
--- a/third_party/blink/renderer/core/html/html_meta_element.cc
+++ b/third_party/blink/renderer/core/html/html_meta_element.cc
@@ -65,7 +65,7 @@
          c == ',' || c == '\0';
 }
 
-void HTMLMetaElement::ParseContentAttribute(
+void HTMLMetaElement::ParseViewportContentAttribute(
     const String& content,
     ViewportDescription& viewport_description,
     Document* document,
@@ -330,6 +330,15 @@
   return mojom::ViewportFit::kAuto;
 }
 
+// static
+absl::optional<ui::mojom::blink::VirtualKeyboardMode>
+HTMLMetaElement::ParseVirtualKeyboardValueAsEnum(const String& value) {
+  if (EqualIgnoringASCIICase(value, "resize-layout"))
+    return ui::mojom::blink::VirtualKeyboardMode::kResizeLayout;
+
+  return absl::nullopt;
+}
+
 void HTMLMetaElement::ProcessViewportKeyValuePair(
     Document* document,
     bool report_warnings,
@@ -389,6 +398,19 @@
     }
   } else if (key_string == "shrink-to-fit") {
     // Ignore vendor-specific argument.
+  } else if (features::OSKResizesVisualViewport() &&
+             key_string == "virtual-keyboard") {
+    absl::optional<ui::mojom::blink::VirtualKeyboardMode> resize_type =
+        ParseVirtualKeyboardValueAsEnum(value_string);
+
+    if (resize_type) {
+      description.virtual_keyboard_mode = resize_type.value();
+    } else {
+      description.virtual_keyboard_mode =
+          ui::mojom::blink::VirtualKeyboardMode::kUnset;
+      ReportViewportWarning(document, kUnrecognizedViewportArgumentValueError,
+                            value_string, key_string);
+    }
   } else if (report_warnings) {
     ReportViewportWarning(document, kUnrecognizedViewportArgumentKeyError,
                           key_string, String());
@@ -452,8 +474,8 @@
     ViewportDescription& description,
     Document* document,
     bool viewport_meta_zero_values_quirk) {
-  ParseContentAttribute(content, description, document,
-                        viewport_meta_zero_values_quirk);
+  ParseViewportContentAttribute(content, description, document,
+                                viewport_meta_zero_values_quirk);
 
   if (description.min_zoom == ViewportDescription::kValueAuto)
     description.min_zoom = 0.25;
diff --git a/third_party/blink/renderer/core/html/html_meta_element.h b/third_party/blink/renderer/core/html/html_meta_element.h
index 13d35a1..bb6f9b23 100644
--- a/third_party/blink/renderer/core/html/html_meta_element.h
+++ b/third_party/blink/renderer/core/html/html_meta_element.h
@@ -24,10 +24,12 @@
 #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_HTML_META_ELEMENT_H_
 
 #include "services/network/public/cpp/client_hints.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/page/viewport_description.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h"
 
 namespace blink {
 
@@ -75,10 +77,11 @@
                                           const String& value,
                                           bool viewport_meta_zero_values_quirk,
                                           ViewportDescription&);
-  static void ParseContentAttribute(const String& content,
-                                    ViewportDescription&,
-                                    Document*,
-                                    bool viewport_meta_zero_values_quirk);
+  static void ParseViewportContentAttribute(
+      const String& content,
+      ViewportDescription&,
+      Document*,
+      bool viewport_meta_zero_values_quirk);
 
   void ParseAttribute(const AttributeModificationParams&) override;
   InsertionNotificationRequest InsertedInto(ContainerNode&) override;
@@ -116,6 +119,9 @@
   static mojom::ViewportFit ParseViewportFitValueAsEnum(bool& unknown_value,
                                                         const String& value);
 
+  static absl::optional<ui::mojom::blink::VirtualKeyboardMode>
+  ParseVirtualKeyboardValueAsEnum(const String& value);
+
   static void ReportViewportWarning(Document*,
                                     ViewportErrorCode,
                                     const String& replacement1,
diff --git a/third_party/blink/renderer/core/html/html_plugin_element.cc b/third_party/blink/renderer/core/html/html_plugin_element.cc
index 21055bf..cfdab9f 100644
--- a/third_party/blink/renderer/core/html/html_plugin_element.cc
+++ b/third_party/blink/renderer/core/html/html_plugin_element.cc
@@ -23,6 +23,7 @@
 #include "third_party/blink/renderer/core/html/html_plugin_element.h"
 
 #include "base/feature_list.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h"
 #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h"
@@ -99,17 +100,14 @@
 }
 
 void PluginParameters::MapDataParamToSrc() {
-  auto* src = std::find_if(names_.begin(), names_.end(), [](auto name) {
-    return EqualIgnoringASCIICase(name, "src");
-  });
-
-  if (src != names_.end()) {
+  if (base::ranges::any_of(names_, [](auto name) {
+        return EqualIgnoringASCIICase(name, "src");
+      })) {
     return;
   }
 
-  auto* data = std::find_if(names_.begin(), names_.end(), [](auto name) {
-    return EqualIgnoringASCIICase(name, "data");
-  });
+  auto* data = base::ranges::find_if(
+      names_, [](auto name) { return EqualIgnoringASCIICase(name, "data"); });
 
   if (data != names_.end()) {
     AppendNameWithValue(
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
index 458cdab..dca9c8d 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
@@ -4,6 +4,8 @@
 
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h"
 
+#include "base/containers/adapters.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/core/editing/position_with_affinity.h"
 #include "third_party/blink/renderer/core/html/html_br_element.h"
 #include "third_party/blink/renderer/core/layout/geometry/writing_mode_converter.h"
@@ -414,8 +416,8 @@
       return 0;
     }
     const NGTextOffset offset = TextOffset();
-    auto* const item = std::find_if(
-        items->begin(), items->end(), [offset](const NGInlineItem& item) {
+    auto* const item =
+        base::ranges::find_if(*items, [offset](const NGInlineItem& item) {
           return item.StartOffset() <= offset.start &&
                  item.EndOffset() >= offset.end;
         });
@@ -429,11 +431,8 @@
         *GetLayoutObject()->FragmentItemsContainer();
     const auto& items =
         block_flow.GetNGInlineNodeData()->ItemsData(UsesFirstLineStyle()).items;
-    const LayoutObject* const layout_object = GetLayoutObject();
-    const auto* const item = std::find_if(
-        items.begin(), items.end(), [layout_object](const NGInlineItem& item) {
-          return item.GetLayoutObject() == layout_object;
-        });
+    const auto* const item = base::ranges::find(items, GetLayoutObject(),
+                                                &NGInlineItem::GetLayoutObject);
     DCHECK(item != items.end()) << this;
     return item->BidiLevel();
   }
@@ -1013,9 +1012,8 @@
 
 void NGInlineCursor::MoveToFirstLine() {
   if (HasRoot()) {
-    auto iter = std::find_if(
-        items_.begin(), items_.end(),
-        [](const auto& item) { return item.Type() == NGFragmentItem::kLine; });
+    auto iter = base::ranges::find(items_, NGFragmentItem::kLine,
+                                   &NGFragmentItem::Type);
     if (iter != items_.end()) {
       MoveToItem(iter);
       return;
@@ -1088,9 +1086,8 @@
 
 void NGInlineCursor::MoveToLastLine() {
   DCHECK(HasRoot());
-  auto iter = std::find_if(
-      items_.rbegin(), items_.rend(),
-      [](const auto& item) { return item.Type() == NGFragmentItem::kLine; });
+  auto iter = base::ranges::find(base::Reversed(items_), NGFragmentItem::kLine,
+                                 &NGFragmentItem::Type);
   if (iter != items_.rend())
     MoveToItem(std::next(iter).base());
   else
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
index e4e2128..97d36a4f 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -4,10 +4,10 @@
 
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
 
-#include <algorithm>
 #include <memory>
 #include <numeric>
 
+#include "base/ranges/algorithm.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
@@ -774,8 +774,8 @@
   static unsigned ConvertDOMOffsetToTextContent(
       base::span<const NGOffsetMappingUnit> units,
       unsigned offset) {
-    auto it = std::find_if(
-        units.begin(), units.end(), [offset](const NGOffsetMappingUnit& unit) {
+    auto it =
+        base::ranges::find_if(units, [offset](const NGOffsetMappingUnit& unit) {
           return unit.DOMStart() <= offset && offset <= unit.DOMEnd();
         });
     DCHECK(it != units.end());
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.cc
index 13f730e2..2d2637e 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.cc
@@ -5,6 +5,8 @@
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h"
 
 #include <algorithm>
+
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/core/dom/node.h"
 #include "third_party/blink/renderer/core/dom/node_computed_style.h"
 #include "third_party/blink/renderer/core/dom/text.h"
@@ -377,11 +379,8 @@
 base::span<const NGOffsetMappingUnit>
 NGOffsetMapping::GetMappingUnitsForLayoutObject(
     const LayoutObject& layout_object) const {
-  const auto* begin =
-      std::find_if(units_.begin(), units_.end(),
-                   [&layout_object](const NGOffsetMappingUnit& unit) {
-                     return unit.GetLayoutObject() == layout_object;
-                   });
+  const auto* begin = base::ranges::find(units_, layout_object,
+                                         &NGOffsetMappingUnit::GetLayoutObject);
   CHECK_NE(begin, units_.end());
   const auto* end =
       std::find_if(std::next(begin), units_.end(),
diff --git a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc
index bf70e1b..6223152 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc
@@ -4,7 +4,10 @@
 
 #include "third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.h"
 
+#include <algorithm>
+
 #include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "base/trace_event/trace_event.h"
 #include "third_party/blink/renderer/core/layout/ng/svg/resolved_text_layout_attributes_iterator.h"
 #include "third_party/blink/renderer/core/layout/ng/svg/svg_inline_node_data.h"
@@ -463,10 +466,9 @@
 
     const auto& text_path_ranges = inline_node_.SvgTextPathRangeList();
     const auto* text_path_iter =
-        std::find_if(text_path_ranges.begin(), text_path_ranges.end(),
-                     [i](const auto& range) {
-                       return range.start_index <= i && i <= range.end_index;
-                     });
+        base::ranges::find_if(text_path_ranges, [i](const auto& range) {
+          return range.start_index <= i && i <= range.end_index;
+        });
     if (text_path_iter != text_path_ranges.end()) {
       // Anchoring should be scoped within the <textPath>.
       // Non-anchored text following <textPath> will be handled in
@@ -800,10 +802,8 @@
         PhysicalRect(gfx::ToEnclosingRect(unscaled_visual_rect)));
   }
   // |items| should not have kLine items other than the first one.
-  DCHECK_EQ(std::find_if(items.begin() + 1, items.end(),
-                         [](const auto& item) {
-                           return item->Type() == NGFragmentItem::kLine;
-                         }),
+  DCHECK_EQ(base::ranges::find(items.begin() + 1, items.end(),
+                               NGFragmentItem::kLine, &NGFragmentItem::Type),
             items.end());
 }
 
@@ -820,11 +820,8 @@
   // This implementation is O(N) where N is the number of <textPath>s in
   // a <text>. If this function is a performance bottleneck, we should add
   // |first_in_text_path| flag to NGSvgCharacterData.
-  const auto& text_path_ranges = inline_node_.SvgTextPathRangeList();
-  return std::find_if(text_path_ranges.begin(), text_path_ranges.end(),
-                      [index](const auto& range) {
-                        return range.start_index == index;
-                      }) != text_path_ranges.end();
+  return base::Contains(inline_node_.SvgTextPathRangeList(), index,
+                        &SvgTextContentRange::start_index);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_attributes_builder.cc b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_attributes_builder.cc
index 865a7347..17541a81 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_attributes_builder.cc
+++ b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_attributes_builder.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_attributes_builder.h"
 
 #include "base/containers/adapters.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
@@ -134,23 +135,23 @@
   // or EmptyValue().
 
   float X() const {
-    auto it = std::find_if(stack_.rbegin(), stack_.rend(),
-                           [](const auto& attrs) { return attrs->HasX(); });
+    auto it = base::ranges::find_if(base::Reversed(stack_),
+                                    &LayoutAttributesIterator::HasX);
     return it != stack_.rend() ? (*it)->X() : SVGCharacterData::EmptyValue();
   }
   float Y() const {
-    auto it = std::find_if(stack_.rbegin(), stack_.rend(),
-                           [](const auto& attrs) { return attrs->HasY(); });
+    auto it = base::ranges::find_if(base::Reversed(stack_),
+                                    &LayoutAttributesIterator::HasY);
     return it != stack_.rend() ? (*it)->Y() : SVGCharacterData::EmptyValue();
   }
   float Dx() const {
-    auto it = std::find_if(stack_.rbegin(), stack_.rend(),
-                           [](const auto& attrs) { return attrs->HasDx(); });
+    auto it = base::ranges::find_if(base::Reversed(stack_),
+                                    &LayoutAttributesIterator::HasDx);
     return it != stack_.rend() ? (*it)->Dx() : SVGCharacterData::EmptyValue();
   }
   float Dy() const {
-    auto it = std::find_if(stack_.rbegin(), stack_.rend(),
-                           [](const auto& attrs) { return attrs->HasDy(); });
+    auto it = base::ranges::find_if(base::Reversed(stack_),
+                                    &LayoutAttributesIterator::HasDy);
     return it != stack_.rend() ? (*it)->Dy() : SVGCharacterData::EmptyValue();
   }
 
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc b/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc
index 5e40114..b2300e5 100644
--- a/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc
+++ b/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "base/containers/span.h"
+#include "base/ranges/algorithm.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/time/time.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -274,9 +275,8 @@
   EXPECT_TRUE(validation_params[0].origin.is_secure);
 
   EXPECT_EQ(2ul, validation_params[0].third_party_origin_info.size());
-  TrialTokenValidator::OriginInfo* unrelated_info = std::find_if(
-      validation_params[0].third_party_origin_info.begin(),
-      validation_params[0].third_party_origin_info.end(),
+  TrialTokenValidator::OriginInfo* unrelated_info = base::ranges::find_if(
+      validation_params[0].third_party_origin_info,
       [](const TrialTokenValidator::OriginInfo& item) {
         return item.origin.IsSameOriginWith(GURL(kUnrelatedSecureOrigin));
       });
@@ -284,12 +284,11 @@
   EXPECT_TRUE(unrelated_info->is_secure);
 
   TrialTokenValidator::OriginInfo* insecure_origin_info =
-      std::find_if(validation_params[0].third_party_origin_info.begin(),
-                   validation_params[0].third_party_origin_info.end(),
-                   [](const TrialTokenValidator::OriginInfo& item) {
-                     return item.origin.IsSameOriginWith(
-                         GURL(kFrobulateEnabledOriginInsecure));
-                   });
+      base::ranges::find_if(validation_params[0].third_party_origin_info,
+                            [](const TrialTokenValidator::OriginInfo& item) {
+                              return item.origin.IsSameOriginWith(
+                                  GURL(kFrobulateEnabledOriginInsecure));
+                            });
   ASSERT_NE(validation_params[0].third_party_origin_info.end(),
             insecure_origin_info);
   EXPECT_FALSE(insecure_origin_info->is_secure);
diff --git a/third_party/blink/renderer/core/page/viewport_description.h b/third_party/blink/renderer/core/page/viewport_description.h
index be33cd3..5f2e668 100644
--- a/third_party/blink/renderer/core/page/viewport_description.h
+++ b/third_party/blink/renderer/core/page/viewport_description.h
@@ -35,6 +35,7 @@
 #include "third_party/blink/renderer/core/frame/page_scale_constraints.h"
 #include "third_party/blink/renderer/platform/geometry/length.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h"
 #include "ui/gfx/geometry/size_f.h"
 
 namespace blink {
@@ -49,10 +50,12 @@
     kUserAgentStyleSheet,
     kHandheldFriendlyMeta,
     kMobileOptimizedMeta,
-    kViewportMeta,
-    kAuthorStyleSheet
+    kViewportMeta
   } type;
 
+  ui::mojom::blink::VirtualKeyboardMode virtual_keyboard_mode =
+      ui::mojom::blink::VirtualKeyboardMode::kUnset;
+
   // Enums used to record the kind of viewport in the Viewport.MetaTagType
   // histogram. These must match the enums in histograms.xml and existing
   // entries must not be changed.
@@ -96,10 +99,9 @@
   PageScaleConstraints Resolve(const gfx::SizeF& initial_viewport_size,
                                const Length& legacy_fallback_width) const;
 
-  // When --use-zoom-for-dsf is enabled, if the type is kFixed, these Length
-  // values (i.e., |min_width|, |max_width|, |min_height|, and |max_height|)
-  // must be in physical pixel scale. When --use-zoom-for-dsf is disabled, if
-  // the type is kFixed, these Length values must be in DIP scale.
+  // If the type is kFixed, these Length values (i.e., |min_width|,
+  // |max_width|, |min_height|, and |max_height|) must be in physical pixel
+  // scale.
   Length min_width;
   Length max_width;
   Length min_height;
@@ -137,6 +139,7 @@
            min_zoom_is_explicit == other.min_zoom_is_explicit &&
            max_zoom_is_explicit == other.max_zoom_is_explicit &&
            user_zoom_is_explicit == other.user_zoom_is_explicit &&
+           virtual_keyboard_mode == other.virtual_keyboard_mode &&
            viewport_fit_ == other.viewport_fit_;
   }
 
diff --git a/third_party/blink/renderer/core/page/viewport_test.cc b/third_party/blink/renderer/core/page/viewport_test.cc
index 4d69983..b27ad51 100644
--- a/third_party/blink/renderer/core/page/viewport_test.cc
+++ b/third_party/blink/renderer/core/page/viewport_test.cc
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/test/scoped_feature_list.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/web_url_loader_mock_factory.h"
 #include "third_party/blink/public/web/web_console_message.h"
 #include "third_party/blink/public/web/web_frame.h"
@@ -52,6 +54,7 @@
 #include "third_party/blink/renderer/platform/testing/testing_platform_support.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 #include "third_party/blink/renderer/platform/testing/url_test_helpers.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/size.h"
@@ -3145,4 +3148,195 @@
   ExpectType(ViewportDescription::ViewportUMAType::kXhtmlMobileProfile);
 }
 
+class ViewportMetaSimTest : public SimTest {
+ public:
+  ViewportMetaSimTest() = default;
+
+  void SetUp() override {
+    SimTest::SetUp();
+    WebView().GetSettings()->SetViewportEnabled(true);
+    WebView().GetSettings()->SetViewportMetaEnabled(true);
+    WebView().MainFrameViewWidget()->Resize(gfx::Size(800, 600));
+  }
+
+  void LoadPageWithHTML(const String& html) {
+    SimRequest request("https://example.com/test.html", "text/html");
+    LoadURL("https://example.com/test.html");
+    request.Complete(html);
+    blink::test::RunPendingTasks();
+  }
+
+ protected:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+// Test that, when the OSKResizesVisualViewport flag is enabled, the mode isn't
+// set when a virtual-keyboard key isn't provided
+TEST_F(ViewportMetaSimTest, VirtualKeyboardUnsetWithFlag) {
+  scoped_feature_list_.InitAndEnableFeature(
+      features::kOSKResizesVisualViewport);
+
+  // Without a viewport meta tag.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+  )HTML");
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+
+  // With a viewport meta tag.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="width=device-width">
+  )HTML");
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+}
+
+// Test that, when the OSKResizesVisualViewport flag isn't enabled, the mode
+// isn't set when a virtual-keyboard key isn't provided
+TEST_F(ViewportMetaSimTest, VirtualKeyboardUnsetWithoutFlag) {
+  scoped_feature_list_.InitAndDisableFeature(
+      features::kOSKResizesVisualViewport);
+
+  // Without a viewport meta tag.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+  )HTML");
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+
+  // With a viewport meta tag.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="width=device-width">
+  )HTML");
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+}
+
+// Test that without the OSKResizesVisualViewport flag the virtual-keyboard key
+// is not parsed and is treated as an unknown key.
+TEST_F(ViewportMetaSimTest, VirtualKeyboardNotParsedWithoutFlag) {
+  scoped_feature_list_.InitAndDisableFeature(
+      features::kOSKResizesVisualViewport);
+
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="virtual-keyboard=invalid-value">
+  )HTML");
+
+  // Parsing should fail at the key.
+  EXPECT_EQ(ConsoleMessages().front(),
+            "The key \"virtual-keyboard\" is not recognized and ignored.");
+}
+
+// Test that the OSKResizesVisualViewport flag causes the virtual-keyboard key
+// to be parsed.
+TEST_F(ViewportMetaSimTest, VirtualKeyboardParsingEnabledByFlag) {
+  scoped_feature_list_.InitAndEnableFeature(
+      features::kOSKResizesVisualViewport);
+
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="virtual-keyboard=invalid-value">
+  )HTML");
+
+  // Parsing will still fail but now because the value isn't a valid one.
+  EXPECT_EQ(ConsoleMessages().front(),
+            "The value \"invalid-value\" for key \"virtual-keyboard\" is "
+            "invalid, and has been ignored.");
+}
+
+// Test that the resize-layout value is correctly parsed and set on the
+// virtual-keyboard key.
+TEST_F(ViewportMetaSimTest, VirtualKeyboardResizeLayout) {
+  scoped_feature_list_.InitAndEnableFeature(
+      features::kOSKResizesVisualViewport);
+
+  // Blank page to set the default.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+  )HTML");
+  ASSERT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+
+  // Basic test case
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="virtual-keyboard=resize-layout">
+  )HTML");
+
+  EXPECT_TRUE(ConsoleMessages().IsEmpty()) << ConsoleMessages().front();
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kResizeLayout);
+
+  // Ensure a blank page resets the value.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+  )HTML");
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+
+  // Mixed with other keys.
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="width=device-width,virtual-keyboard=resize-layout,minimum-scale=1">
+  )HTML");
+
+  EXPECT_TRUE(ConsoleMessages().IsEmpty()) << ConsoleMessages().front();
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kResizeLayout);
+}
+
+// Test that the virtualKeyboard.overlaysContent API overrides any values set
+// from the meta tag and that unsetting it goes back to using the meta tag
+// keyboard mode.
+TEST_F(ViewportMetaSimTest, VirtualKeyboardAPIOverlaysContent) {
+  v8::HandleScope handle_scope(
+      WebView().GetPage()->GetAgentGroupScheduler().Isolate());
+  scoped_feature_list_.InitAndEnableFeature(
+      features::kOSKResizesVisualViewport);
+
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="virtual-keyboard=resize-layout">
+  )HTML");
+
+  ASSERT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kResizeLayout);
+
+  MainFrame().ExecuteScript(
+      WebScriptSource("navigator.virtualKeyboard.overlaysContent = true;"));
+
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kOverlaysContent);
+
+  MainFrame().ExecuteScript(
+      WebScriptSource("navigator.virtualKeyboard.overlaysContent = false;"));
+
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kResizeLayout);
+}
+
+// Ensure that updating the content to a bad value causes the mode to become
+// unset.
+TEST_F(ViewportMetaSimTest, VirtualKeyboardUpdateContent) {
+  scoped_feature_list_.InitAndEnableFeature(
+      features::kOSKResizesVisualViewport);
+
+  LoadPageWithHTML(R"HTML(
+    <!DOCTYPE html>
+    <meta name="viewport" content="virtual-keyboard=resize-layout">
+  )HTML");
+
+  ASSERT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kResizeLayout);
+
+  Element* meta = GetDocument().QuerySelector("[name=viewport]");
+  meta->setAttribute(html_names::kContentAttr, "virtual-keyboard=bad-value");
+
+  EXPECT_EQ(WebView().VirtualKeyboardModeForTesting(),
+            ui::mojom::blink::VirtualKeyboardMode::kUnset);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
index 9d35ea9..bff21f2 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h"
 
 #include "base/containers/adapters.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/core/css/style_engine.h"
 #include "third_party/blink/renderer/core/editing/drag_caret.h"
 #include "third_party/blink/renderer/core/editing/frame_selection.h"
@@ -2020,9 +2021,7 @@
   if (!element)
     return false;
   const auto children = PhysicalFragment().Children();
-  auto it = std::find_if(
-      children.begin(), children.end(),
-      [element](const NGLink& link) { return link->GetNode() == element; });
+  auto it = base::ranges::find(children, element, &NGPhysicalFragment::GetNode);
   if (it == children.end())
     return false;
   return hit_test.AddNodeToResultWithContentOffset(
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_test.cc b/third_party/blink/renderer/core/permissions_policy/permissions_policy_test.cc
index a5dd0d9d..655265c 100644
--- a/third_party/blink/renderer/core/permissions_policy/permissions_policy_test.cc
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_test.cc
@@ -7,6 +7,7 @@
 #include <map>
 #include <string>
 
+#include "base/ranges/algorithm.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom-blink.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
@@ -1141,10 +1142,8 @@
   bool IsFeatureAllowedEverywhere(
       mojom::blink::PermissionsPolicyFeature feature,
       const ParsedPermissionsPolicy& policy) {
-    const auto& result = std::find_if(policy.begin(), policy.end(),
-                                      [feature](const auto& declaration) {
-                                        return declaration.feature == feature;
-                                      });
+    const auto& result = base::ranges::find(
+        policy, feature, &ParsedPermissionsPolicyDeclaration::feature);
     if (result == policy.end())
       return false;
 
@@ -1157,10 +1156,8 @@
   bool IsFeatureDisallowedEverywhere(
       mojom::blink::PermissionsPolicyFeature feature,
       const ParsedPermissionsPolicy& policy) {
-    const auto& result = std::find_if(policy.begin(), policy.end(),
-                                      [feature](const auto& declaration) {
-                                        return declaration.feature == feature;
-                                      });
+    const auto& result = base::ranges::find(
+        policy, feature, &ParsedPermissionsPolicyDeclaration::feature);
     if (result == policy.end())
       return false;
 
diff --git a/third_party/blink/renderer/core/script/modulator.cc b/third_party/blink/renderer/core/script/modulator.cc
index 0751259..0e7fbce 100644
--- a/third_party/blink/renderer/core/script/modulator.cc
+++ b/third_party/blink/renderer/core/script/modulator.cc
@@ -39,25 +39,14 @@
   if (auto* window = DynamicTo<LocalDOMWindow>(execution_context)) {
     modulator = MakeGarbageCollected<DocumentModulatorImpl>(script_state);
     Modulator::SetModulator(script_state, modulator);
-
-    // See comment in LocalDOMWindow::modulator_ for this workaround.
-    window->SetModulator(modulator);
   } else if (auto* worklet_scope =
                  DynamicTo<WorkletGlobalScope>(execution_context)) {
     modulator = MakeGarbageCollected<WorkletModulatorImpl>(script_state);
     Modulator::SetModulator(script_state, modulator);
-
-    // See comment in WorkerOrWorkletGlobalScope::modulator_ for this
-    // workaround.
-    worklet_scope->SetModulator(modulator);
   } else if (auto* worker_scope =
                  DynamicTo<WorkerGlobalScope>(execution_context)) {
     modulator = MakeGarbageCollected<WorkerModulatorImpl>(script_state);
     Modulator::SetModulator(script_state, modulator);
-
-    // See comment in WorkerOrWorkletGlobalScope::modulator_ for this
-    // workaround.
-    worker_scope->SetModulator(modulator);
   } else {
     NOTREACHED();
   }
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 8e86168..63e6a69 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
@@ -49,8 +49,8 @@
     bool uses_temporary_zoom_level) {}
 
 void FakeLocalFrameHost::SetNeedsOcclusionTracking(bool needs_tracking) {}
-void FakeLocalFrameHost::SetVirtualKeyboardOverlayPolicy(
-    bool vk_overlays_content) {}
+void FakeLocalFrameHost::SetVirtualKeyboardMode(
+    ui::mojom::blink::VirtualKeyboardMode mode) {}
 
 void FakeLocalFrameHost::VisibilityChanged(
     mojom::blink::FrameVisibility visibility) {}
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 81c538d..47fb6f6 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
@@ -14,6 +14,7 @@
 #include "third_party/blink/public/mojom/frame/frame.mojom-blink.h"
 #include "third_party/blink/public/mojom/frame/policy_container.mojom-blink.h"
 #include "third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom-blink.h"
+#include "ui/base/ime/mojom/virtual_keyboard_types.mojom-blink.h"
 
 namespace blink {
 
@@ -42,7 +43,8 @@
   void DidContainInsecureFormAction() override;
   void MainDocumentElementAvailable(bool uses_temporary_zoom_level) override;
   void SetNeedsOcclusionTracking(bool needs_tracking) override;
-  void SetVirtualKeyboardOverlayPolicy(bool vk_overlays_content) override;
+  void SetVirtualKeyboardMode(
+      ui::mojom::blink::VirtualKeyboardMode mode) override;
   void VisibilityChanged(mojom::blink::FrameVisibility visibility) override;
   void DidChangeThemeColor(absl::optional<::SkColor> theme_color) override;
   void DidChangeBackgroundColor(SkColor background_color,
diff --git a/third_party/blink/renderer/core/timing/performance_resource_timing.cc b/third_party/blink/renderer/core/timing/performance_resource_timing.cc
index 0eea95c1..6bff0e6 100644
--- a/third_party/blink/renderer/core/timing/performance_resource_timing.cc
+++ b/third_party/blink/renderer/core/timing/performance_resource_timing.cc
@@ -170,6 +170,12 @@
   return initiator_type_;
 }
 
+// TODO(crbug/1358591): Support "cache" and "navigational-prefetch".
+AtomicString PerformanceResourceTiming::deliveryType() const {
+  DCHECK(RuntimeEnabledFeatures::DeliveryTypeEnabled());
+  return g_empty_atom;
+}
+
 AtomicString PerformanceResourceTiming::renderBlockingStatus() const {
   switch (render_blocking_status_) {
     case RenderBlockingStatusType::kBlocking:
@@ -456,6 +462,9 @@
 void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const {
   PerformanceEntry::BuildJSONValue(builder);
   builder.AddString("initiatorType", initiatorType());
+  if (RuntimeEnabledFeatures::DeliveryTypeEnabled()) {
+    builder.AddString("deliveryType", deliveryType());
+  }
   builder.AddString("nextHopProtocol", nextHopProtocol());
   if (RuntimeEnabledFeatures::RenderBlockingStatusEnabled()) {
     builder.AddString("renderBlockingStatus", renderBlockingStatus());
diff --git a/third_party/blink/renderer/core/timing/performance_resource_timing.h b/third_party/blink/renderer/core/timing/performance_resource_timing.h
index b10396ca5..f1d60e1 100644
--- a/third_party/blink/renderer/core/timing/performance_resource_timing.h
+++ b/third_party/blink/renderer/core/timing/performance_resource_timing.h
@@ -77,6 +77,7 @@
 
   // Related doc: https://goo.gl/uNecAj.
   virtual AtomicString initiatorType() const;
+  AtomicString deliveryType() const;
   AtomicString nextHopProtocol() const;
   virtual AtomicString renderBlockingStatus() const;
   DOMHighResTimeStamp workerStart() const;
diff --git a/third_party/blink/renderer/core/timing/performance_resource_timing.idl b/third_party/blink/renderer/core/timing/performance_resource_timing.idl
index ddd9a07..1c940dc 100644
--- a/third_party/blink/renderer/core/timing/performance_resource_timing.idl
+++ b/third_party/blink/renderer/core/timing/performance_resource_timing.idl
@@ -39,6 +39,7 @@
 interface PerformanceResourceTiming : PerformanceEntry {
     [MeasureAs=PerformanceResourceTimingInitiatorType] readonly attribute DOMString initiatorType;
     readonly attribute DOMString nextHopProtocol;
+    [RuntimeEnabled=DeliveryType] readonly attribute DOMString deliveryType;
     readonly attribute DOMHighResTimeStamp workerStart;
     readonly attribute DOMHighResTimeStamp redirectStart;
     readonly attribute DOMHighResTimeStamp redirectEnd;
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
index f50099568..28aec80 100644
--- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
@@ -445,10 +445,6 @@
   }
 }
 
-void WorkerOrWorkletGlobalScope::SetModulator(Modulator* modulator) {
-  modulator_ = modulator;
-}
-
 scoped_refptr<base::SingleThreadTaskRunner>
 WorkerOrWorkletGlobalScope::GetTaskRunner(TaskType type) {
   DCHECK(IsContextThread());
@@ -567,7 +563,6 @@
   visitor->Trace(resource_fetchers_);
   visitor->Trace(subresource_filter_);
   visitor->Trace(script_controller_);
-  visitor->Trace(modulator_);
   EventTargetWithInlineData::Trace(visitor);
   ExecutionContext::Trace(visitor);
 }
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h
index 85f132b..6e024a46 100644
--- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h
@@ -287,10 +287,6 @@
 
   // This tracks deprecation features that have been used.
   Deprecation deprecation_;
-
-  // LocalDOMWindow::modulator_ workaround equivalent.
-  // TODO(kouhei): Remove this.
-  Member<Modulator> modulator_;
 };
 
 template <>
diff --git a/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc b/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
index 04198d2..29009ee 100644
--- a/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
+++ b/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
@@ -1031,6 +1031,11 @@
       parsing_fragment_ ? CreateElementFlags::ByFragmentParser(document_)
                         : CreateElementFlags::ByParser(document_),
       is);
+  // Check IsStopped() because custom element constructors may synchronously
+  // trigger removal of the document and cancellation of this parser.
+  if (IsStopped()) {
+    return;
+  }
   if (!new_element) {
     StopParsing();
     return;
@@ -1052,7 +1057,6 @@
   // Event handlers may synchronously trigger removal of the
   // document and cancellation of this parser.
   if (IsStopped()) {
-    StopParsing();
     return;
   }
 
diff --git a/third_party/blink/renderer/extensions/chromeos/system_extensions/window_management/cros_window_management.cc b/third_party/blink/renderer/extensions/chromeos/system_extensions/window_management/cros_window_management.cc
index 652d48f..7783eaa 100644
--- a/third_party/blink/renderer/extensions/chromeos/system_extensions/window_management/cros_window_management.cc
+++ b/third_party/blink/renderer/extensions/chromeos/system_extensions/window_management/cros_window_management.cc
@@ -4,8 +4,7 @@
 
 #include "third_party/blink/renderer/extensions/chromeos/system_extensions/window_management/cros_window_management.h"
 
-#include <algorithm>
-
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/public/mojom/chromeos/system_extensions/window_management/cros_window_management.mojom-forward.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
@@ -168,10 +167,7 @@
   // cache and dispatching open event. In the future, this shouldn't happen and
   // we should DCHECK() the newly opened window does not exist in cache.
   auto* cached_window_ptr =
-      std::find_if(windows_.begin(), windows_.end(),
-                   [&opened_id](Member<CrosWindow> window) {
-                     return window->id() == opened_id;
-                   });
+      base::ranges::find(windows_, opened_id, &CrosWindow::id);
 
   auto* event_init = CrosWindowEventInit::Create();
   if (cached_window_ptr == windows_.end()) {
@@ -192,10 +188,7 @@
     mojom::blink::CrosWindowInfoPtr window) {
   WTF::String closed_window_id_string = WTF::String(window->id.ToString());
   Member<CrosWindow>* window_ptr =
-      std::find_if(windows_.begin(), windows_.end(),
-                   [&closed_window_id_string](Member<CrosWindow> cros_window) {
-                     return cros_window->id() == closed_window_id_string;
-                   });
+      base::ranges::find(windows_, closed_window_id_string, &CrosWindow::id);
 
   auto* event_init = CrosWindowEventInit::Create();
   if (window_ptr == windows_.end()) {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index 895e971..4539796 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -5382,7 +5382,7 @@
       description_objects->push_back(related_object->object);
   }
 
-  result = CollapseWhitespace(result);
+  result = result.SimplifyWhiteSpace(IsHTMLSpace<UChar>);
 
   if (RoleValue() == ax::mojom::blink::Role::kSpinButton &&
       DatetimeAncestor()) {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 278fbd2..5fa3bce 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -33,6 +33,7 @@
 
 #include "base/auto_reset.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
@@ -3658,9 +3659,9 @@
 
       // Otherwise it's only a subwidget if it's in a grid or treegrid,
       // not in a table.
-      AncestorsIterator ancestor = std::find_if(
+      AncestorsIterator ancestor = base::ranges::find_if(
           UnignoredAncestorsBegin(), UnignoredAncestorsEnd(),
-          [](const AXObject& ancestor) { return ancestor.IsTableLikeRole(); });
+          &AXObject::IsTableLikeRole);
       return ancestor.current_ &&
              (ancestor.current_->RoleValue() == ax::mojom::blink::Role::kGrid ||
               ancestor.current_->RoleValue() ==
@@ -3678,9 +3679,9 @@
 
 bool AXObject::SupportsARIASetSizeAndPosInSet() const {
   if (RoleValue() == ax::mojom::blink::Role::kRow) {
-    AncestorsIterator ancestor = std::find_if(
+    AncestorsIterator ancestor = base::ranges::find_if(
         UnignoredAncestorsBegin(), UnignoredAncestorsEnd(),
-        [](const AXObject& ancestor) { return ancestor.IsTableLikeRole(); });
+        &AXObject::IsTableLikeRole);
     return ancestor.current_ &&
            ancestor.current_->RoleValue() == ax::mojom::blink::Role::kTreeGrid;
   }
@@ -3704,13 +3705,29 @@
 
 // Simplify whitespace, but preserve a single leading and trailing whitespace
 // character if it's present.
-// static
-String AXObject::CollapseWhitespace(const String& str) {
+String AXObject::SimplifyName(const String& str) const {
+  if (str.IsEmpty())
+    return "";
+
+  // Do not simplify name for text, unless it is pseudo content.
+  // TODO(accessibility) There seems to be relatively little value for the
+  // special pseudo content rule, and that the null check for node can
+  // probably be removed without harm.
+  if (GetNode() && ui::IsText(RoleValue()))
+    return str;
+
+  bool has_before_space = IsHTMLSpace<UChar>(str[0]);
+  bool has_after_space = IsHTMLSpace<UChar>(str[str.length() - 1]);
+  String simplified = str.SimplifyWhiteSpace(IsHTMLSpace<UChar>);
+  if (!has_before_space && !has_after_space)
+    return simplified;
+
+  // Preserve a trailing and/or leading space.
   StringBuilder result;
-  if (!str.IsEmpty() && IsHTMLSpace<UChar>(str[0]))
+  if (has_before_space)
     result.Append(' ');
-  result.Append(str.SimplifyWhiteSpace(IsHTMLSpace<UChar>));
-  if (!str.IsEmpty() && IsHTMLSpace<UChar>(str[str.length() - 1]))
+  result.Append(simplified);
+  if (has_after_space)
     result.Append(' ');
   return result.ToString();
 }
@@ -3732,19 +3749,13 @@
   String text = TextAlternative(false, nullptr, visited, name_from,
                                 &related_objects, nullptr);
 
-  ax::mojom::blink::Role role = RoleValue();
-  if (!GetNode() || (!IsA<HTMLBRElement>(GetNode()) &&
-                     role != ax::mojom::blink::Role::kStaticText &&
-                     role != ax::mojom::blink::Role::kInlineTextBox))
-    text = CollapseWhitespace(text);
-
   if (name_objects) {
     name_objects->clear();
     for (NameSourceRelatedObject* related_object : related_objects)
       name_objects->push_back(related_object->object);
   }
 
-  return text;
+  return SimplifyName(text);
 }
 
 String AXObject::GetName(NameSources* name_sources) const {
@@ -3753,8 +3764,7 @@
   AXRelatedObjectVector tmp_related_objects;
   String text = TextAlternative(false, nullptr, visited, tmp_name_from,
                                 &tmp_related_objects, name_sources);
-  text = text.SimplifyWhiteSpace(IsHTMLSpace<UChar>);
-  return text;
+  return SimplifyName(text);
 }
 
 String AXObject::RecursiveTextAlternative(
@@ -6581,9 +6591,9 @@
 
   if (ui::IsCellOrTableHeader(RoleValue())) {
     // For cells and row/column headers, readonly is supported within a grid.
-    AncestorsIterator ancestor = std::find_if(
+    AncestorsIterator ancestor = base::ranges::find_if(
         UnignoredAncestorsBegin(), UnignoredAncestorsEnd(),
-        [](const AXObject& ancestor) { return ancestor.IsTableLikeRole(); });
+        &AXObject::IsTableLikeRole);
     return ancestor.current_ &&
            (ancestor.current_->RoleValue() == ax::mojom::blink::Role::kGrid ||
             ancestor.current_->RoleValue() ==
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h
index 97134bc..0fa9de4 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -1356,8 +1356,8 @@
 
   virtual void AddChildren() = 0;
 
-  // Used only inside textAlternative():
-  static String CollapseWhitespace(const String&);
+  // Collapses multiple whitespace characters into one. Used by GetName().
+  String SimplifyName(const String&) const;
   static String RecursiveTextAlternative(
       const AXObject&,
       const AXObject* aria_label_or_description_root,
diff --git a/third_party/blink/renderer/modules/buckets/storage_bucket.cc b/third_party/blink/renderer/modules/buckets/storage_bucket.cc
index 4232b45..d58dea1 100644
--- a/third_party/blink/renderer/modules/buckets/storage_bucket.cc
+++ b/third_party/blink/renderer/modules/buckets/storage_bucket.cc
@@ -4,12 +4,13 @@
 
 #include "third_party/blink/renderer/modules/buckets/storage_bucket.h"
 
+#include "base/time/time.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_storage_estimate.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_storage_usage_details.h"
 #include "third_party/blink/renderer/core/dom/dom_exception.h"
-#include "third_party/blink/renderer/core/dom/dom_time_stamp.h"
+#include "third_party/blink/renderer/core/dom/dom_high_res_time_stamp.h"
 #include "third_party/blink/renderer/core/fetch/global_fetch.h"
 #include "third_party/blink/renderer/core/frame/navigator.h"
 #include "third_party/blink/renderer/modules/cache_storage/cache_storage.h"
@@ -101,7 +102,7 @@
 }
 
 ScriptPromise StorageBucket::setExpires(ScriptState* script_state,
-                                        const DOMTimeStamp& expires) {
+                                        const DOMHighResTimeStamp& expires) {
   auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
   ScriptPromise promise = resolver->Promise();
 
@@ -114,7 +115,7 @@
   }
 
   remote_->SetExpires(
-      base::Time::FromJavaTime(expires),
+      base::Time::FromJsTime(expires),
       WTF::BindOnce(&StorageBucket::DidSetExpires, WrapPersistent(this),
                     WrapPersistent(resolver)));
   return promise;
@@ -296,8 +297,8 @@
         DOMExceptionCode::kUnknownError,
         "Unknown error occured while getting expires."));
   } else if (expires.has_value()) {
-    resolver->Resolve(
-        ConvertSecondsToDOMTimeStamp(expires.value().ToDoubleT()));
+    resolver->Resolve(base::Time::kMillisecondsPerSecond *
+                      expires.value().ToDoubleT());
   } else {
     resolver->Resolve(v8::Null(script_state->GetIsolate()));
   }
diff --git a/third_party/blink/renderer/modules/buckets/storage_bucket.h b/third_party/blink/renderer/modules/buckets/storage_bucket.h
index 2c2a48fd..bd100ee 100644
--- a/third_party/blink/renderer/modules/buckets/storage_bucket.h
+++ b/third_party/blink/renderer/modules/buckets/storage_bucket.h
@@ -11,7 +11,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
-#include "third_party/blink/renderer/core/dom/dom_time_stamp.h"
+#include "third_party/blink/renderer/core/dom/dom_high_res_time_stamp.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
 #include "third_party/blink/renderer/core/execution_context/navigator_base.h"
@@ -39,7 +39,7 @@
   ScriptPromise persisted(ScriptState*);
   ScriptPromise estimate(ScriptState*);
   ScriptPromise durability(ScriptState*);
-  ScriptPromise setExpires(ScriptState*, const DOMTimeStamp&);
+  ScriptPromise setExpires(ScriptState*, const DOMHighResTimeStamp&);
   ScriptPromise expires(ScriptState*);
   IDBFactory* indexedDB();
   LockManager* locks();
diff --git a/third_party/blink/renderer/modules/buckets/storage_bucket.idl b/third_party/blink/renderer/modules/buckets/storage_bucket.idl
index db50f8c..961e081 100644
--- a/third_party/blink/renderer/modules/buckets/storage_bucket.idl
+++ b/third_party/blink/renderer/modules/buckets/storage_bucket.idl
@@ -17,8 +17,8 @@
 
   [CallWith=ScriptState] Promise<StorageBucketDurability> durability();
 
-  [CallWith=ScriptState] Promise<void> setExpires(DOMTimeStamp expires);
-  [CallWith=ScriptState] Promise<DOMTimeStamp?> expires();
+  [CallWith=ScriptState] Promise<void> setExpires(DOMHighResTimeStamp expires);
+  [CallWith=ScriptState] Promise<DOMHighResTimeStamp?> expires();
 
   [SameObject] readonly attribute IDBFactory indexedDB;
 
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.cc b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
index 58ac6994..3f9ad02 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
@@ -433,12 +433,6 @@
 
 String ManifestParser::ParseId(const JSONObject* object,
                                const KURL& start_url) {
-  if (!base::FeatureList::IsEnabled(blink::features::kWebAppEnableManifestId)) {
-    ManifestUmaUtil::ParseIdResult(
-        ManifestUmaUtil::ParseIdResultType::kFeatureDisabled);
-    return String();
-  }
-
   if (!start_url.IsValid()) {
     ManifestUmaUtil::ParseIdResult(
         ManifestUmaUtil::ParseIdResultType::kInvalidStartUrl);
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc b/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
index 3778f3f..e0ed8bd5 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
@@ -292,8 +292,6 @@
 }
 
 TEST_F(ManifestParserTest, IdParseRules) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(blink::features::kWebAppEnableManifestId);
   // Empty manifest.
   {
     auto& manifest = ParseManifest("{ }");
diff --git a/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.cc b/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.cc
index 0c51dddb..bf532ee 100644
--- a/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.cc
+++ b/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.cc
@@ -4,7 +4,6 @@
 
 #include "third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.h"
 
-#include <algorithm>
 #include <limits>
 #include <string>
 #include <utility>
@@ -15,6 +14,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "build/build_config.h"
 #include "media/audio/audio_device_description.h"
 #include "media/base/audio_renderer_mixer.h"
@@ -198,10 +198,10 @@
 
 void AudioRendererMixerManager::ReturnMixer(media::AudioRendererMixer* mixer) {
   base::AutoLock auto_lock(mixers_lock_);
-  auto it = std::find_if(
-      mixers_.begin(), mixers_.end(),
-      [mixer](const std::pair<MixerKey, AudioRendererMixerReference>& val) {
-        return val.second.mixer == mixer;
+  auto it = base::ranges::find(
+      mixers_, mixer,
+      [](const std::pair<MixerKey, AudioRendererMixerReference>& val) {
+        return val.second.mixer;
       });
   DCHECK(it != mixers_.end());
 
diff --git a/third_party/blink/renderer/modules/media/audio/audio_renderer_sink_cache.cc b/third_party/blink/renderer/modules/media/audio/audio_renderer_sink_cache.cc
index d0e04b4a..8d42093 100644
--- a/third_party/blink/renderer/modules/media/audio/audio_renderer_sink_cache.cc
+++ b/third_party/blink/renderer/modules/media/audio/audio_renderer_sink_cache.cc
@@ -4,7 +4,6 @@
 
 #include "third_party/blink/renderer/modules/media/audio/audio_renderer_sink_cache.h"
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 
@@ -12,6 +11,7 @@
 #include "base/location.h"
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "base/synchronization/lock.h"
 #include "base/trace_event/trace_event.h"
 #include "media/audio/audio_device_description.h"
@@ -253,10 +253,8 @@
     base::AutoLock auto_lock(cache_lock_);
 
     // Looking up the sink by its pointer.
-    auto cache_iter = std::find_if(cache_.begin(), cache_.end(),
-                                   [sink_ptr](const CacheEntry& val) {
-                                     return val.sink.get() == sink_ptr;
-                                   });
+    auto cache_iter = base::ranges::find(
+        cache_, sink_ptr, [](const CacheEntry& val) { return val.sink.get(); });
 
     if (cache_iter == cache_.end())
       return;
@@ -289,8 +287,8 @@
     const LocalFrameToken& source_frame_token,
     const std::string& device_id,
     bool unused_only) {
-  return std::find_if(
-      cache_.begin(), cache_.end(),
+  return base::ranges::find_if(
+      cache_,
       [source_frame_token, &device_id, unused_only](const CacheEntry& val) {
         if (val.used && unused_only)
           return false;
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_current_time_display_element.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_current_time_display_element.cc
index 42baaa4..658812b 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_current_time_display_element.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_current_time_display_element.cc
@@ -11,8 +11,7 @@
 
 MediaControlCurrentTimeDisplayElement::MediaControlCurrentTimeDisplayElement(
     MediaControlsImpl& media_controls)
-    : MediaControlTimeDisplayElement(media_controls,
-                                     IDS_AX_MEDIA_CURRENT_TIME_DISPLAY) {
+    : MediaControlTimeDisplayElement(media_controls) {
   SetShadowPseudoId(
       AtomicString("-webkit-media-controls-current-time-display"));
 }
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_remaining_time_display_element.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_remaining_time_display_element.cc
index d5fa0869..b18e8d8 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_remaining_time_display_element.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_remaining_time_display_element.cc
@@ -19,8 +19,7 @@
 
 MediaControlRemainingTimeDisplayElement::
     MediaControlRemainingTimeDisplayElement(MediaControlsImpl& media_controls)
-    : MediaControlTimeDisplayElement(media_controls,
-                                     IDS_AX_MEDIA_TIME_REMAINING_DISPLAY) {
+    : MediaControlTimeDisplayElement(media_controls) {
   SetShadowPseudoId(
       AtomicString("-webkit-media-controls-time-remaining-display"));
 }
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.cc
index 8d96e38..47fdaa4 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.cc
@@ -24,17 +24,17 @@
 namespace blink {
 
 MediaControlTimeDisplayElement::MediaControlTimeDisplayElement(
-    MediaControlsImpl& media_controls,
-    int localized_resource_id)
-    : MediaControlDivElement(media_controls),
-      localized_resource_id_(localized_resource_id) {
-  SetAriaLabel();
+    MediaControlsImpl& media_controls)
+    : MediaControlDivElement(media_controls) {
+  // Will hide from accessibility tree, because the information is redundant
+  // with the info provided on the media scrubber.
+  setAttribute(html_names::kAriaHiddenAttr, AtomicString("true"));
 }
 
 void MediaControlTimeDisplayElement::SetCurrentValue(double time) {
   current_value_ = time;
-  SetAriaLabel();
-  setInnerText(FormatTime(), ASSERT_NO_EXCEPTION);
+  String formatted_time = FormatTime();
+  setInnerText(formatted_time, ASSERT_NO_EXCEPTION);
 }
 
 double MediaControlTimeDisplayElement::CurrentValue() const {
@@ -57,10 +57,4 @@
   return MediaControlsSharedHelpers::FormatTime(current_value_);
 }
 
-void MediaControlTimeDisplayElement::SetAriaLabel() {
-  String aria_label =
-      GetLocale().QueryString(localized_resource_id_, FormatTime());
-  setAttribute(html_names::kAriaLabelAttr, AtomicString(aria_label));
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.h b/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.h
index d4cb94fc..2aa74fa 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.h
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_time_display_element.h
@@ -20,18 +20,17 @@
 
   gfx::Size GetSizeOrDefault() const override;
 
+  virtual String FormatTime() const;
+
  protected:
-  MediaControlTimeDisplayElement(MediaControlsImpl&, int resource_id);
+  explicit MediaControlTimeDisplayElement(MediaControlsImpl&);
 
   virtual int EstimateElementWidth() const;
 
-  virtual String FormatTime() const;
-
  private:
   void SetAriaLabel();
 
   double current_value_ = 0;
-  int localized_resource_id_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc
index 84836e44..38f854d 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc
@@ -71,18 +71,31 @@
 }
 
 void MediaControlTimelineElement::UpdateAria() {
-  String aria_label =
-      GetLocale().QueryString(IsA<HTMLVideoElement>(MediaElement())
-                                  ? IDS_AX_MEDIA_VIDEO_SLIDER_HELP
-                                  : IDS_AX_MEDIA_AUDIO_SLIDER_HELP) +
-      " " + GetMediaControls().CurrentTimeDisplay().textContent(true) + " " +
-      GetMediaControls().RemainingTimeDisplay().textContent(true);
+  String aria_label = GetLocale().QueryString(
+      IsA<HTMLVideoElement>(MediaElement()) ? IDS_AX_MEDIA_VIDEO_SLIDER_HELP
+                                            : IDS_AX_MEDIA_AUDIO_SLIDER_HELP);
   setAttribute(html_names::kAriaLabelAttr, AtomicString(aria_label));
 
+  // The aria-valuetext is a human-friendly description of the current value
+  // of the slider, as opposed to the natural slider value which will be read
+  // out as a percentage.
   setAttribute(html_names::kAriaValuetextAttr,
                AtomicString(GetLocale().QueryString(
                    IDS_AX_MEDIA_CURRENT_TIME_DISPLAY,
-                   GetMediaControls().CurrentTimeDisplay().textContent(true))));
+                   GetMediaControls().CurrentTimeDisplay().FormatTime())));
+
+  // The total time is exposed as aria-description, which will be read after the
+  // aria-label and aria-valuetext. Unfortunately, aria-valuenow will not work,
+  // because it must be numeric. ARIA and platform APIs do not provide a means
+  // of setting a friendly max value, similar to aria-valuetext. Note:
+  // IDS_AX_MEDIA_TIME_REMAINING_DISPLAY is a misnomer and refers to the total
+  // time.
+  setAttribute(html_names::kAriaDescriptionAttr,
+               AtomicString(GetLocale().QueryString(
+                   IDS_AX_MEDIA_TIME_REMAINING_DISPLAY,
+                   GetMediaControls()
+                       .RemainingTimeDisplay()
+                       .MediaControlTimeDisplayElement::FormatTime())));
 }
 
 void MediaControlTimelineElement::SetPosition(double current_time,
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
index a2bace9..13ee854 100644
--- a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
+++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h"
 
+#include <algorithm>
 #include <memory>
 #include <utility>
 
@@ -178,21 +179,22 @@
     "pcm"
   };
   static const char* const kAudioCodecs[] = {"opus", "pcm"};
-  const char* const* codecs = video ? &kVideoCodecs[0] : &kAudioCodecs[0];
-  const int codecs_count =
-      video ? std::size(kVideoCodecs) : std::size(kAudioCodecs);
 
+  auto* const* relevant_codecs_begin =
+      video ? std::begin(kVideoCodecs) : std::begin(kAudioCodecs);
+  auto* const* relevant_codecs_end =
+      video ? std::end(kVideoCodecs) : std::end(kAudioCodecs);
   std::vector<std::string> codecs_list;
   media::SplitCodecs(web_codecs.Utf8(), &codecs_list);
   media::StripCodecs(&codecs_list);
   for (const auto& codec : codecs_list) {
     String codec_string = String::FromUTF8(codec);
-    auto* const* found = std::find_if(
-        &codecs[0], &codecs[codecs_count], [&codec_string](const char* name) {
-          return EqualIgnoringASCIICase(codec_string, name);
-        });
-    if (found == &codecs[codecs_count])
+    if (std::none_of(relevant_codecs_begin, relevant_codecs_end,
+                     [&codec_string](const char* name) {
+                       return EqualIgnoringASCIICase(codec_string, name);
+                     })) {
       return false;
+    }
   }
   return true;
 }
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_processor.cc b/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
index 74fca53..924a6c4 100644
--- a/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
+++ b/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include <algorithm>
 #include <utility>
 #include <vector>
 
@@ -562,8 +561,7 @@
     MediaStreamRequestResult result,
     const blink::WebString& result_name) {
   SendLogMessage(GetOnTrackStartedLogString(source, result));
-  auto** it = std::find(sources_waiting_for_callback_.begin(),
-                        sources_waiting_for_callback_.end(), source);
+  auto** it = base::ranges::find(sources_waiting_for_callback_, source);
   DCHECK(it != sources_waiting_for_callback_.end());
   sources_waiting_for_callback_.erase(it);
   // All tracks must be started successfully. Otherwise the request is a
@@ -699,17 +697,15 @@
     // such source will contain the same non-reconfigurable settings that limit
     // the associated capabilities.
     blink::MediaStreamAudioSource* audio_source = nullptr;
-    auto* it = std::find_if(local_sources_.begin(), local_sources_.end(),
-                            [&device](MediaStreamSource* source) {
-                              DCHECK(source);
-                              MediaStreamAudioSource* platform_source =
-                                  MediaStreamAudioSource::From(source);
-                              ProcessedLocalAudioSource* processed_source =
-                                  ProcessedLocalAudioSource::From(
-                                      platform_source);
-                              return processed_source &&
-                                     source->Id() == device->device_id;
-                            });
+    auto* it = base::ranges::find_if(
+        local_sources_, [&device](MediaStreamSource* source) {
+          DCHECK(source);
+          MediaStreamAudioSource* platform_source =
+              MediaStreamAudioSource::From(source);
+          ProcessedLocalAudioSource* processed_source =
+              ProcessedLocalAudioSource::From(platform_source);
+          return processed_source && source->Id() == device->device_id;
+        });
     if (it != local_sources_.end()) {
       WebPlatformMediaStreamSource* const source = (*it)->GetPlatformSource();
       if (source->device().type == MediaStreamType::DEVICE_AUDIO_CAPTURE)
diff --git a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.cc b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.cc
index 6774cb5d..d02f758 100644
--- a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.cc
+++ b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.cc
@@ -5,11 +5,13 @@
 #include "third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.h"
 
 #include <stdint.h>
+
 #include <string>
 #include <utility>
 
 #include "base/hash/hash.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/task/bind_post_task.h"
 #include "base/task/single_thread_task_runner.h"
@@ -647,11 +649,8 @@
          io_task_runner_->BelongsToCurrentThread());
 #endif
   for (const base::TimeDelta& timestamp : timestamps) {
-    auto* it =
-        std::find_if(pending_frames_info_.begin(), pending_frames_info_.end(),
-                     [&timestamp](PendingFrameInfo& info) {
-                       return info.timestamp == timestamp;
-                     });
+    auto* it = base::ranges::find(pending_frames_info_, timestamp,
+                                  &PendingFrameInfo::timestamp);
     DCHECK(it != pending_frames_info_.end());
     wall_clock_times->push_back(it->reference_time);
   }
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc
index afe17bd..28302f82 100644
--- a/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc
+++ b/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc
@@ -5,9 +5,11 @@
 #include "third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.h"
 
 #include <inttypes.h>
+
 #include <string>
 
 #include "base/hash/md5.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_checker.h"
 #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
@@ -56,26 +58,6 @@
   base::ThreadChecker thread_checker_;
 };
 
-namespace {
-
-// Used with std::find_if.
-struct ObserverFinder {
-  ObserverFinder(MediaStreamTrackMetrics::Direction direction,
-                 MediaStreamTrackMetrics::Kind kind,
-                 const std::string& track_id)
-      : direction_(direction), kind_(kind), track_id_(track_id) {}
-  bool operator()(
-      const std::unique_ptr<MediaStreamTrackMetricsObserver>& observer) {
-    return direction_ == observer->direction() && kind_ == observer->kind() &&
-           track_id_ == observer->track_id();
-  }
-  MediaStreamTrackMetrics::Direction direction_;
-  MediaStreamTrackMetrics::Kind kind_;
-  std::string track_id_;
-};
-
-}  // namespace
-
 MediaStreamTrackMetricsObserver::MediaStreamTrackMetricsObserver(
     MediaStreamTrackMetrics::Direction direction,
     MediaStreamTrackMetrics::Kind kind,
@@ -152,8 +134,12 @@
                                           Kind kind,
                                           const std::string& track_id) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  auto it = std::find_if(observers_.begin(), observers_.end(),
-                         ObserverFinder(direction, kind, track_id));
+  auto it = base::ranges::find_if(
+      observers_,
+      [&](const std::unique_ptr<MediaStreamTrackMetricsObserver>& observer) {
+        return direction == observer->direction() && kind == observer->kind() &&
+               track_id == observer->track_id();
+      });
   if (it == observers_.end()) {
     // Since external apps could call removeTrack() with a stream they
     // never added, this can happen without it being an error.
diff --git a/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc b/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc
index 13744dd..4dbf245 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/modules/presentation/presentation_availability_state.h"
 
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/modules/presentation/presentation_availability_observer.h"
 #include "third_party/blink/renderer/platform/bindings/microtask.h"
 
@@ -213,9 +214,8 @@
 PresentationAvailabilityState::AvailabilityListener*
 PresentationAvailabilityState::GetAvailabilityListener(
     const Vector<KURL>& urls) {
-  auto* listener_it = std::find_if(
-      availability_listeners_.begin(), availability_listeners_.end(),
-      [&urls](const auto& listener) { return listener->urls == urls; });
+  auto* listener_it = base::ranges::find(availability_listeners_, urls,
+                                         &AvailabilityListener::urls);
   return listener_it == availability_listeners_.end() ? nullptr : *listener_it;
 }
 
@@ -235,12 +235,8 @@
 
 PresentationAvailabilityState::ListeningStatus*
 PresentationAvailabilityState::GetListeningStatus(const KURL& url) const {
-  auto* status_it =
-      std::find_if(availability_listening_status_.begin(),
-                   availability_listening_status_.end(),
-                   [&url](const std::unique_ptr<ListeningStatus>& status) {
-                     return status->url == url;
-                   });
+  auto* status_it = base::ranges::find(availability_listening_status_, url,
+                                       &ListeningStatus::url);
   return status_it == availability_listening_status_.end() ? nullptr
                                                            : status_it->get();
 }
diff --git a/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.cc b/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.cc
index f19697e..6db88a5 100644
--- a/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.cc
+++ b/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/navigator.h"
+#include "third_party/blink/renderer/core/frame/viewport_data.h"
 #include "third_party/blink/renderer/core/geometry/dom_rect.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
 #include "third_party/blink/renderer/modules/event_target_modules.h"
@@ -52,7 +53,19 @@
 VirtualKeyboard::~VirtualKeyboard() = default;
 
 bool VirtualKeyboard::overlaysContent() const {
-  return overlays_content_;
+  LocalDOMWindow* window = GetSupplementable()->DomWindow();
+  if (!window)
+    return false;
+
+  DCHECK(window->GetFrame());
+
+  if (!window->GetFrame()->IsOutermostMainFrame())
+    return false;
+
+  return window->GetFrame()
+      ->GetDocument()
+      ->GetViewportData()
+      .GetVirtualKeyboardOverlaysContent();
 }
 
 DOMRect* VirtualKeyboard::boundingRect() const {
@@ -64,12 +77,13 @@
   if (!window)
     return;
 
+  DCHECK(window->GetFrame());
+
   if (window->GetFrame()->IsOutermostMainFrame()) {
-    if (overlays_content != overlays_content_) {
-      auto& local_frame_host = window->GetFrame()->GetLocalFrameHostRemote();
-      local_frame_host.SetVirtualKeyboardOverlayPolicy(overlays_content);
-      overlays_content_ = overlays_content;
-    }
+    window->GetFrame()
+        ->GetDocument()
+        ->GetViewportData()
+        .SetVirtualKeyboardOverlaysContent(overlays_content);
   } else {
     GetExecutionContext()->AddConsoleMessage(
         MakeGarbageCollected<ConsoleMessage>(
diff --git a/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.h b/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.h
index aaf86f9..87ac482 100644
--- a/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.h
+++ b/third_party/blink/renderer/modules/virtualkeyboard/virtual_keyboard.h
@@ -56,7 +56,6 @@
   void Trace(Visitor*) const override;
 
  private:
-  bool overlays_content_ = false;
   Member<DOMRect> bounding_rect_;
 };
 
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame.cc b/third_party/blink/renderer/modules/webcodecs/video_frame.cc
index 928689ae..a324330 100644
--- a/third_party/blink/renderer/modules/webcodecs/video_frame.cc
+++ b/third_party/blink/renderer/modules/webcodecs/video_frame.cc
@@ -105,6 +105,33 @@
   }
 }
 
+absl::optional<V8VideoPixelFormat> ToV8VideoPixelFormat(
+    media::VideoPixelFormat fmt) {
+  switch (fmt) {
+    case media::PIXEL_FORMAT_I420:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI420);
+    case media::PIXEL_FORMAT_I420A:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI420A);
+    case media::PIXEL_FORMAT_I422:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI422);
+    case media::PIXEL_FORMAT_I444:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI444);
+    case media::PIXEL_FORMAT_NV12:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kNV12);
+    case media::PIXEL_FORMAT_ABGR:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kRGBA);
+    case media::PIXEL_FORMAT_XBGR:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kRGBX);
+    case media::PIXEL_FORMAT_ARGB:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kBGRA);
+    case media::PIXEL_FORMAT_XRGB:
+      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kBGRX);
+    default:
+      NOTREACHED();
+      return absl::nullopt;
+  }
+}
+
 class CachedVideoFramePool : public GarbageCollected<CachedVideoFramePool>,
                              public Supplement<ExecutionContext>,
                              public ExecutionContextLifecycleStateObserver {
@@ -411,6 +438,8 @@
         "Operation is not supported when format is null.");
     return false;
   }
+  absl::optional<V8VideoPixelFormat> v8_format =
+      ToV8VideoPixelFormat(*copy_to_format);
 
   gfx::Rect src_rect = frame.visible_rect();
   if (options->hasRect()) {
@@ -419,7 +448,7 @@
     if (exception_state.HadException())
       return false;
   }
-  if (!ValidateCropAlignment(*copy_to_format, src_rect,
+  if (!ValidateCropAlignment(*copy_to_format, (*v8_format).AsCStr(), src_rect,
                              options->hasRect() ? "rect" : "visibleRect",
                              exception_state)) {
     return false;
@@ -870,29 +899,7 @@
   if (!copy_to_format)
     return absl::nullopt;
 
-  switch (*copy_to_format) {
-    case media::PIXEL_FORMAT_I420:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI420);
-    case media::PIXEL_FORMAT_I420A:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI420A);
-    case media::PIXEL_FORMAT_I422:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI422);
-    case media::PIXEL_FORMAT_I444:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kI444);
-    case media::PIXEL_FORMAT_NV12:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kNV12);
-    case media::PIXEL_FORMAT_ABGR:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kRGBA);
-    case media::PIXEL_FORMAT_XBGR:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kRGBX);
-    case media::PIXEL_FORMAT_ARGB:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kBGRA);
-    case media::PIXEL_FORMAT_XRGB:
-      return V8VideoPixelFormat(V8VideoPixelFormat::Enum::kBGRX);
-    default:
-      NOTREACHED();
-      return absl::nullopt;
-  }
+  return ToV8VideoPixelFormat(*copy_to_format);
 }
 
 uint32_t VideoFrame::codedWidth() const {
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.cc b/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.cc
index b9d44404..b3c546a 100644
--- a/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.cc
+++ b/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.cc
@@ -115,6 +115,7 @@
 }
 
 bool ValidateCropAlignment(media::VideoPixelFormat format,
+                           const char* format_str,
                            const gfx::Rect& rect,
                            const char* rect_name,
                            ExceptionState& exception_state) {
@@ -124,24 +125,36 @@
     const gfx::Size sample_size = media::VideoFrame::SampleSize(format, i);
     if (rect.x() % sample_size.width() != 0) {
       exception_state.ThrowTypeError(String::Format(
-          "Invalid %s. x is not sample-aligned in plane %u.", rect_name, i));
+          "Invalid %s. Expected x to be a multiple of %u in plane %u for "
+          "format %s; was %u. Consider rounding %s inward or outward to a "
+          "sample boundary.",
+          rect_name, sample_size.width(), i, format_str, rect.x(), rect_name));
       return false;
     }
     if (rect.y() % sample_size.height() != 0) {
       exception_state.ThrowTypeError(String::Format(
-          "Invalid %s. y is not sample-aligned in plane %u.", rect_name, i));
+          "Invalid %s. Expected y to be a multiple of %u in plane %u for "
+          "format %s; was %u. Consider rounding %s inward or outward to a "
+          "sample boundary.",
+          rect_name, sample_size.height(), i, format_str, rect.y(), rect_name));
       return false;
     }
     if (rect.width() % sample_size.width() != 0) {
-      exception_state.ThrowTypeError(
-          String::Format("Invalid %s. width is not sample-aligned in plane %u.",
-                         rect_name, i));
+      exception_state.ThrowTypeError(String::Format(
+          "Invalid %s. Expected width to be a multiple of %u in plane %u for "
+          "format %s; was %u. Consider rounding %s inward or outward to a "
+          "sample boundary.",
+          rect_name, sample_size.width(), i, format_str, rect.width(),
+          rect_name));
       return false;
     }
     if (rect.height() % sample_size.height() != 0) {
       exception_state.ThrowTypeError(String::Format(
-          "Invalid %s. height is not sample-aligned in plane %u.", rect_name,
-          i));
+          "Invalid %s. Expected height to be a multiple of %u in plane %u for "
+          "format %s; was %u. Consider rounding %s inward or outward to a "
+          "sample boundary.",
+          rect_name, sample_size.height(), i, format_str, rect.height(),
+          rect_name));
       return false;
     }
   }
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.h b/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.h
index b55b458..0fb3d5e 100644
--- a/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.h
+++ b/third_party/blink/renderer/modules/webcodecs/video_frame_rect_util.h
@@ -24,6 +24,7 @@
 
 // Checks |rect| x, y, width, and height for sample alignment in all planes.
 bool ValidateCropAlignment(media::VideoPixelFormat format,
+                           const char* format_str,
                            const gfx::Rect& rect,
                            const char* rect_name,
                            ExceptionState& exception_state);
diff --git a/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.cc b/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.cc
index 84b8b50..cdaaddd 100644
--- a/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.cc
+++ b/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_blend_operation.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_buffer_binding_type.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_compare_function.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_timestamp_location.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_cull_mode.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_error_filter.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_feature_name.h"
@@ -20,6 +21,7 @@
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_pipeline_statistic_name.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_primitive_topology.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_query_type.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_timestamp_location.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_sampler_binding_type.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_stencil_operation.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_storage_texture_access.h"
@@ -898,4 +900,24 @@
   }
 }
 
+WGPUComputePassTimestampLocation AsDawnEnum(
+    const V8GPUComputePassTimestampLocation& webgpu_enum) {
+  switch (webgpu_enum.AsEnum()) {
+    case V8GPUComputePassTimestampLocation::Enum::kBeginning:
+      return WGPUComputePassTimestampLocation_Beginning;
+    case V8GPUComputePassTimestampLocation::Enum::kEnd:
+      return WGPUComputePassTimestampLocation_End;
+  }
+}
+
+WGPURenderPassTimestampLocation AsDawnEnum(
+    const V8GPURenderPassTimestampLocation& webgpu_enum) {
+  switch (webgpu_enum.AsEnum()) {
+    case V8GPURenderPassTimestampLocation::Enum::kBeginning:
+      return WGPURenderPassTimestampLocation_Beginning;
+    case V8GPURenderPassTimestampLocation::Enum::kEnd:
+      return WGPURenderPassTimestampLocation_End;
+  }
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.h b/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.h
index 2a9440b..49555210 100644
--- a/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.h
+++ b/third_party/blink/renderer/modules/webgpu/dawn_enum_conversions.h
@@ -32,6 +32,8 @@
 class V8GPUFrontFace;
 class V8GPUTextureAspect;
 class V8GPUErrorFilter;
+class V8GPUComputePassTimestampLocation;
+class V8GPURenderPassTimestampLocation;
 enum class PredefinedColorSpace;
 
 // Convert WebGPU bitfield values to Dawn enums. These have the same value.
@@ -72,6 +74,10 @@
 WGPUFrontFace AsDawnEnum(const V8GPUFrontFace& webgpu_enum);
 WGPUTextureAspect AsDawnEnum(const V8GPUTextureAspect& webgpu_enum);
 WGPUErrorFilter AsDawnEnum(const V8GPUErrorFilter& webgpu_enum);
+WGPUComputePassTimestampLocation AsDawnEnum(
+    const V8GPUComputePassTimestampLocation& webgpu_enum);
+WGPURenderPassTimestampLocation AsDawnEnum(
+    const V8GPURenderPassTimestampLocation& webgpu_enum);
 
 // Convert Dawn enums to WebGPU IDL enums.
 const char* FromDawnEnum(WGPUQueryType dawn_enum);
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc
index 6252bfe..6659b72 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc
@@ -7,11 +7,13 @@
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_command_buffer_descriptor.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_command_encoder_descriptor.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_descriptor.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_compute_pass_timestamp_write.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_image_copy_buffer.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_image_copy_texture.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_color_attachment.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_depth_stencil_attachment.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_descriptor.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_gpu_render_pass_timestamp_write.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_union_doublesequence_gpucolordict.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_union_doublesequence_gpucolordict_gpuloadop.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_union_float_gpuloadop.h"
@@ -82,6 +84,32 @@
   return dawn_desc;
 }
 
+WGPUComputePassTimestampWrite AsDawnType(
+    const GPUComputePassTimestampWrite* webgpu_desc) {
+  DCHECK(webgpu_desc);
+  DCHECK(webgpu_desc->querySet());
+
+  WGPUComputePassTimestampWrite dawn_desc = {};
+  dawn_desc.querySet = webgpu_desc->querySet()->GetHandle();
+  dawn_desc.queryIndex = webgpu_desc->queryIndex();
+  dawn_desc.location = AsDawnEnum(webgpu_desc->location());
+
+  return dawn_desc;
+}
+
+WGPURenderPassTimestampWrite AsDawnType(
+    const GPURenderPassTimestampWrite* webgpu_desc) {
+  DCHECK(webgpu_desc);
+  DCHECK(webgpu_desc->querySet());
+
+  WGPURenderPassTimestampWrite dawn_desc = {};
+  dawn_desc.querySet = webgpu_desc->querySet()->GetHandle();
+  dawn_desc.queryIndex = webgpu_desc->queryIndex();
+  dawn_desc.location = AsDawnEnum(webgpu_desc->location());
+
+  return dawn_desc;
+}
+
 namespace {
 
 WGPURenderPassDepthStencilAttachment AsDawnType(
@@ -288,6 +316,17 @@
     dawn_desc.occlusionQuerySet = nullptr;
   }
 
+  uint32_t timestamp_writes_count =
+      static_cast<uint32_t>(descriptor->timestampWrites().size());
+  dawn_desc.timestampWriteCount = timestamp_writes_count;
+  std::unique_ptr<WGPURenderPassTimestampWrite[]> timestamp_writes;
+  if (timestamp_writes_count > 0) {
+    timestamp_writes = AsDawnType(descriptor->timestampWrites());
+    dawn_desc.timestampWrites = timestamp_writes.get();
+  } else {
+    dawn_desc.timestampWrites = nullptr;
+  }
+
   WGPURenderPassDescriptorMaxDrawCount max_draw_count = {};
   if (descriptor->hasMaxDrawCount()) {
     max_draw_count.chain.sType = WGPUSType_RenderPassDescriptorMaxDrawCount;
@@ -315,6 +354,17 @@
     dawn_desc.label = label.c_str();
   }
 
+  uint32_t timestamp_writes_count =
+      static_cast<uint32_t>(descriptor->timestampWrites().size());
+  dawn_desc.timestampWriteCount = timestamp_writes_count;
+  std::unique_ptr<WGPUComputePassTimestampWrite[]> timestamp_writes;
+  if (timestamp_writes_count > 0) {
+    timestamp_writes = AsDawnType(descriptor->timestampWrites());
+    dawn_desc.timestampWrites = timestamp_writes.get();
+  } else {
+    dawn_desc.timestampWrites = nullptr;
+  }
+
   GPUComputePassEncoder* encoder = MakeGarbageCollected<GPUComputePassEncoder>(
       device_,
       GetProcs().commandEncoderBeginComputePass(GetHandle(), &dawn_desc));
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_descriptor.idl b/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_descriptor.idl
index 5dcd9e84..ed5ce84 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_descriptor.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_descriptor.idl
@@ -5,4 +5,7 @@
 // https://gpuweb.github.io/gpuweb/
 
 dictionary GPUComputePassDescriptor : GPUObjectDescriptorBase {
+    GPUComputePassTimestampWrites timestampWrites = [];
 };
+
+typedef sequence<GPUComputePassTimestampWrite> GPUComputePassTimestampWrites;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_timestamp_write.idl b/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_timestamp_write.idl
new file mode 100644
index 0000000..4e59bde
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgpu/gpu_compute_pass_timestamp_write.idl
@@ -0,0 +1,16 @@
+// Copyright 2022 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.
+
+// https://gpuweb.github.io/gpuweb/
+
+dictionary GPUComputePassTimestampWrite {
+    required GPUQuerySet querySet;
+    required GPUSize32 queryIndex;
+    required GPUComputePassTimestampLocation location;
+};
+
+enum GPUComputePassTimestampLocation {
+    "beginning",
+    "end"
+};
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_render_pass_descriptor.idl b/third_party/blink/renderer/modules/webgpu/gpu_render_pass_descriptor.idl
index 56d6108d..7acb896 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_render_pass_descriptor.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_render_pass_descriptor.idl
@@ -8,6 +8,7 @@
     required sequence<GPURenderPassColorAttachment?> colorAttachments;
     GPURenderPassDepthStencilAttachment depthStencilAttachment;
     GPUQuerySet occlusionQuerySet;
+    GPURenderPassTimestampWrites timestampWrites = [];
     GPUSize64 maxDrawCount;
 };
 
@@ -20,3 +21,5 @@
     "store",
     "discard",
 };
+
+typedef sequence<GPURenderPassTimestampWrite> GPURenderPassTimestampWrites;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_render_pass_timestamp_write.idl b/third_party/blink/renderer/modules/webgpu/gpu_render_pass_timestamp_write.idl
new file mode 100644
index 0000000..f182342
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgpu/gpu_render_pass_timestamp_write.idl
@@ -0,0 +1,16 @@
+// Copyright 2022 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.
+
+// https://gpuweb.github.io/gpuweb/
+
+dictionary GPURenderPassTimestampWrite {
+    required GPUQuerySet querySet;
+    required GPUSize32 queryIndex;
+    required GPURenderPassTimestampLocation location;
+};
+
+enum GPURenderPassTimestampLocation {
+    "beginning",
+    "end"
+};
diff --git a/third_party/blink/renderer/platform/fonts/script_run_iterator.cc b/third_party/blink/renderer/platform/fonts/script_run_iterator.cc
index e649233..d67da88 100644
--- a/third_party/blink/renderer/platform/fonts/script_run_iterator.cc
+++ b/third_party/blink/renderer/platform/fonts/script_run_iterator.cc
@@ -6,8 +6,10 @@
 
 #include <algorithm>
 
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/platform/text/icu_error.h"
 #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
 #include "third_party/blink/renderer/platform/wtf/threading.h"
@@ -39,8 +41,7 @@
 
 inline UScriptCode FirstHanScript(
     const ScriptRunIterator::UScriptCodeList& list) {
-  const auto* const result =
-      std::find_if(list.begin(), list.end(), IsHanScript);
+  const auto* const result = base::ranges::find_if(list, IsHanScript);
   if (result != list.end())
     return *result;
   return USCRIPT_INVALID_CODE;
@@ -376,16 +377,15 @@
 
   // Neither is common or inherited. If current is a singleton,
   // just see if it exists in the next set. This is the common case.
-  auto* next_it = next_set_->begin();
-  auto* next_end = next_set_->end();
+  bool have_priority = base::Contains(*next_set_, priority_script);
   if (current_set_it == current_end) {
-    return std::find(next_it, next_end, priority_script) != next_end;
+    return have_priority;
   }
 
   // Establish the priority script, if we have one.
   // First try current priority script.
-  bool have_priority =
-      std::find(next_it, next_end, priority_script) != next_end;
+  auto* next_it = next_set_->begin();
+  auto* next_end = next_set_->end();
   if (!have_priority) {
     // So try next priority script.
     // Skip the first current script, we already know it's not there.
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 cea17c3..6479f1c 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
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/ranges/algorithm.h"
 #include "cc/base/features.h"
 #include "cc/document_transition/document_transition_request.h"
 #include "cc/paint/display_item_list.h"
@@ -574,11 +575,10 @@
     bool needs_layer,
     CompositorElementId& mask_isolation_id,
     CompositorElementId& mask_effect_id) {
-  auto* entry =
-      std::find_if(synthesized_clip_cache_.begin(),
-                   synthesized_clip_cache_.end(), [&clip](const auto& entry) {
-                     return entry.key == &clip && !entry.in_use;
-                   });
+  auto* entry = base::ranges::find_if(
+      synthesized_clip_cache_, [&clip](const auto& entry) {
+        return entry.key == &clip && !entry.in_use;
+      });
   if (entry == synthesized_clip_cache_.end()) {
     synthesized_clip_cache_.push_back(SynthesizedClipEntry{
         &clip, std::make_unique<SynthesizedClip>(), false});
diff --git a/third_party/blink/renderer/platform/p2p/ipc_network_manager_test.cc b/third_party/blink/renderer/platform/p2p/ipc_network_manager_test.cc
index 1b7e480..9e4d8500 100644
--- a/third_party/blink/renderer/platform/p2p/ipc_network_manager_test.cc
+++ b/third_party/blink/renderer/platform/p2p/ipc_network_manager_test.cc
@@ -4,9 +4,9 @@
 
 #include "third_party/blink/renderer/platform/p2p/ipc_network_manager.h"
 
-#include <algorithm>
 #include <memory>
 
+#include "base/ranges/algorithm.h"
 #include "net/base/ip_address.h"
 #include "net/base/network_change_notifier.h"
 #include "net/base/network_interfaces.h"
@@ -112,10 +112,8 @@
   // Verify we have 2 networks now.
   EXPECT_EQ(2uL, networks.size());
   // Verify the network with prefix length of 64 has 2 IP addresses.
-  auto network_with_two_ips = std::find_if(
-      networks.begin(), networks.end(), [](const rtc::Network* network) {
-        return network->prefix_length() == 64;
-      });
+  auto network_with_two_ips =
+      base::ranges::find(networks, 64, &rtc::Network::prefix_length);
   ASSERT_NE(networks.end(), network_with_two_ips);
   EXPECT_EQ(2uL, (*network_with_two_ips)->GetIPs().size());
   // IPs should be in the same order as the list passed into
@@ -127,10 +125,8 @@
   EXPECT_EQ((*network_with_two_ips)->GetIPs()[1],
             rtc::InterfaceAddress(ip_address));
   // Verify the network with prefix length of 48 has 1 IP address.
-  auto network_with_one_ip = std::find_if(
-      networks.begin(), networks.end(), [](const rtc::Network* network) {
-        return network->prefix_length() == 48;
-      });
+  auto network_with_one_ip =
+      base::ranges::find(networks, 48, &rtc::Network::prefix_length);
   ASSERT_NE(networks.end(), network_with_one_ip);
   EXPECT_EQ(1uL, (*network_with_one_ip)->GetIPs().size());
   EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString2, &ip_address));
@@ -163,13 +159,9 @@
   std::vector<const rtc::Network*> networks = network_manager_->GetNetworks();
   EXPECT_EQ(2uL, networks.size());
 
-  auto tun1 = std::find_if(
-      networks.begin(), networks.end(),
-      [](const rtc::Network* network) { return network->name() == "tun1"; });
+  auto tun1 = base::ranges::find(networks, "tun1", &rtc::Network::name);
   ASSERT_NE(networks.end(), tun1);
-  auto tun2 = std::find_if(
-      networks.begin(), networks.end(),
-      [](const rtc::Network* network) { return network->name() == "tun2"; });
+  auto tun2 = base::ranges::find(networks, "tun2", &rtc::Network::name);
   ASSERT_NE(networks.end(), tun1);
 
   EXPECT_EQ(rtc::ADAPTER_TYPE_VPN, (*tun1)->type());
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
index f41d872..f6e868d 100644
--- a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
+++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
@@ -4,13 +4,13 @@
 
 #include "third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.h"
 
-#include <algorithm>
 #include <memory>
 #include <numeric>
 #include <vector>
 
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
+#include "base/containers/contains.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/unsafe_shared_memory_region.h"
@@ -1443,10 +1443,8 @@
     }
   }
   if (!failed_timestamp_match_) {
-    DCHECK(std::find_if(pending_frames_.begin(), pending_frames_.end(),
-                        [timestamp](const PendingFrame& entry) {
-                          return entry.media_timestamp_ == timestamp;
-                        }) == pending_frames_.end());
+    DCHECK(!base::Contains(pending_frames_, timestamp,
+                           &PendingFrame::media_timestamp_));
     pending_frames_.emplace_back(timestamp, next_frame->timestamp(),
                                  next_frame->render_time_ms(),
                                  ActiveSpatialResolutions());
@@ -1504,10 +1502,8 @@
   }
 
   if (!failed_timestamp_match_) {
-    DCHECK(std::find_if(pending_frames_.begin(), pending_frames_.end(),
-                        [&frame](const PendingFrame& entry) {
-                          return entry.media_timestamp_ == frame->timestamp();
-                        }) == pending_frames_.end());
+    DCHECK(!base::Contains(pending_frames_, frame->timestamp(),
+                           &PendingFrame::media_timestamp_));
     pending_frames_.emplace_back(frame->timestamp(), next_frame->timestamp(),
                                  next_frame->render_time_ms(),
                                  ActiveSpatialResolutions());
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 9b6f5931..6c18089 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -683,7 +683,7 @@
     {
       name: "CSSGridTemplatePropertyInterpolation",
       depends_on: ["LayoutNGGridFragmentation"],
-      status: "experimental",
+      status: "stable",
     },
     {
       // This needs to be kept as a runtime flag as long as we need to forcibly
@@ -927,6 +927,11 @@
       name: "DelegatedInkTrails",
       status: "stable",
     },
+    // https://github.com/w3c/resource-timing/pull/343
+    {
+      name: "DeliveryType",
+      status: "experimental",
+    },
     {
       name: "DesktopCaptureDisableLocalEchoControl",
       status: "experimental",
@@ -2773,14 +2778,6 @@
       implied_by: ["WebAppLaunchHandler", "FileHandling"],
     },
     {
-      // This flag enables the Manifest parser to handle id field.
-      // Also enabled when blink::features::kWebAppEnableManifestId is
-      // overridden on the command line (or via chrome://flags).
-      name: "WebAppManifestId",
-      status: "stable",
-      base_feature: "WebAppEnableManifestId",
-    },
-    {
       name:"WebAppsLockScreen",
       status:"experimental",
     },
diff --git a/third_party/blink/renderer/platform/scheduler/test/fake_task_runner.cc b/third_party/blink/renderer/platform/scheduler/test/fake_task_runner.cc
index 6bdabc3..de4038f 100644
--- a/third_party/blink/renderer/platform/scheduler/test/fake_task_runner.cc
+++ b/third_party/blink/renderer/platform/scheduler/test/fake_task_runner.cc
@@ -4,10 +4,10 @@
 
 #include "third_party/blink/renderer/platform/scheduler/test/fake_task_runner.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "base/callback.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/single_thread_task_runner.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
@@ -29,9 +29,12 @@
   using PendingTask = FakeTaskRunner::PendingTask;
   Deque<PendingTask>::iterator FindRunnableTask() {
     // TODO(tkent): This should return an item which has the minimum |second|.
-    return std::find_if(
-        task_queue_.begin(), task_queue_.end(),
-        [&](const PendingTask& item) { return item.second <= time_; });
+    // TODO(pkasting): If this is ordered by increasing time, the call below can
+    // be changed to `lower_bound()`, which achieves tkent's TODO above and is
+    // more efficient to boot.
+    return base::ranges::find_if(task_queue_, [&](const PendingTask& item) {
+      return item.second <= time_;
+    });
   }
 
   // base::TickClock:
diff --git a/third_party/blink/renderer/platform/text/suffix_tree.h b/third_party/blink/renderer/platform/text/suffix_tree.h
index 8b6852d6..67bc0d1 100644
--- a/third_party/blink/renderer/platform/text/suffix_tree.h
+++ b/third_party/blink/renderer/platform/text/suffix_tree.h
@@ -26,10 +26,10 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_TEXT_SUFFIX_TREE_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TEXT_SUFFIX_TREE_H_
 
-#include <algorithm>
 #include <utility>
 
 #include "base/check_op.h"
+#include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -101,10 +101,7 @@
     }
 
     typename Vector<std::pair<int, Node*>>::iterator Find(int key) {
-      return std::find_if(children_.begin(), children_.end(),
-                          [key](const std::pair<int, Node*>& entry) {
-                            return entry.first == key;
-                          });
+      return base::ranges::find(children_, key, &std::pair<int, Node*>::first);
     }
 
     typename Vector<std::pair<int, Node*>>::iterator End() {
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index f6a10449..52a52b9d 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -695,6 +695,7 @@
             'ui::IsTableLike',
             'ui::IsTableRow',
             'ui::IsTableHeader',
+            'ui::IsText',
 
             # Blink uses UKM for logging e.g. always-on leak detection (crbug/757374)
             'ukm::.+',
diff --git a/third_party/blink/web_tests/NeverFixTests b/third_party/blink/web_tests/NeverFixTests
index e65d74f..51225f2 100644
--- a/third_party/blink/web_tests/NeverFixTests
+++ b/third_party/blink/web_tests/NeverFixTests
@@ -1970,3 +1970,7 @@
 # Feature is not yet launched, so skip the base.
 crbug.com/1293679 external/wpt/pending_beacon/* [ Skip ]
 crbug.com/1293679 virtual/pending-beacon/external/wpt/pending_beacon/* [ Pass ]
+
+# Experimental JS shared memory features
+crbug.com/1351118 wpt_internal/js/shared_memory/* [ Skip ]
+crbug.com/1351118 virtual/js-shared-memory/wpt_internal/js/shared_memory/* [ Pass ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 32320fe..9f926c98 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -3268,8 +3268,6 @@
 
 # Custom-elements
 crbug.com/1351482 external/wpt/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html [ Timeout ]
-crbug.com/1365368 external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml [ Crash ]
-crbug.com/1365368 external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml [ Crash ]
 crbug.com/1365604 [ Mac ] external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html [ Crash Pass Timeout ]
 crbug.com/1365604 [ Win ] external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html [ Pass Timeout ]
 
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index 7aa21cd..204ea04 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -1287,5 +1287,11 @@
     "bases": [
       "external/wpt/fetch/corb"
     ]
+  },
+  {
+    "prefix": "js-shared-memory",
+    "platforms": ["Linux", "Mac", "Win"],
+    "bases": ["wpt_internal/js/shared_memory"],
+    "args": ["--enable-features=JavaScriptExperimentalSharedMemory"]
   }
 ]
diff --git a/third_party/blink/web_tests/external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser-expected.txt b/third_party/blink/web_tests/external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser-expected.txt
new file mode 100644
index 0000000..b0447fb6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS document.open() must throw an InvalidStateError when synchronously constructing a custom element
+PASS document.open("text/html") must throw an InvalidStateError when synchronously constructing a custom element
+FAIL document.open(URL) must NOT throw an InvalidStateError when synchronously constructing a custom element assert_true: Must synchronously instantiate a custom element expected true got false
+PASS document.close() must throw an InvalidStateError when synchronously constructing a custom element
+PASS document.write must throw an InvalidStateError when synchronously constructing a custom element
+PASS document.writeln must throw an InvalidStateError when synchronously constructing a custom element
+PASS document.open() of another document must not throw an InvalidStateError when synchronously constructing a custom element
+PASS document.open("text/html") of another document must not throw an InvalidStateError when synchronously constructing a custom element
+PASS document.close() of another document must not throw an InvalidStateError when synchronously constructing a custom element
+PASS document.write of another document must not throw an InvalidStateError when synchronously constructing a custom element
+PASS document.writeln of another document must not throw an InvalidStateError when synchronously constructing a custom element
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser-expected.txt b/third_party/blink/web_tests/external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser-expected.txt
new file mode 100644
index 0000000..dbabad2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS document.open() must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.open("text/html") must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+FAIL document.open(URL) must NOT throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element assert_true: Must immediately process custom element reactions for setting attributes expected true got false
+PASS document.close() must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.write must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.writeln must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.open() of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.open("text/html") of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.close() of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.write of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+PASS document.writeln of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html
index f9a62c5..70bb381 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html
@@ -28,14 +28,32 @@
 
 <script>
 test(() => {
+  function documentHeight() {
+    // clientHeight is an integer, but we want the correct floating point
+    // value.  Start a binary search at clientHeight-1 and clientHeight+1.
+    let min = document.documentElement.clientHeight;
+    let max = min + 1;
+    --min;
+
+    // binary search with media queries to find the correct height
+    for (let iter = 0; iter < 10; ++iter) {
+      let test = (min + max) / 2;
+      if (window.matchMedia(`(min-height: ${test}px)`).matches)
+        min = test;
+      else
+        max = test;
+    }
+    return min;
+  }
   function expectedTop(dialog) {
-    return Math.floor((document.documentElement.clientHeight - dialog.offsetHeight) / 2);
+    let height = documentHeight();
+    return (height - dialog.getBoundingClientRect().height) / 2;
   }
 
   function showAndTest(id) {
     dialog = document.getElementById(id);
     dialog.showModal();
-    assert_equals(dialog.offsetTop, expectedTop(dialog), id);
+    assert_approx_equals(dialog.getBoundingClientRect().top, expectedTop(dialog), 0.05, id);
   }
 
   showAndTest('top-dialog');
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/clients-matchall.https.html b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/clients-matchall.https.html
similarity index 96%
rename from third_party/blink/web_tests/wpt_internal/prerender/clients-matchall.https.html
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/clients-matchall.https.html
index fb07647..bbd9ea2 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/clients-matchall.https.html
+++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/clients-matchall.https.html
@@ -9,6 +9,8 @@
 <body>
 <script>
 
+setup(() => assertSpeculationRulesIsSupported());
+
 promise_test(async t => {
   const uid = token();
   const workerUrl = 'resources/clients-matchall-service-worker.js';
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/referrer-policy-no-referrer.html b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html
similarity index 92%
rename from third_party/blink/web_tests/wpt_internal/prerender/referrer-policy-no-referrer.html
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html
index a10bc06..a2bdda92 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/referrer-policy-no-referrer.html
+++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html
@@ -9,6 +9,7 @@
 <script src="resources/referrer-test.js"></script>
 <body>
 <script>
+setup(() => assertSpeculationRulesIsSupported());
 
 // Tests that the referrer on the prerendering navigation request is not sent
 // when the triggering page's referrer policy is set to no-referrer.
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/referrer-policy-origin.html b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-origin.html
similarity index 93%
rename from third_party/blink/web_tests/wpt_internal/prerender/referrer-policy-origin.html
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-origin.html
index 026ab5c..1e7b455f 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/referrer-policy-origin.html
+++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-origin.html
@@ -9,6 +9,7 @@
 <script src="resources/referrer-test.js"></script>
 <body>
 <script>
+setup(() => assertSpeculationRulesIsSupported());
 
 // Tests that the referrer on the prerendering navigation request is the
 // triggering page's origin when the referrer policy is set to origin.
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/referrer.html b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer.html
similarity index 92%
rename from third_party/blink/web_tests/wpt_internal/prerender/referrer.html
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer.html
index 5a98338..f10d64a 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/referrer.html
+++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer.html
@@ -8,6 +8,7 @@
 <script src="resources/referrer-test.js"></script>
 <body>
 <script>
+setup(() => assertSpeculationRulesIsSupported());
 
 // Tests that the referrer on the prerendering navigation request is the
 // triggering page's URL by default.
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/clients-matchall-service-worker.js b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/resources/clients-matchall-service-worker.js
similarity index 100%
rename from third_party/blink/web_tests/wpt_internal/prerender/resources/clients-matchall-service-worker.js
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/resources/clients-matchall-service-worker.js
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/echo-referrer.py b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/resources/echo-referrer.py
similarity index 100%
rename from third_party/blink/web_tests/wpt_internal/prerender/resources/echo-referrer.py
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/resources/echo-referrer.py
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/referrer-test.js b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/resources/referrer-test.js
similarity index 100%
rename from third_party/blink/web_tests/wpt_internal/prerender/resources/referrer-test.js
rename to third_party/blink/web_tests/external/wpt/speculation-rules/prerender/resources/referrer-test.js
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt
index b662210..e4b1342 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt
@@ -5,19 +5,28 @@
     StaticText "spacer"
       InlineTextBox
   generic
-    StaticText "locked"
+    StaticText "
+      locked
+      "
     generic
-      StaticText "child"
+      StaticText "
+        child
+        "
       generic
         StaticText "grandChild"
-      StaticText
-    StaticText
+      StaticText "
+      "
+    StaticText "
+      "
     generic
       StaticText "invisible"
-    StaticText
+    StaticText "
+      "
     generic
       StaticText "nested"
-    StaticText "text"
+    StaticText "
+      text
+    "
   generic
 
   generic
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt
index 120ccf1..aaf5980 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt
@@ -2,7 +2,7 @@
 
 RootWebArea
   generic
-    StaticText "Some text in a div, also a"
+    StaticText "Some text in a div, also a "
       InlineTextBox
     link "link"
       StaticText "link"
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-depth-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-depth-expected.txt
index ceb1c7a..d1b2e82 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-depth-expected.txt
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-depth-expected.txt
@@ -2,7 +2,7 @@
 
 RootWebArea
   generic
-    StaticText "Some text in a div, also a"
+    StaticText "Some text in a div, also a "
     link "link"
   button "Hello Button"
     StaticText "Hello Button"
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index ebfa35a..4d8d83dc 100644
--- a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -1165,6 +1165,7 @@
     getter connectEnd
     getter connectStart
     getter decodedBodySize
+    getter deliveryType
     getter domainLookupEnd
     getter domainLookupStart
     getter encodedBodySize
diff --git a/third_party/blink/web_tests/media/controls/accessibility-time-element.html b/third_party/blink/web_tests/media/controls/accessibility-time-element.html
index f0b01b1..9ddf59d 100644
--- a/third_party/blink/web_tests/media/controls/accessibility-time-element.html
+++ b/third_party/blink/web_tests/media/controls/accessibility-time-element.html
@@ -14,29 +14,21 @@
 
   var current_time = currentTimeElement(video);
   var remaining_time = timeRemainingElement(video);
+
   assert_not_equals(current_time, null);
   assert_not_equals(remaining_time, null);
 
-  assert_equals(current_time.getAttribute('aria-label'),
-                'elapsed time: 0:00');
+  assert_equals(current_time.ariaHidden, 'true');
+  assert_equals(remaining_time.ariaHidden, 'true');
 
-  assert_equals(remaining_time.getAttribute('aria-label'),
-                'total time: / 0:00');
-
-  video.oncanplaythrough = t.step_func_done(_ => {
-    assert_equals(current_time.getAttribute('aria-label'),
-                  'elapsed time: 0:00');
-
-    assert_equals(remaining_time.getAttribute('aria-label'),
-                  'total time: / 0:06');
+video.oncanplaythrough = t.step_func_done(_ => {
+  assert_equals(current_time.ariaHidden, 'true');
+  assert_equals(remaining_time.ariaHidden, 'true');
 
     video.currentTime = 1;
     video.onseeked = t.step_func(_ => {
-      assert_equals(current_time.getAttribute('aria-label'),
-                    'elapsed time: 0:01');
-
-      assert_equals(remaining_time.getAttribute('aria-label'),
-                    'total time: / 0:06');
+      assert_equals(current_time.ariaHidden, 'true');
+      assert_equals(remaining_time.ariaHidden, 'true');
     });
   });
 });
diff --git a/third_party/blink/web_tests/media/controls/accessibility-timeline-element.html b/third_party/blink/web_tests/media/controls/accessibility-timeline-element.html
index 18812b3..61bf762 100644
--- a/third_party/blink/web_tests/media/controls/accessibility-timeline-element.html
+++ b/third_party/blink/web_tests/media/controls/accessibility-timeline-element.html
@@ -13,22 +13,24 @@
 
   // Check to see that values are reasonable even if we haven't loaded.
   var timeline_element = timelineElement(video);
-  assert_equals(timeline_element.getAttribute('aria-label'), 'video time scrubber 0:00 / 0:00');
+  assert_equals(timeline_element.getAttribute('aria-label'), 'video time scrubber');
   assert_equals(timeline_element.getAttribute('aria-valuetext'), 'elapsed time: 0:00');
+  assert_equals(timeline_element.getAttribute('aria-description'), 'total time: 0:00');
 
   video.addEventListener('loadedmetadata', t.step_func(_ => {
 
     // Check to see that we are showing the right values on load.
-    var timeline_element = timelineElement(video);
-    assert_equals(timeline_element.getAttribute('aria-label'),
-                  'video time scrubber 0:00 / 0:06');
+  var timeline_element = timelineElement(video);
+    assert_equals(timeline_element.getAttribute('aria-label'), 'video time scrubber');
     assert_equals(timeline_element.getAttribute('aria-valuetext'), 'elapsed time: 0:00');
+    assert_equals(timeline_element.getAttribute('aria-description'), 'total time: 0:06');
 
     video.onseeked = t.step_func(_ => {
      // Check to see that we don't update Aria during the playback.
      assert_equals(timeline_element.getAttribute('aria-label'),
-                  'video time scrubber 0:00 / 0:06');
+                  'video time scrubber');
      assert_equals(timeline_element.getAttribute('aria-valuetext'), 'elapsed time: 0:00');
+    assert_equals(timeline_element.getAttribute('aria-description'), 'total time: 0:06');
 
       // To make sure all the tests run before t.step_func_done, we load audio after we test video.
       audio.load();
@@ -42,15 +44,15 @@
   audio.src = '../content/test.oga';
 
   audio.oncanplaythrough = t.step_func(_ => {
-   var timeline_element = timelineElement(audio);
-     assert_equals(timeline_element.getAttribute('aria-label'),
-                  'audio time scrubber 0:00 / 0:07');
+  var timeline_element = timelineElement(audio);
+    assert_equals(timeline_element.getAttribute('aria-label'), 'audio time scrubber');
     assert_equals(timeline_element.getAttribute('aria-valuetext'), 'elapsed time: 0:00');
+    assert_equals(timeline_element.getAttribute('aria-description'), 'total time: 0:07');
 
     audio.onseeked = t.step_func_done(_ => {
-     assert_equals(timeline_element.getAttribute('aria-label'),
-                  'audio time scrubber 0:00 / 0:07');
+      assert_equals(timeline_element.getAttribute('aria-label'), 'audio time scrubber');
       assert_equals(timeline_element.getAttribute('aria-valuetext'), 'elapsed time: 0:00');
+      assert_equals(timeline_element.getAttribute('aria-description'), 'total time: 0:07');
     });
 
     audio.currentTime = 1;
diff --git a/third_party/blink/web_tests/virtual/js-shared-memory/wpt_internal/js/shared_memory/README.txt b/third_party/blink/web_tests/virtual/js-shared-memory/wpt_internal/js/shared_memory/README.txt
new file mode 100644
index 0000000..a3a1473
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/js-shared-memory/wpt_internal/js/shared_memory/README.txt
@@ -0,0 +1,3 @@
+Tests HTML integration of experimental JS shared memory features.
+
+https://bugs.chromium.org/p/chromium/issues/detail?id=1351118
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
index 6c59806..7fd13c9 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -1217,6 +1217,7 @@
 [Worker]     getter connectEnd
 [Worker]     getter connectStart
 [Worker]     getter decodedBodySize
+[Worker]     getter deliveryType
 [Worker]     getter domainLookupEnd
 [Worker]     getter domainLookupStart
 [Worker]     getter encodedBodySize
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 9902d4db..6545b12 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -6580,6 +6580,7 @@
     getter connectEnd
     getter connectStart
     getter decodedBodySize
+    getter deliveryType
     getter domainLookupEnd
     getter domainLookupStart
     getter encodedBodySize
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
index 6b68ead90..8fb310f 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -1071,6 +1071,7 @@
 [Worker]     getter connectEnd
 [Worker]     getter connectStart
 [Worker]     getter decodedBodySize
+[Worker]     getter deliveryType
 [Worker]     getter domainLookupEnd
 [Worker]     getter domainLookupStart
 [Worker]     getter encodedBodySize
diff --git a/third_party/blink/web_tests/wpt_internal/js/shared_memory/README.txt b/third_party/blink/web_tests/wpt_internal/js/shared_memory/README.txt
new file mode 100644
index 0000000..eb23ed9
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/js/shared_memory/README.txt
@@ -0,0 +1,4 @@
+JS Shared Memory Feature Tests README
+
+These tests are currently Chrome and V8-specific and test experimental JS
+shared memory features.
diff --git a/third_party/blink/web_tests/wpt_internal/js/shared_memory/resources/worker.js b/third_party/blink/web_tests/wpt_internal/js/shared_memory/resources/worker.js
new file mode 100644
index 0000000..156fb86
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/js/shared_memory/resources/worker.js
@@ -0,0 +1,7 @@
+importScripts('/resources/testharness.js');
+onmessage = function (e) {
+  let box = e.data;
+  assert_equals(box.payload, 'hello from main');
+  box.payload = 'hello from worker';
+  postMessage('pong');
+};
diff --git a/third_party/blink/web_tests/wpt_internal/js/shared_memory/resources/worker.js.headers b/third_party/blink/web_tests/wpt_internal/js/shared_memory/resources/worker.js.headers
new file mode 100644
index 0000000..66044509
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/js/shared_memory/resources/worker.js.headers
@@ -0,0 +1 @@
+Cross-Origin-Embedder-Policy: require-corp
diff --git a/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage-no-coop-coep.html b/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage-no-coop-coep.html
new file mode 100644
index 0000000..62e12b8
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage-no-coop-coep.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Shared structs and shared values require crossOriginIsolated to be
+// postMessaged, just like SABs.
+test(() => {
+  const Box = new SharedStructType(['payload']);
+  let box = new Box();
+  box.payload = 'foo';
+  assert_throws_dom("DataCloneError", () => postMessage(box));
+});
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage.https.html b/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage.https.html
new file mode 100644
index 0000000..2c33d0f3
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage.https.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Test serialization of shared structs and shared strings.
+async_test(t => {
+  let worker = new Worker('resources/worker.js');
+
+  const Box = new SharedStructType(['payload']);
+  let box = new Box();
+  box.payload = 'hello from main';
+
+  worker.onmessage = t.step_func_done(function (e) {
+    assert_equals(box.payload, 'hello from worker');
+  });
+
+  worker.postMessage(box);
+});
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage.https.html.headers b/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage.https.html.headers
new file mode 100644
index 0000000..63b60e4
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/js/shared_memory/shared-struct-postMessage.https.html.headers
@@ -0,0 +1,2 @@
+Cross-Origin-Opener-Policy: same-origin
+Cross-Origin-Embedder-Policy: require-corp
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/do-nothing-worker.js b/third_party/blink/web_tests/wpt_internal/prerender/resources/do-nothing-worker.js
deleted file mode 100644
index 49ceb264..0000000
--- a/third_party/blink/web_tests/wpt_internal/prerender/resources/do-nothing-worker.js
+++ /dev/null
@@ -1 +0,0 @@
-// Do nothing.
diff --git a/third_party/junit/README.chromium b/third_party/junit/README.chromium
index 26fead7..52e9fad 100644
--- a/third_party/junit/README.chromium
+++ b/third_party/junit/README.chromium
@@ -1,7 +1,7 @@
 Name: JUnit
 URL: http://junit.org
 Version: 4.12
-CPEPrefix: cpe:/a:jenkins:junit:4.12::~~~jenkins~~
+CPEPrefix: cpe:/a:junit:junit4:4.12:-
 License: Common Public License 1.0
 License File: NOT_SHIPPED
 Security Critical: no
diff --git a/third_party/lzma_sdk/google/seven_zip_reader.cc b/third_party/lzma_sdk/google/seven_zip_reader.cc
index b1f0150..17bc8e3 100644
--- a/third_party/lzma_sdk/google/seven_zip_reader.cc
+++ b/third_party/lzma_sdk/google/seven_zip_reader.cc
@@ -223,6 +223,27 @@
         base::Microseconds(intervals / 10));
   }
 
+  entry.is_encrypted = false;
+
+  if (folder_index != kNoFolder) {
+    CSzData span;
+    span.Data = db_.db.CodersData + db_.db.FoCodersOffsets[folder_index];
+    span.Size = db_.db.FoCodersOffsets[folder_index + 1] -
+                db_.db.FoCodersOffsets[folder_index];
+
+    CSzFolder folder;
+    SzGetNextFolderItem(&folder, &span);
+
+    for (size_t i = 0; i < folder.NumCoders && i < SZ_NUM_CODERS_IN_FOLDER_MAX;
+         ++i) {
+      // LZMA SDK's DOC/Methods.txt specifies that MethodIDs starting with 06
+      // are "Crypto" of some sort.
+      if ((folder.Coders[i].MethodID & 0xff000000) == 0x06000000) {
+        entry.is_encrypted = true;
+      }
+    }
+  }
+
   return entry;
 }
 
diff --git a/third_party/lzma_sdk/google/seven_zip_reader.h b/third_party/lzma_sdk/google/seven_zip_reader.h
index 8b83eb2..f7fccdc 100644
--- a/third_party/lzma_sdk/google/seven_zip_reader.h
+++ b/third_party/lzma_sdk/google/seven_zip_reader.h
@@ -25,7 +25,8 @@
   // otherwise.
   base::Time last_modified_time;
 
-  // TODO(crbug/1355567): Surface whether a file is encrypted
+  // Whether the entry is encrypted.
+  bool is_encrypted;
 };
 
 enum class Result {
diff --git a/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc b/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc
index f9183fd..11ab928 100644
--- a/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc
+++ b/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc
@@ -29,6 +29,9 @@
 //
 //   fake_crc_table.7z was created with a hex editor, replacing the three CRC
 //   values with 0.
+//
+//   echo "This is not an exe" > file.exe
+//   7z a -p encrypted.7z file.exe  # Provided 1234 as the password
 
 #include "third_party/lzma_sdk/google/seven_zip_reader.h"
 
@@ -349,4 +352,30 @@
   EXPECT_EQ(std::string(buffer.begin(), buffer.end()), "This is not an exe\n");
 }
 
+TEST(SevenZipReaderTest, EncryptedFile) {
+  base::File file = OpenTestFile(FILE_PATH_LITERAL("encrypted.7z"));
+  ASSERT_TRUE(file.IsValid());
+  base::File temp_file = OpenTemporaryFile();
+  ASSERT_TRUE(temp_file.IsValid());
+
+  StrictMock<MockSevenZipDelegate> delegate;
+  EXPECT_CALL(delegate, OnEntry(Field(&EntryInfo::is_encrypted, true), _))
+      .WillOnce(Return(false));
+
+  Extract(std::move(file), std::move(temp_file), delegate);
+}
+
+TEST(SevenZipReaderTest, UnencryptedFile) {
+  base::File file = OpenTestFile(FILE_PATH_LITERAL("compressed_exe.7z"));
+  ASSERT_TRUE(file.IsValid());
+  base::File temp_file = OpenTemporaryFile();
+  ASSERT_TRUE(temp_file.IsValid());
+
+  StrictMock<MockSevenZipDelegate> delegate;
+  EXPECT_CALL(delegate, OnEntry(Field(&EntryInfo::is_encrypted, false), _))
+      .WillOnce(Return(false));
+
+  Extract(std::move(file), std::move(temp_file), delegate);
+}
+
 }  // namespace seven_zip
diff --git a/third_party/lzma_sdk/google/test_data/encrypted.7z b/third_party/lzma_sdk/google/test_data/encrypted.7z
new file mode 100644
index 0000000..9c8f14b
--- /dev/null
+++ b/third_party/lzma_sdk/google/test_data/encrypted.7z
Binary files differ
diff --git a/third_party/nearby/README.chromium b/third_party/nearby/README.chromium
index 64662ce4..a2c2256 100644
--- a/third_party/nearby/README.chromium
+++ b/third_party/nearby/README.chromium
@@ -1,7 +1,7 @@
 Name: Nearby Connections Library
 Short Name: Nearby
 URL: https://github.com/google/nearby
-Version: 9f9b3d26d1030f91aa8bfcb84aa745f4f1a0f2a3
+Version: 756501bf3fc6b4c3266d1ff6ebcf04e39500f28c
 License: Apache 2.0
 License File: LICENSE
 Security Critical: yes
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 07c64a7..e1f4cf3 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -232,7 +232,7 @@
       'Dawn Linux x64 Builder': 'dawn_tests_with_desktop_gl_release_trybot_reclient',
       'Dawn Linux x64 DEPS Builder': 'dawn_tests_with_desktop_gl_release_trybot_reclient',
 
-      'Dawn Mac x64 Builder': 'dawn_tests_release_bot_dcheck_always_on_alloc_none',
+      'Dawn Mac x64 Builder': 'dawn_tests_release_bot_dcheck_always_on_alloc_none_reclient',
       'Dawn Mac x64 DEPS Builder': 'dawn_tests_release_bot_dcheck_always_on_alloc_none',
 
       'Dawn Win10 x64 ASAN Release': 'dawn_tests_asan_release_bot_dcheck_always_on_reclient',
@@ -415,7 +415,6 @@
       'fuchsia-fyi-arm64-rel': 'release_bot_fuchsia_arm64',
       'fuchsia-fyi-cfv2-script': 'release_bot_fuchsia_cfv2_script',
       'fuchsia-fyi-x64-rel': 'release_bot_fuchsia',
-      'fuchsia-fyi-x64-reviver': 'release_bot_fuchsia',
       'fuchsia-fyi-x64-wst': 'fuchsia_workstation_bot',
       'ios-fieldtrial-rel': 'ios_simulator_debug_static_bot_xctest_arm64',
       'ios-m1-simulator': 'ios_simulator_debug_static_bot_xctest_arm64',
@@ -425,7 +424,7 @@
       'ios-simulator-cr-recipe': 'ios_simulator_debug_static_bot_xctest',
       'ios-simulator-cronet': 'ios_cronet_xctest_reclient',
       'ios-simulator-multi-window': 'ios_simulator_debug_static_bot_xctest',
-      'ios-webkit-tot': 'ios_simulator_debug_static_bot_xctest',
+      'ios-webkit-tot': 'ios_simulator_debug_static_bot_xctest_reclient',
       'ios-wpt-fyi-rel': 'ios_simulator_debug_static_bot_xctest',
       'ios15-beta-simulator': 'ios_simulator_debug_static_bot_xctest_reclient',
       'ios15-sdk-device': 'ios_device_release_static_bot_xctest_reclient',
@@ -564,7 +563,7 @@
       'Android Release (Nexus 5X)': 'gpu_tests_android_release_bot_dcheck_always_on_arm64_fastbuild_reclient',
       'GPU Linux Builder': 'gpu_tests_release_trybot_minimal_symbols_reclient',
       'GPU Linux Builder (dbg)': 'gpu_tests_debug_bot_reclient',
-      'GPU Mac Builder': 'gpu_tests_release_trybot_minimal_symbols',
+      'GPU Mac Builder': 'gpu_tests_release_trybot_minimal_symbols_reclient',
       'GPU Mac Builder (dbg)': 'gpu_tests_debug_bot',
       'GPU Mac Builder (reclient shadow)': 'gpu_tests_release_trybot_minimal_symbols_reclient',
       'GPU Win x64 Builder': 'gpu_tests_release_bot_dcheck_always_on_resource_allowlisting_reclient',
@@ -2456,6 +2455,10 @@
       'dawn_tests', 'release_trybot_minimal_symbols', 'padisabled',
     ],
 
+    'dawn_tests_release_bot_dcheck_always_on_alloc_none_reclient': [
+      'dawn_tests', 'release_trybot_minimal_symbols_reclient', 'padisabled',
+    ],
+
     'dawn_tests_release_bot_dcheck_always_on_reclient': [
       'dawn_tests', 'release_trybot_minimal_symbols_reclient',
     ],
diff --git a/tools/mb/mb_config_expectations/chromium.dawn.json b/tools/mb/mb_config_expectations/chromium.dawn.json
index 637c800e..987f0b8 100644
--- a/tools/mb/mb_config_expectations/chromium.dawn.json
+++ b/tools/mb/mb_config_expectations/chromium.dawn.json
@@ -32,7 +32,7 @@
       "symbol_level": 1,
       "use_allocator": "none",
       "use_dawn": true,
-      "use_goma": true
+      "use_remoteexec": true
     }
   },
   "Dawn Mac x64 DEPS Builder": {
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json
index 42b5a4f..7cd62df 100644
--- a/tools/mb/mb_config_expectations/chromium.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -863,15 +863,6 @@
       "use_goma": true
     }
   },
-  "fuchsia-fyi-x64-reviver": {
-    "gn_args": {
-      "dcheck_always_on": false,
-      "is_component_build": false,
-      "is_debug": false,
-      "target_os": "fuchsia",
-      "use_goma": true
-    }
-  },
   "fuchsia-fyi-x64-wst": {
     "gn_args": {
       "dcheck_always_on": false,
@@ -1023,7 +1014,7 @@
       "target_cpu": "x64",
       "target_environment": "simulator",
       "target_os": "ios",
-      "use_goma": true
+      "use_remoteexec": true
     }
   },
   "ios-wpt-fyi-rel": {
diff --git a/tools/mb/mb_config_expectations/chromium.gpu.json b/tools/mb/mb_config_expectations/chromium.gpu.json
index bab202a..2fd70a7 100644
--- a/tools/mb/mb_config_expectations/chromium.gpu.json
+++ b/tools/mb/mb_config_expectations/chromium.gpu.json
@@ -43,7 +43,7 @@
       "is_debug": false,
       "proprietary_codecs": true,
       "symbol_level": 1,
-      "use_goma": true
+      "use_remoteexec": true
     }
   },
   "GPU Mac Builder (dbg)": {
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 4c0173cd..c8648f79 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -23489,7 +23489,7 @@
   <int value="6" label="Not allowed: Block 3rd party cookies"/>
   <int value="7" label="Not allowed: Network prediction disabled"/>
   <int value="8" label="Not allowed: Data reduction enabled"/>
-  <int value="9" label="Not allowed: Network metered"/>
+  <int value="9" label="(Obsolete) Not allowed: Network metered"/>
 </enum>
 
 <enum name="CustomTabsSpeculationStatusOnSwap">
@@ -32462,6 +32462,7 @@
   <int value="1016" label="DeviceReportXDREvents"/>
   <int value="1017" label="TrashEnabled"/>
   <int value="1018" label="ShoppingListEnabled"/>
+  <int value="1019" label="DeskAPIThirdPartyAccessEnabled"/>
 </enum>
 
 <enum name="EnterprisePoliciesSources">
@@ -75165,6 +75166,38 @@
   <int value="5" label="Data"/>
 </enum>
 
+<enum name="PageActionCTREvent">
+  <int value="0" label="Shown"/>
+  <int value="1" label="Clicked"/>
+</enum>
+
+<enum name="PageActionIconType">
+  <int value="0" label="Bookmarks Star"/>
+  <int value="1" label="Click to Call"/>
+  <int value="2" label="Cookie Controls"/>
+  <int value="3" label="File System Access"/>
+  <int value="4" label="Find"/>
+  <int value="5" label="High Efficiency"/>
+  <int value="6" label="Intent Picker"/>
+  <int value="7" label="Local Card Migration"/>
+  <int value="8" label="Manage Passwords"/>
+  <int value="9" label="Payments Offer Notification"/>
+  <int value="10" label="Price Tracking"/>
+  <int value="11" label="PWA Install"/>
+  <int value="12" label="QR Code Generator"/>
+  <int value="13" label="Reader Mode"/>
+  <int value="14" label="Save Autofill Address"/>
+  <int value="15" label="Save Card"/>
+  <int value="16" label="Send Tab to Self"/>
+  <int value="17" label="Sharing Hub"/>
+  <int value="18" label="Side Search"/>
+  <int value="19" label="SMS Remote Fetcher"/>
+  <int value="20" label="Translate"/>
+  <int value="21" label="Virtual Card Enroll"/>
+  <int value="22" label="Virtual Card Manual Fallback"/>
+  <int value="23" label="Zoom"/>
+</enum>
+
 <enum name="PageEndReason">
   <int value="0" label="END_NONE">
     Page lifetime has not yet ended (page is still active)
@@ -80132,6 +80165,7 @@
   <int value="39" label="kHasEffectiveUrl"/>
   <int value="40" label="kActivatedBeforeStarted"/>
   <int value="41" label="kInactivePageRestriction"/>
+  <int value="42" label="kStartFailed"/>
 </enum>
 
 <enum name="PrerenderHoverEvent">
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml
index a70d152..b613f296 100644
--- a/tools/metrics/histograms/metadata/ash/histograms.xml
+++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -738,7 +738,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.CalendarKeyboardNavigationSource"
-    enum="CalendarKeyboardNavigationSource" expires_after="2023-02-16">
+    enum="CalendarKeyboardNavigationSource" expires_after="2023-09-18">
   <owner>kradtke@chromium.org</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -750,7 +750,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.FetchEvents.FetchDuration" units="ms"
-    expires_after="2023-03-19">
+    expires_after="2023-09-18">
   <owner>rtinkoff@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -789,7 +789,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.FetchEvents.PreFetched" units="fetches"
-    expires_after="2022-11-10">
+    expires_after="2023-09-18">
   <owner>rtinkoff@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -800,7 +800,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.FetchEvents.Result"
-    enum="CalendarEventFetchApiError" expires_after="2023-03-19">
+    enum="CalendarEventFetchApiError" expires_after="2023-09-18">
   <owner>rtinkoff@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -811,7 +811,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.FetchEvents.SingleMonthSize" units="bytes"
-    expires_after="2023-04-14">
+    expires_after="2023-09-18">
   <owner>rtinkoff@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -822,7 +822,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.FetchEvents.Timeout" enum="Boolean"
-    expires_after="2023-03-19">
+    expires_after="2023-09-18">
   <owner>rtinkoff@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -833,7 +833,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.FetchEvents.TotalCacheSizeMonths" units="months"
-    expires_after="2023-04-13">
+    expires_after="2023-09-18">
   <owner>rtinkoff@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -844,7 +844,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.MaxDistanceBrowsed" units="months"
-    expires_after="2023-02-16">
+    expires_after="2023-09-18">
   <owner>newcomer@chromium.org</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -854,7 +854,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.MonthDwellTime" units="ms"
-    expires_after="2023-02-16">
+    expires_after="2023-09-18">
   <owner>kradtke@chromium.org</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -864,7 +864,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.ScrollSource" enum="CalendarViewScrollSource"
-    expires_after="2023-02-12">
+    expires_after="2023-09-18">
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -875,7 +875,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.ShowSource.{ViewShowSource}"
-    enum="CalendarEventSource" expires_after="2022-11-10">
+    enum="CalendarEventSource" expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -889,7 +889,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.TimeToSeeTodaysEventDots" units="ms"
-    expires_after="2023-02-12">
+    expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -901,7 +901,7 @@
 </histogram>
 
 <histogram name="Ash.Calendar.{CalendarChildView}.Activated"
-    enum="CalendarEventSource" expires_after="2022-11-10">
+    enum="CalendarEventSource" expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>Recorded when the {CalendarChildView} is activated.</summary>
@@ -914,7 +914,7 @@
 </histogram>
 
 <histogram name="Ash.CalendarView.CloseEventList.AnimationSmoothness" units="%"
-    expires_after="2023-02-18">
+    expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -923,7 +923,7 @@
 </histogram>
 
 <histogram name="Ash.CalendarView.ConstructionTime" units="ms"
-    expires_after="2023-02-18">
+    expires_after="2023-09-18">
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
   <summary>
@@ -934,7 +934,7 @@
 </histogram>
 
 <histogram name="Ash.CalendarView.OnMonthChanged.AnimationSmoothness" units="%"
-    expires_after="2023-02-18">
+    expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -960,7 +960,7 @@
 
 <histogram
     name="Ash.CalendarView.ScrollOneMonth.{CalendarChildView}.AnimationSmoothness"
-    units="%" expires_after="2023-02-18">
+    units="%" expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
@@ -977,7 +977,7 @@
 
 <histogram
     name="Ash.CalendarView.{Animation}.{CalendarChildView}.AnimationSmoothness"
-    units="%" expires_after="2023-02-18">
+    units="%" expires_after="2023-09-18">
   <owner>newcomer@google.com</owner>
   <owner>jiamingc@google.com</owner>
   <owner>cros-status-area-eng@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/page/histograms.xml b/tools/metrics/histograms/metadata/page/histograms.xml
index 707cdd2c8..19042fac 100644
--- a/tools/metrics/histograms/metadata/page/histograms.xml
+++ b/tools/metrics/histograms/metadata/page/histograms.xml
@@ -60,6 +60,16 @@
   <variant name="SessionWindow"/>
 </variants>
 
+<histogram name="PageActionController.ActionTypeShown"
+    enum="PageActionIconType" expires_after="2023-02-01">
+  <owner>emshack@chromium.org</owner>
+  <owner>chrome-desktop-ui-sea@google.com</owner>
+  <summary>
+    The type of Page Action currently shown. Logged once per ephemeral page
+    action the first time it becomes visible on a given page.
+  </summary>
+</histogram>
+
 <histogram name="PageActionController.ExtensionsWithPageActions" units="units"
     expires_after="2023-02-12">
   <owner>rdevlin.cronin@chromium.org</owner>
@@ -70,6 +80,85 @@
   </summary>
 </histogram>
 
+<histogram name="PageActionController.Icon.CTR" enum="PageActionCTREvent"
+    expires_after="2023-02-01">
+  <owner>emshack@chromium.org</owner>
+  <owner>chrome-desktop-ui-sea@google.com</owner>
+  <summary>
+    Records events related to overall ephemeral page action icon click through
+    rate (CTR) calculation.
+
+    The CTR can be calculated by computing &quot;Clicked&quot; /
+    &quot;Shown&quot;. &quot;Clicked&quot; means the page action icon was
+    clicked. &quot;Shown&quot; means that the page action icon was displayed.
+    &quot;Shown&quot; is logged once per page action the first time it becomes
+    visible on a given page, and &quot;Clicked&quot; is logged once per click.
+  </summary>
+</histogram>
+
+<histogram name="PageActionController.Icon.NumberActionsShownWhenClicked"
+    units="actions" expires_after="2023-02-01">
+  <owner>emshack@chromium.org</owner>
+  <owner>chrome-desktop-ui-sea@google.com</owner>
+  <summary>
+    The number of ephemeral Page Actions currently shown. Measured each time a
+    page action icon is clicked.
+  </summary>
+</histogram>
+
+<histogram name="PageActionController.NumberActionsShown" units="actions"
+    expires_after="2023-02-01">
+  <owner>emshack@chromium.org</owner>
+  <owner>chrome-desktop-ui-sea@google.com</owner>
+  <summary>
+    The number of ephemeral Page Actions currently shown. Measured each time a
+    new page is loaded, and then again when each new page action appears on the
+    same page.
+  </summary>
+</histogram>
+
+<histogram name="PageActionController.{PageActionType}.Icon.CTR"
+    enum="PageActionCTREvent" expires_after="2023-02-01">
+  <owner>emshack@chromium.org</owner>
+  <owner>chrome-desktop-ui-sea@google.com</owner>
+  <summary>
+    Records events related to {PageActionType} page action icon click through
+    rate (CTR) calculation.
+
+    The CTR can be calculated by computing &quot;Clicked&quot; /
+    &quot;Shown&quot;. &quot;Clicked&quot; means the page action icon was
+    clicked. &quot;Shown&quot; means that the page action icon was displayed.
+    &quot;Shown&quot; is logged once per page action the first time it becomes
+    visible on a given page, and &quot;Clicked&quot; is logged once per click.
+  </summary>
+  <token key="PageActionType">
+    <variant name="BookmarksStar"/>
+    <variant name="ClickToCall"/>
+    <variant name="CookieControls"/>
+    <variant name="FileSystemAccess"/>
+    <variant name="Find"/>
+    <variant name="HighEfficiency"/>
+    <variant name="IntentPicker"/>
+    <variant name="LocalCardMigration"/>
+    <variant name="ManagePasswords"/>
+    <variant name="PaymentsOfferNotification"/>
+    <variant name="PriceTracking"/>
+    <variant name="PWAInstall"/>
+    <variant name="QRCodeGenerator"/>
+    <variant name="ReaderMode"/>
+    <variant name="SaveAutofillAddress"/>
+    <variant name="SaveCard"/>
+    <variant name="SendTabToSelf"/>
+    <variant name="SharingHub"/>
+    <variant name="SideSearch"/>
+    <variant name="SMSRemoteFetcher"/>
+    <variant name="Translate"/>
+    <variant name="VirtualCardEnroll"/>
+    <variant name="VirtualCardManualFeedback"/>
+    <variant name="Zoom"/>
+  </token>
+</histogram>
+
 <histogram base="true"
     name="PageLoad.AdPaintTiming.NavigationToFirstContentfulPaint3" units="ms"
     expires_after="never">
diff --git a/tools/metrics/histograms/metadata/sb_client/histograms.xml b/tools/metrics/histograms/metadata/sb_client/histograms.xml
index 738df1b..4f57ff6 100644
--- a/tools/metrics/histograms/metadata/sb_client/histograms.xml
+++ b/tools/metrics/histograms/metadata/sb_client/histograms.xml
@@ -464,6 +464,19 @@
   </summary>
 </histogram>
 
+<histogram name="SBClientDownload.TailoredWarning.HasVaidEmailForAccountInfo"
+    enum="BooleanValid" expires_after="2023-03-16">
+  <owner>xinghuilu@chromium.org</owner>
+  <owner>chrome-counter-abuse-alerts@google.com</owner>
+  <summary>
+    Records whether Chrome can find a valid email to be added in the tailored
+    warning string. Logged each time Safe Browsing asks Chrome to show the
+    account info in the warining. Ideally invalid email should be rare, because
+    Safe Browsing should take the user's signed-in status into account when
+    generating tailored verdicts.
+  </summary>
+</histogram>
+
 <histogram name="SBClientDownload.UserGestureFileType.Attributes"
     enum="SBClientDownloadUserGestureFileTypeAttributes"
     expires_after="2023-02-12">
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 4f7c34e..b1f89d2 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -13,8 +13,8 @@
             "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "mac": {
-            "hash": "096434909de0f7b0af07447e8279004b8fbddac8",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/ee1648233f427cc5526481e1074a48bd77caa29e/trace_processor_shell"
+            "hash": "ef8f48de5e54c1aae1298115d04e68c8abfadf4c",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/3a9f96aecc5ffe0b5a9d6d540653468f0b215842/trace_processor_shell"
         },
         "mac_arm64": {
             "hash": "e1ad4861384b06d911a65f035317914b8cc975c6",
diff --git a/ui/base/ime/mojom/virtual_keyboard_types.mojom b/ui/base/ime/mojom/virtual_keyboard_types.mojom
index e0746e4..36f1c74 100644
--- a/ui/base/ime/mojom/virtual_keyboard_types.mojom
+++ b/ui/base/ime/mojom/virtual_keyboard_types.mojom
@@ -18,3 +18,22 @@
   SHOW,
   HIDE,
 };
+
+// Modes available to author APIs to specify how the virtual keyboard interacts
+// with Blink's viewports and layout.
+enum VirtualKeyboardMode {
+  // Use the platform default. Current defaults:
+  // Android - resize-layout: entire page container is resized, inducing layout.
+  // ChromeOS - resize-visual: only the visual viewport is resized.
+  // Other - no virtual keyboard interaction.
+  kUnset,
+  // The virtual keyboard resizes the layout (and visual) viewport. Can be set
+  // by the page via the viewport meta tag using
+  // `virtual-keyboard=resize-layout`. Currently works only on Android Chrome
+  // and only when the OSKResizesVisualViewport flag is enabled.
+  kResizeLayout,
+  // The virtual keyboard doesn't resize any viewports and is observable only
+  // via the virtualKeyboard API `geometrychange` event. Can be set using the
+  // `navigator.virtualKeyboard.overlayContent` API.
+  kOverlaysContent
+};
diff --git a/ui/chromeos/file_manager_strings.grdp b/ui/chromeos/file_manager_strings.grdp
index 6e13dda..250b270 100644
--- a/ui/chromeos/file_manager_strings.grdp
+++ b/ui/chromeos/file_manager_strings.grdp
@@ -1514,7 +1514,7 @@
     Learn more
   </message>
   <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS" desc="Context menu item that shows the DLP restriction details for the selected file.">
-    Restriction details
+    Review admin policy
   </message>
   <message name="IDS_FILE_BROWSER_DLP_MANAGED_ICON_TOOLTIP" desc="Tooltip of the data leak prevention managed icon.">
     This file is confidential and subject to restrictions by administrator policy. <ph name="BEGIN_LINK_HELP">&lt;a target='_blank' href='$1'&gt;</ph>Learn more<ph name="END_LINK_HELP">&lt;/a&gt;</ph>
@@ -1525,4 +1525,43 @@
   <message name="IDS_FILE_BROWSER_DLP_FILE_SAVER_BANNER" desc="Message informing the user that some locations cannot be chosen to save downloaded files to due to DLP restrictions.">
     Administrator policy restricts saving to some locations.
   </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_TITLE" desc="The title of the DLP restriction details modal.">
+    Administrator policy
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_MESSAGE" desc="The description text of the DLP restriction details modal.">
+    This file is confidential and subject to administrator policy. The following file access and transfer actions apply.
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_BLOCK" desc="The message shown for blocked destinations and components in the DLP restriction details modal.">
+    Administrator policy prevents:
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_WARN" desc="The message shown for warned destinations and components in the DLP restriction details modal.">
+    Administrator policy doesn't recommend:
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_REPORT" desc="The message shown for reported destinations and components in the DLP restriction details modal.">
+    Administrator monitors:
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS" desc="The message shown for the list of DLP restricted destinations.">
+    File access by <ph name="RESTRICTED_DESTINATIONS">$1<ex>https://google.com</ex></ph>
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL" desc="The message shown when a wildcard is given in as a restricted destination.">
+    File access by all urls
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT" desc="The message shown when a wildcard is given in as a restricted destination but some destinations should be excluded.">
+    File access by all urls except <ph name="NON_RESTRICTED_DESTINATIONS">$1<ex>https://google.com</ex></ph>
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_TRANSFER" desc="The message shown for the list of DLP restricted components.">
+    File transfer to <ph name="RESTRICTED_COMPONENTS">$1<ex>removable storage</ex></ph>
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_COMPONENT_REMOVABLE" desc="Removable storage component label.">
+    removable storage
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_COMPONENT_PLAY" desc="Play component label.">
+    Play
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_COMPONENT_LINUX" desc="Linux component label.">
+    Linux
+  </message>
+  <message name="IDS_FILE_BROWSER_DLP_COMPONENT_VM" desc="PluginVM component label.">
+    virtual machine
+  </message>
 </grit-part>
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_LINUX.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_LINUX.png.sha1
new file mode 100644
index 0000000..f30a2eb
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_LINUX.png.sha1
@@ -0,0 +1 @@
+3000b5fe1cfc6e4815e43d1ef8e09ebe42b4243a
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_PLAY.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_PLAY.png.sha1
new file mode 100644
index 0000000..95c2464
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_PLAY.png.sha1
@@ -0,0 +1 @@
+dbbb5046adf643e95412dc64924dd3766680e5a9
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_REMOVABLE.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_REMOVABLE.png.sha1
new file mode 100644
index 0000000..99293ed
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_REMOVABLE.png.sha1
@@ -0,0 +1 @@
+2a17a113235dbc39c5e8d08714435d3568407790
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_VM.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_VM.png.sha1
new file mode 100644
index 0000000..067028e5
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_COMPONENT_VM.png.sha1
@@ -0,0 +1 @@
+e583e08a6302ea9cf95ee9e937326063c59ca3ba
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS.png.sha1
index 3ae58694..69bb7ca7 100644
--- a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS.png.sha1
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS.png.sha1
@@ -1 +1 @@
-47783babd791a0002f0045984ab7dab38f701541
\ No newline at end of file
+49d3ec320baba226edb9da1f137d1a07f7e33dbf
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_BLOCK.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_BLOCK.png.sha1
new file mode 100644
index 0000000..a328f33
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_BLOCK.png.sha1
@@ -0,0 +1 @@
+1bb959d10bcd26db78d410242d109056fc78f56e
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS.png.sha1
new file mode 100644
index 0000000..8ffa01a
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS.png.sha1
@@ -0,0 +1 @@
+905addd95e2c9b3c9dfde7e4df83cb147db53d67
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL.png.sha1
new file mode 100644
index 0000000..7f5f3807
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL.png.sha1
@@ -0,0 +1 @@
+0685278d0e45921db33941731e517ae5431e3847
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT.png.sha1
new file mode 100644
index 0000000..bf58e55
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT.png.sha1
@@ -0,0 +1 @@
+7e84e25f5dc9d33df7e4a3f4e150e2692ed4bb18
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_TRANSFER.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_TRANSFER.png.sha1
new file mode 100644
index 0000000..f42d3d0
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_FILE_TRANSFER.png.sha1
@@ -0,0 +1 @@
+ceb3f6a713e57c30ff81cf24a41bc41be437e8a3
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_MESSAGE.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_MESSAGE.png.sha1
new file mode 100644
index 0000000..2d5bf3b8
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_MESSAGE.png.sha1
@@ -0,0 +1 @@
+12a755577f2ca5509ec59db449ee7a2df5787a47
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_REPORT.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_REPORT.png.sha1
new file mode 100644
index 0000000..7939e7e
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_REPORT.png.sha1
@@ -0,0 +1 @@
+eba0cfbe0f2417b61316963a1ae9b3bcd98ebded
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_TITLE.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_TITLE.png.sha1
new file mode 100644
index 0000000..b72c68a
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_TITLE.png.sha1
@@ -0,0 +1 @@
+d7b4109b3d7eea56f52461b8f6171bfa584b2fa9
\ No newline at end of file
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_WARN.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_WARN.png.sha1
new file mode 100644
index 0000000..9e7c3c79
--- /dev/null
+++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DLP_RESTRICTION_DETAILS_WARN.png.sha1
@@ -0,0 +1 @@
+e5b7362d19cb5a0b2a49b3444cbe9db50c5328e2
\ No newline at end of file
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 0b59079..406e367 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -226,9 +226,6 @@
 
   // Destroying the animator may cause observers to use the layer. Destroy the
   // animator first so that the layer is still around.
-#if defined(ADDRESS_SANITIZER)
-  destroyed_ = true;
-#endif
   SetAnimator(nullptr);
   if (compositor_)
     compositor_->SetRootLayer(nullptr);
@@ -458,9 +455,6 @@
 }
 
 void Layer::SetAnimator(LayerAnimator* animator) {
-#if defined(ADDRESS_SANITIZER)
-  CHECK(!destroyed_ || !animator);
-#endif
   Compositor* compositor = GetCompositor();
 
   if (animator_) {
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h
index c9171e4..75e4eb6 100644
--- a/ui/compositor/layer.h
+++ b/ui/compositor/layer.h
@@ -824,11 +824,6 @@
   // layer.
   unsigned trilinear_filtering_request_;
 
-  // TODO(crbug.com/1172694): Remove once the root cause is identified.
-#if defined(ADDRESS_SANITIZER)
-  bool destroyed_ = false;
-#endif
-
   // TODO(https://crbug.com/1242749): temporary while tracking down crash.
   bool in_send_damaged_rects_ = false;
   bool sending_damaged_rects_for_descendants_ = false;
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.cc b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.cc
index 586b30c..1365bbc 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.cc
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.cc
@@ -33,20 +33,49 @@
 bool IsEarlyStageSample(
     const PalmFilterStroke& stroke,
     const NeuralStylusPalmDetectionFilterModelConfig& config) {
-  return config.early_stage_sample_counts.find(stroke.samples_seen()) !=
-         config.early_stage_sample_counts.end();
+  if (!config.resample_period) {
+    return config.early_stage_sample_counts.find(stroke.samples_seen()) !=
+           config.early_stage_sample_counts.end();
+  }
+  // Duration is not well-defined for sample_count <= 1, so we handle
+  // it separately.
+  if (stroke.samples().empty()) {
+    return false;
+  }
+  if (stroke.samples().size() == 1) {
+    return config.early_stage_sample_counts.find(1) !=
+           config.early_stage_sample_counts.end();
+  }
+  for (const uint32_t sample_count : config.early_stage_sample_counts) {
+    const base::TimeDelta duration = config.GetEquivalentDuration(sample_count);
+    // Previous sample must not have passed the 'duration' threshold, but the
+    // current sample must pass the threshold
+    if (stroke.LastSampleCrossed(duration)) {
+      return true;
+    }
+  }
+  return false;
 }
 
 bool HasDecidedStroke(
     const PalmFilterStroke& stroke,
     const NeuralStylusPalmDetectionFilterModelConfig& config) {
-  return stroke.samples_seen() >= config.max_sample_count;
+  if (!config.resample_period) {
+    return stroke.samples_seen() >= config.max_sample_count;
+  }
+  const base::TimeDelta max_duration =
+      config.GetEquivalentDuration(config.max_sample_count);
+  return stroke.Duration() >= max_duration;
 }
 
 bool IsVeryShortStroke(
     const PalmFilterStroke& stroke,
     const NeuralStylusPalmDetectionFilterModelConfig& config) {
-  return stroke.samples_seen() < config.min_sample_count;
+  if (!config.resample_period) {
+    return stroke.samples_seen() < config.min_sample_count;
+  }
+  return stroke.Duration() <
+         config.GetEquivalentDuration(config.min_sample_count);
 }
 
 /**
@@ -54,9 +83,15 @@
  * being evaluated. The parameter 'neighbor_min_sample_count' might be different
  * from the config, depending on the specific usage in the caller.
  */
-bool HasInsufficientDataAsNeighbor(const PalmFilterStroke& neighbor_stroke,
-                                   size_t neighbor_min_sample_count) {
-  return neighbor_stroke.samples().size() < neighbor_min_sample_count;
+bool HasInsufficientDataAsNeighbor(
+    const PalmFilterStroke& neighbor_stroke,
+    size_t neighbor_min_sample_count,
+    const NeuralStylusPalmDetectionFilterModelConfig& config) {
+  if (!config.resample_period) {
+    return neighbor_stroke.samples().size() < neighbor_min_sample_count;
+  }
+  return neighbor_stroke.Duration() <
+         config.GetEquivalentDuration(neighbor_min_sample_count);
 }
 
 }  // namespace
@@ -91,7 +126,8 @@
     if (neighbor.tracking_id() == stroke.tracking_id()) {
       continue;
     }
-    if (HasInsufficientDataAsNeighbor(neighbor, neighbor_min_sample_count)) {
+    if (HasInsufficientDataAsNeighbor(neighbor, neighbor_min_sample_count,
+                                      model_->config())) {
       continue;
     }
     float distance =
@@ -131,7 +167,8 @@
     if (neighbor.tracking_id() == stroke.tracking_id()) {
       continue;
     }
-    if (HasInsufficientDataAsNeighbor(neighbor, neighbor_min_sample_count)) {
+    if (HasInsufficientDataAsNeighbor(neighbor, neighbor_min_sample_count,
+                                      model_->config())) {
       continue;
     }
     float distance =
@@ -286,15 +323,29 @@
     const PalmFilterStroke& stroke) const {
   const NeuralStylusPalmDetectionFilterModelConfig& config = model_->config();
   // Inference only executed once per stroke
-  return stroke.samples_seen() == config.max_sample_count;
+  if (!config.resample_period) {
+    return stroke.samples_seen() == config.max_sample_count;
+  }
+  return stroke.LastSampleCrossed(
+      config.GetEquivalentDuration(config.max_sample_count));
 }
 
 bool NeuralStylusPalmDetectionFilter::IsHeuristicPalmStroke(
     const PalmFilterStroke& stroke) const {
   const auto& config = model_->config();
-  if (stroke.samples().size() >= config.max_sample_count) {
-    LOG(DFATAL) << "Should not call this method on long strokes.";
-    return false;
+  if (config.resample_period) {
+    if (stroke.Duration() >
+        config.GetEquivalentDuration(config.max_sample_count)) {
+      LOG(DFATAL)
+          << "Should not call this method on long strokes. Got duration = "
+          << stroke.Duration();
+      return false;
+    }
+  } else {
+    if (stroke.samples().size() >= config.max_sample_count) {
+      LOG(DFATAL) << "Should not call this method on long strokes.";
+      return false;
+    }
   }
 
   if (config.heuristic_palm_touch_limit > 0.0) {
@@ -387,6 +438,9 @@
 void NeuralStylusPalmDetectionFilter::AppendFeatures(
     const PalmFilterStroke& stroke,
     std::vector<float>* features) const {
+  if (model_->config().resample_period) {
+    return AppendResampledFeatures(stroke, features);
+  }
   const int size = stroke.samples().size();
   for (int i = 0; i < size; ++i) {
     const PalmFilterSample& sample = stroke.samples()[i];
@@ -421,6 +475,59 @@
     features->push_back(samples_seen - model_->config().max_sample_count);
   }
 }
+
+/**
+ * The flow here is similar to 'AppendFeatures' above, but we rely on the
+ * timing of the samples rather than on the explicit number / position of
+ * samples.
+ */
+void NeuralStylusPalmDetectionFilter::AppendResampledFeatures(
+    const PalmFilterStroke& stroke,
+    std::vector<float>* features) const {
+  size_t sample_count = 0;
+  const base::TimeTicks& first_time = stroke.samples()[0].time;
+  const base::TimeDelta& resample_period = *model_->config().resample_period;
+  const base::TimeDelta max_duration =
+      model_->config().GetEquivalentDuration(model_->config().max_sample_count);
+  for (auto time = first_time; (time - first_time) <= max_duration &&
+                               time <= stroke.samples().back().time;
+       time += resample_period) {
+    sample_count++;
+    const PalmFilterSample& sample = stroke.GetSampleAt(time);
+    features->push_back(sample.major_radius);
+    features->push_back(sample.minor_radius <= 0.0 ? sample.major_radius
+                                                   : sample.minor_radius);
+    float distance = 0;
+    if (time != first_time) {
+      distance = EuclideanDistance(
+          stroke.GetSampleAt(time - resample_period).point, sample.point);
+    }
+    features->push_back(distance);
+    features->push_back(sample.edge);
+    features->push_back(1.0);  // existence.
+  }
+  const int padding = model_->config().max_sample_count - sample_count;
+  DCHECK_GE(padding, 0);
+
+  for (int i = 0; i < padding * kFeaturesPerSample; ++i) {
+    features->push_back(0.0);
+  }
+  // "fill proportion."
+  features->push_back(static_cast<float>(sample_count) /
+                      model_->config().max_sample_count);
+  features->push_back(EuclideanDistance(stroke.samples().front().point,
+                                        stroke.samples().back().point));
+
+  // Start sequence number. 0 is min.
+  uint32_t samples_seen =
+      (stroke.Duration() / (*model_->config().resample_period)) + 1;
+  if (samples_seen < model_->config().max_sample_count) {
+    features->push_back(0);
+  } else {
+    features->push_back(samples_seen - model_->config().max_sample_count);
+  }
+}
+
 void NeuralStylusPalmDetectionFilter::AppendFeaturesAsNeighbor(
     const PalmFilterStroke& stroke,
     float distance,
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.h b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.h
index 9b5ecae..7e54c0a 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.h
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter.h
@@ -81,6 +81,8 @@
   std::vector<float> ExtractFeatures(int tracking_id) const;
   void AppendFeatures(const PalmFilterStroke& stroke,
                       std::vector<float>* features) const;
+  void AppendResampledFeatures(const PalmFilterStroke& stroke,
+                               std::vector<float>* features) const;
   void AppendFeaturesAsNeighbor(const PalmFilterStroke& stroke,
                                 float distance,
                                 std::vector<float>* features) const;
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.cc b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.cc
index c1d9dfea..dcf8ae5 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.cc
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.cc
@@ -4,6 +4,8 @@
 
 #include "ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h"
 
+#include "base/logging.h"
+
 namespace ui {
 
 NeuralStylusPalmDetectionFilterModelConfig::
@@ -15,4 +17,19 @@
 
 NeuralStylusPalmDetectionFilterModelConfig::
     ~NeuralStylusPalmDetectionFilterModelConfig() = default;
+
+base::TimeDelta
+NeuralStylusPalmDetectionFilterModelConfig::GetEquivalentDuration(
+    uint32_t sample_count) const {
+  if (!resample_period) {
+    LOG(DFATAL) << __func__
+                << " should only be called if resampling is enabled";
+    return base::Microseconds(0);
+  }
+  if (sample_count <= 1) {
+    return base::Microseconds(0);
+  }
+  return (sample_count - 1) * (*resample_period);
+}
+
 }  // namespace ui
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h
index 76f8cb23..adcae3f 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h
@@ -38,6 +38,10 @@
   // Maximum sample count.
   uint32_t max_sample_count = 0;
 
+  // Convert the provided 'sample_count' to an equivalent time duration.
+  // Should only be called when resampling is enabled.
+  base::TimeDelta GetEquivalentDuration(uint32_t sample_count) const;
+
   // Minimum count of samples for a stroke to be considered as a neighbor.
   uint32_t neighbor_min_sample_count = 0;
 
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc
index 5f6fb94..c9d75c2 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc
@@ -26,7 +26,8 @@
                      const NeuralStylusPalmDetectionFilterModelConfig&());
 };
 
-class NeuralStylusPalmDetectionFilterTest : public testing::Test {
+class NeuralStylusPalmDetectionFilterTest
+    : public testing::TestWithParam<float> {
  public:
   NeuralStylusPalmDetectionFilterTest() = default;
 
@@ -45,6 +46,11 @@
     model_config_.heuristic_palm_touch_limit = 40;
     model_config_.heuristic_palm_area_limit = 1000;
     model_config_.max_dead_neighbor_time = base::Milliseconds(100);
+    const float resample_period = GetParam();
+    if (resample_period != 0.0) {
+      model_config_.resample_period = base::Milliseconds(resample_period);
+      sample_period_ = *model_config_.resample_period;
+    }
     EXPECT_CALL(*model_, config())
         .Times(testing::AnyNumber())
         .WillRepeatedly(testing::ReturnRef(model_config_));
@@ -68,12 +74,18 @@
   raw_ptr<MockNeuralModel> model_;
   NeuralStylusPalmDetectionFilterModelConfig model_config_;
   std::unique_ptr<PalmDetectionFilter> palm_detection_filter_;
+  base::TimeDelta sample_period_ = base::Milliseconds(8);
 };
 
-class NeuralStylusPalmDetectionFilterDeathTest
-    : public NeuralStylusPalmDetectionFilterTest {};
+INSTANTIATE_TEST_SUITE_P(ParametricFilterTest,
+                         NeuralStylusPalmDetectionFilterTest,
+                         ::testing::Values(0, 8.0),
+                         [](const auto& paramInfo) {
+                           return paramInfo.param != 0.0 ? "ResamplingEnabled"
+                                                         : "ResamplingDisabled";
+                         });
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, EventDeviceSimpleTest) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, EventDeviceSimpleTest) {
   EventDeviceInfo devinfo;
   std::vector<std::pair<DeviceCapabilities, bool>> devices = {
       {kNocturneTouchScreen, true},
@@ -103,23 +115,25 @@
   }
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterDeathTest, EventDeviceConstructionDeath) {
+TEST(NeuralStylusPalmDetectionFilterDeathTest, EventDeviceConstructionDeath) {
   EventDeviceInfo bad_devinfo;
   EXPECT_TRUE(CapabilitiesToDeviceInfo(kNocturneStylus, &bad_devinfo));
+  std::unique_ptr<NeuralStylusPalmDetectionFilterModel> model_(
+      new testing::StrictMock<MockNeuralModel>);
+  std::unique_ptr<SharedPalmDetectionFilterState> shared_palm_state =
+      std::make_unique<SharedPalmDetectionFilterState>();
   EXPECT_DCHECK_DEATH({
-    NeuralStylusPalmDetectionFilter f(
-        bad_devinfo,
-        std::unique_ptr<NeuralStylusPalmDetectionFilterModel>(model_),
-        shared_palm_state.get());
+    NeuralStylusPalmDetectionFilter f(bad_devinfo, std::move(model_),
+                                      shared_palm_state.get());
   });
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, NameTest) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, NameTest) {
   EXPECT_EQ("NeuralStylusPalmDetectionFilter",
             palm_detection_filter_->FilterNameForTesting());
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, ShortTouchPalmAreaTest) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, ShortTouchPalmAreaTest) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled,
       expected_cancelled;
   touch_[0].touching = true;
@@ -146,7 +160,7 @@
   EXPECT_EQ(expected_cancelled, actual_cancelled);
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, ShortTouchPalmSizeTest) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, ShortTouchPalmSizeTest) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled;
   touch_[0].touching = true;
   touch_[0].tracking_id = 600;
@@ -164,7 +178,7 @@
   touch_[0].was_touching = true;
   touch_[0].touching = false;
   touch_[0].tracking_id = -1;
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   EXPECT_TRUE(actual_held.none());
@@ -182,7 +196,7 @@
   touch_[0].was_touching = true;
   touch_[0].touching = false;
   touch_[0].tracking_id = -1;
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   EXPECT_TRUE(actual_held.none());
@@ -191,7 +205,7 @@
   EXPECT_TRUE(actual_cancelled.none());
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, CallFilterTest) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, CallFilterTest) {
   // Set up 3 touches as touching:
   // Touch 0 starts off and is sent twice
   // Touch 1 and 2 are then added on: 2 is far away, 1 is nearby. We expect a
@@ -238,7 +252,7 @@
   touch_[2].tracking_id = 502;
   touch_[2].slot = 2;
 
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   EXPECT_TRUE(actual_held.none());
@@ -263,7 +277,7 @@
               Inference(testing::Pointwise(testing::FloatEq(), features)))
       .Times(1)
       .WillOnce(testing::Return(0.5));
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   EXPECT_TRUE(actual_held.none());
@@ -285,7 +299,7 @@
               Inference(testing::Pointwise(testing::FloatEq(), features)))
       .Times(1)
       .WillOnce(testing::Return(0.5));
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   EXPECT_TRUE(actual_held.none());
@@ -293,7 +307,7 @@
   EXPECT_EQ(actual_cancelled, expected_cancelled);
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, CallFilterTestWithAdaptiveHold) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, CallFilterTestWithAdaptiveHold) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled;
   std::bitset<kNumTouchEvdevSlots> expected_held, expected_cancelled;
 
@@ -348,7 +362,7 @@
               Inference(testing::Pointwise(testing::FloatEq(), features)))
       .Times(1)
       .WillOnce(testing::Return(0.5));
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   // Slot 0 is held.
@@ -404,7 +418,7 @@
       .Times(1)
       .WillOnce(testing::Return(0.5));
 
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
 
@@ -443,7 +457,7 @@
               Inference(testing::Pointwise(testing::FloatEq(), features)))
       .Times(1)
       .WillOnce(testing::Return(0.5));
-  touch_time += base::Milliseconds(8.0f);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
 
@@ -462,7 +476,7 @@
   EXPECT_EQ(actual_cancelled, expected_cancelled);
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, InferenceOnceNotPalm) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, InferenceOnceNotPalm) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled;
   base::TimeTicks touch_time =
       base::TimeTicks::UnixEpoch() + base::Milliseconds(10.0);
@@ -480,7 +494,7 @@
     if (i != 0) {
       touch_[0].was_touching = true;
     }
-    touch_time += base::Milliseconds(8.0f);
+    touch_time += sample_period_;
     palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                    &actual_cancelled);
     ASSERT_TRUE(actual_held.none()) << " Failed at " << i;
@@ -488,7 +502,7 @@
   }
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, InferenceOncePalm) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, InferenceOncePalm) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled;
   std::bitset<kNumTouchEvdevSlots> expected_cancelled;
   base::TimeTicks touch_time =
@@ -512,7 +526,7 @@
     if (i != 0) {
       touch_[0].was_touching = true;
     }
-    touch_time += base::Milliseconds(8.0f);
+    touch_time += sample_period_;
     palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                    &actual_cancelled);
     ASSERT_EQ(original_finger_time,
@@ -532,7 +546,7 @@
   }
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, DelayShortFingerTouch) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, DelayShortFingerTouch) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled;
   std::bitset<kNumTouchEvdevSlots> expected_held, expected_cancelled;
   model_config_.heuristic_delay_start_if_palm = true;
@@ -552,7 +566,7 @@
   EXPECT_EQ(expected_cancelled, actual_cancelled);
 }
 
-TEST_F(NeuralStylusPalmDetectionFilterTest, DelayShortPalmTouch) {
+TEST_P(NeuralStylusPalmDetectionFilterTest, DelayShortPalmTouch) {
   std::bitset<kNumTouchEvdevSlots> actual_held, actual_cancelled;
   std::bitset<kNumTouchEvdevSlots> expected_held, expected_cancelled;
   model_config_.heuristic_delay_start_if_palm = true;
@@ -575,7 +589,7 @@
   // Delay continues even afterwards, until inference time: then it's off.
   for (uint32_t i = 1; i < model_config_.max_sample_count - 1; ++i) {
     touch_[0].was_touching = true;
-    touch_time += base::Milliseconds(10.0);
+    touch_time += sample_period_;
     touch_[0].major = 15;
     touch_[0].minor = 15;
     touch_[0].x += 1;
@@ -589,7 +603,7 @@
   EXPECT_CALL(*model_, Inference(testing::_))
       .Times(1)
       .WillOnce(testing::Return(-0.1));
-  touch_time = base::TimeTicks::UnixEpoch() + base::Milliseconds(10.0);
+  touch_time += sample_period_;
   palm_detection_filter_->Filter(touch_, touch_time, &actual_held,
                                  &actual_cancelled);
   expected_held.set(0, false);
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.cc b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.cc
index 89ff01e..b0c7fc8d 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.cc
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.cc
@@ -4,6 +4,7 @@
 
 #include "ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h"
 
+#include <base/logging.h>
 #include <algorithm>
 
 namespace ui {
@@ -77,7 +78,7 @@
  * not interpolated, the values are taken from the 'after' sample unless the
  * requested time is very close to the 'before' sample.
  */
-PalmFilterSample getSampleAtTime(base::TimeTicks time,
+PalmFilterSample GetSampleAtTime(base::TimeTicks time,
                                  const PalmFilterSample& before,
                                  const PalmFilterSample& after) {
   // Use the newest sample as the base, except when the requested time is very
@@ -150,16 +151,30 @@
 
 void PalmFilterStroke::ProcessSample(const PalmFilterSample& sample) {
   DCHECK_EQ(tracking_id_, sample.tracking_id);
-  if (resample_period_.has_value()) {
-    Resample(sample);
-    return;
+  if (samples_seen_ == 0) {
+    first_sample_time_ = sample.time;
   }
 
   AddSample(sample);
 
-  while (samples_.size() > max_sample_count_) {
-    AddToUnscaledCentroid(-samples_.front().point.OffsetFromOrigin());
-    samples_.pop_front();
+  if (resample_period_.has_value()) {
+    // Prune based on time
+    const base::TimeDelta max_duration =
+        (*resample_period_) * (max_sample_count_ - 1);
+    while (samples_.size() > 2 &&
+           samples_.back().time - samples_[1].time >= max_duration) {
+      // We can only discard the sample if after it's discarded, we still cover
+      // the entire range. If we don't, we need to keep this sample for
+      // calculating resampled values.
+      AddToUnscaledCentroid(-samples_.front().point.OffsetFromOrigin());
+      samples_.pop_front();
+    }
+  } else {
+    // Prune based on number of samples
+    while (samples_.size() > max_sample_count_) {
+      AddToUnscaledCentroid(-samples_.front().point.OffsetFromOrigin());
+      samples_.pop_front();
+    }
   }
 }
 
@@ -169,36 +184,6 @@
   samples_seen_++;
 }
 
-/**
- * When resampling is enabled, we don't store all samples. Only the resampled
- * values are stored into samples_. In addition, the last real event is stored
- * into last_sample_, which is used to calculate the resampled values.
- */
-void PalmFilterStroke::Resample(const PalmFilterSample& sample) {
-  if (samples_seen_ == 0) {
-    AddSample(sample);
-    last_sample_ = sample;
-    return;
-  }
-
-  // We already have a valid last sample here.
-  DCHECK_LE(last_sample_.time, sample.time);
-  // Generate resampled values
-  base::TimeTicks next_sample_time = samples_.back().time + *resample_period_;
-  while (next_sample_time <= sample.time) {
-    AddSample(getSampleAtTime(next_sample_time, last_sample_, sample));
-    next_sample_time = samples_.back().time + (*resample_period_);
-  }
-  last_sample_ = sample;
-
-  // Prune the resampled collection
-  while ((samples_.back().time - samples_.front().time) >=
-         (*resample_period_) * max_sample_count_) {
-    AddToUnscaledCentroid(-samples_.front().point.OffsetFromOrigin());
-    samples_.pop_front();
-  }
-}
-
 void PalmFilterStroke::AddToUnscaledCentroid(const gfx::Vector2dF point) {
   const gfx::Vector2dF corrected_point = point - unscaled_centroid_sum_error_;
   const gfx::PointF new_unscaled_centroid =
@@ -223,6 +208,47 @@
   return tracking_id_;
 }
 
+base::TimeDelta PalmFilterStroke::Duration() const {
+  if (samples_.empty()) {
+    LOG(DFATAL) << "No samples available";
+    return base::Milliseconds(0);
+  }
+  return samples_.back().time - first_sample_time_;
+}
+
+base::TimeDelta PalmFilterStroke::PreviousDuration() const {
+  if (samples_.size() <= 1) {
+    LOG(DFATAL) << "Not enough samples";
+    return base::Milliseconds(0);
+  }
+  const PalmFilterSample& secondToLastSample = samples_.rbegin()[1];
+  return secondToLastSample.time - first_sample_time_;
+}
+
+bool PalmFilterStroke::LastSampleCrossed(base::TimeDelta duration) const {
+  if (samples_.size() <= 1) {
+    // If there's only 1 sample, stroke just started and Duration() is zero.
+    return false;
+  }
+  return PreviousDuration() < duration && duration <= Duration();
+}
+
+PalmFilterSample PalmFilterStroke::GetSampleAt(base::TimeTicks time) const {
+  size_t i = 0;
+  for (; i < samples_.size() && samples_[i].time < time; ++i) {
+  }
+
+  if (i < samples_.size() && !samples_.empty() && samples_[i].time == time) {
+    return samples_[i];
+  }
+  if (i == 0 || i == samples_.size()) {
+    LOG(DFATAL) << "Invalid index: " << i
+                << ", can't interpolate for time: " << time;
+    return {};
+  }
+  return GetSampleAtTime(time, samples_[i - 1], samples_[i]);
+}
+
 uint64_t PalmFilterStroke::samples_seen() const {
   return samples_seen_;
 }
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h
index 72c34f7..ac72463 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h
@@ -69,6 +69,25 @@
   float BiggestSize() const;
   // If no elements in stroke, returns 0.0;
   float MaxMajorRadius() const;
+  /**
+   * Return the time duration of this stroke.
+   */
+  base::TimeDelta Duration() const;
+  /**
+   * Provide a (potentially resampled) sample at the requested time.
+   * Only interpolation is allowed.
+   * The requested time must be within the window at which the gesture occurred.
+   */
+  PalmFilterSample GetSampleAt(base::TimeTicks time) const;
+
+  /**
+   * Return true if the provided duration is between the duration of the
+   * previous sample and the current sample. In other words, if the addition of
+   * the last sample caused the total stroke duration to exceed the provided
+   * duration. Return false otherwise.
+   */
+  bool LastSampleCrossed(base::TimeDelta duration) const;
+
   const std::deque<PalmFilterSample>& samples() const;
   uint64_t samples_seen() const;
   int tracking_id() const;
@@ -76,10 +95,8 @@
  private:
   void AddToUnscaledCentroid(const gfx::Vector2dF point);
   void AddSample(const PalmFilterSample& sample);
-  /**
-   * Process the sample. Potentially store the resampled sample into samples_.
-   */
-  void Resample(const PalmFilterSample& sample);
+
+  base::TimeDelta PreviousDuration() const;
 
   std::deque<PalmFilterSample> samples_;
   const int tracking_id_;
@@ -92,13 +109,9 @@
    * number of times 'AddSample' has been called.
    */
   uint64_t samples_seen_ = 0;
-  /**
-   * The last sample seen by the model. Used when resampling is enabled in order
-   * to compute the resampled value.
-   */
-  PalmFilterSample last_sample_;
 
   const uint64_t max_sample_count_;
+  base::TimeTicks first_sample_time_;
   const absl::optional<base::TimeDelta> resample_period_;
 
   gfx::PointF unscaled_centroid_ = gfx::PointF(0., 0.);
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util_unittest.cc b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util_unittest.cc
index 4d7a82e..6116736 100644
--- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util_unittest.cc
+++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util_unittest.cc
@@ -293,23 +293,24 @@
   ASSERT_THAT(stroke.samples(), ElementsAre(SampleTime(down_time)));
   ASSERT_EQ(1u, stroke.samples_seen());
 
-  // Add second sample at time = T + 2ms. It's not yet time for the new frame,
-  // so no new sample should be generated.
+  // Add second sample at time = T + 4ms. All samples are stored, even if it's
+  // before the next resample time.
   base::TimeTicks time = down_time + base::Milliseconds(4);
   sample = CreatePalmFilterSample(touch_, time, model_config_, device_info);
   stroke.ProcessSample(sample);
-  ASSERT_THAT(stroke.samples(), ElementsAre(SampleTime(down_time)));
-  ASSERT_EQ(1u, stroke.samples_seen());
+  ASSERT_THAT(stroke.samples(),
+              ElementsAre(SampleTime(down_time), SampleTime(time)));
+  ASSERT_EQ(2u, stroke.samples_seen());
 
-  // Add third sample at time = T + 10ms. An event at time = T + 8ms should be
-  // generated.
+  // Add third sample at time = T + 10ms.
   time = down_time + base::Milliseconds(10);
   sample = CreatePalmFilterSample(touch_, time, model_config_, device_info);
   stroke.ProcessSample(sample);
   ASSERT_THAT(stroke.samples(),
               ElementsAre(SampleTime(down_time),
-                          SampleTime(down_time + base::Milliseconds(8))));
-  ASSERT_EQ(2u, stroke.samples_seen());
+                          SampleTime(down_time + base::Milliseconds(4)),
+                          SampleTime(down_time + base::Milliseconds(10))));
+  ASSERT_EQ(3u, stroke.samples_seen());
 }
 
 TEST(PalmFilterStrokeTest, ResamplingTest) {
@@ -346,7 +347,7 @@
       CreatePalmFilterSample(touch_, time, model_config_, device_info);
   stroke.ProcessSample(sample2);
   // The samples should remain unchanged
-  ASSERT_THAT(stroke.samples(), ElementsAre(sample1));
+  ASSERT_THAT(stroke.samples(), ElementsAre(sample1, sample2));
 
   // Add third sample at time = T + 12ms. A resampled event at time = T + 8ms
   // should be generated.
@@ -358,16 +359,16 @@
   PalmFilterSample sample3 =
       CreatePalmFilterSample(touch_, time, model_config_, device_info);
   stroke.ProcessSample(sample3);
-  ASSERT_THAT(
-      stroke.samples(),
-      ElementsAre(sample1, SampleTime(down_time + base::Milliseconds(8))));
-
-  EXPECT_EQ(150, stroke.samples().back().point.x());
-  EXPECT_EQ(22, stroke.samples().back().point.y());
-  EXPECT_EQ(14, stroke.samples().back().major_radius);
-  EXPECT_EQ(13, stroke.samples().back().minor_radius);
+  ASSERT_THAT(stroke.samples(), ElementsAre(sample1, sample2, sample3));
 }
 
+/**
+ * There should always be at least (max_sample_count - 1) * resample_period
+ * worth of samples. However, that's not sufficient. In the cases where the gap
+ * between samples is very large (larger than the sample horizon), there needs
+ * to be another sample in order to calculate resampled values throughout the
+ * entire range.
+ */
 TEST(PalmFilterStrokeTest, MultipleResampledValues) {
   NeuralStylusPalmDetectionFilterModelConfig model_config_;
   model_config_.max_sample_count = 3;
@@ -391,8 +392,7 @@
   // First sample should go in as is
   ASSERT_THAT(stroke.samples(), ElementsAre(sample1));
 
-  // Add second sample at time = T + 20ms. Two resampled values should be
-  // generated: 1) at time = T+8ms 2) at time = T+16ms
+  // Add second sample at time = T + 20ms.
   base::TimeTicks time = down_time + base::Milliseconds(20);
   touch_.x = 20;
   touch_.y = 30;
@@ -401,22 +401,23 @@
   PalmFilterSample sample2 =
       CreatePalmFilterSample(touch_, time, model_config_, device_info);
   stroke.ProcessSample(sample2);
-  ASSERT_THAT(stroke.samples(),
-              ElementsAre(SampleTime(down_time),
-                          SampleTime(down_time + base::Milliseconds(8)),
-                          SampleTime(down_time + base::Milliseconds(16))));
 
-  // First sample : time = T + 8ms
-  EXPECT_EQ(8, stroke.samples()[1].point.x());
-  EXPECT_EQ(18, stroke.samples()[1].point.y());
-  EXPECT_EQ(220, stroke.samples()[1].major_radius);
-  EXPECT_EQ(120, stroke.samples()[1].minor_radius);
+  ASSERT_THAT(stroke.samples(), ElementsAre(sample1, sample2));
 
-  // Second sample : time = T + 16ms
-  EXPECT_EQ(16, stroke.samples().back().point.x());
-  EXPECT_EQ(26, stroke.samples().back().point.y());
-  EXPECT_EQ(220, stroke.samples().back().major_radius);
-  EXPECT_EQ(120, stroke.samples().back().minor_radius);
+  // Verify resampled sample : time = T + 8ms
+  PalmFilterSample resampled_sample =
+      stroke.GetSampleAt(down_time + base::Milliseconds(8));
+  EXPECT_EQ(8, resampled_sample.point.x());
+  EXPECT_EQ(18, resampled_sample.point.y());
+  EXPECT_EQ(220, resampled_sample.major_radius);
+  EXPECT_EQ(120, resampled_sample.minor_radius);
+
+  // Verify resampled sample : time = T + 16ms
+  resampled_sample = stroke.GetSampleAt(down_time + base::Milliseconds(16));
+  EXPECT_EQ(16, resampled_sample.point.x());
+  EXPECT_EQ(26, resampled_sample.point.y());
+  EXPECT_EQ(220, resampled_sample.major_radius);
+  EXPECT_EQ(120, resampled_sample.minor_radius);
 }
 
 }  // namespace ui
diff --git a/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.html b/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.html
index 28633e9..603735bc 100644
--- a/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.html
+++ b/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.html
@@ -32,13 +32,13 @@
 <cr-dialog id="dialog"
   consume-keydown-event show-close-button>
   <div slot="title">
-    Restriction details
+    $i18n{DLP_RESTRICTION_DETAILS_TITLE}
   </div>
   <div slot="body">
-    <div id="message" cr-dialog-text></div>
+    <div id="message" cr-dialog-text>$i18n{DLP_RESTRICTION_DETAILS_MESSAGE}</div>
     <div id="details-container">
       <span id="block-details" hidden=true>
-        <label>Administrator policy prevents:</label>
+        <label>$i18n{DLP_RESTRICTION_DETAILS_BLOCK}</label>
         <ul id="block-list">
           <li id="block-li-urls" hidden=true>
             <label id="block-urls"></label>
@@ -49,7 +49,7 @@
         </ul>
       </span>
       <span id="warn-details" hidden=true>
-        <label>Administrator policy doesn't recommend:</label>
+        <label>$i18n{DLP_RESTRICTION_DETAILS_WARN}</label>
         <ul id="warn-list">
           <li id="warn-li-urls" hidden=true>
             <label id="warn-urls"></label>
@@ -60,7 +60,7 @@
         </ul>
       </span>
       <span id="report-details" hidden=true>
-        <label>Administrator monitors:</label>
+        <label>$i18n{DLP_RESTRICTION_DETAILS_REPORT}</label>
           <ul id="report-list">
             <li id="report-li-urls" hidden=true>
               <label id="report-urls"></label>
diff --git a/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.ts b/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.ts
index c54d04828..c3531ad 100644
--- a/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.ts
+++ b/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog.ts
@@ -4,16 +4,15 @@
 
 import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
 
+import {str, strf} from '../common/js/util.js';
+
 import {getTemplate} from './xf_dlp_restriction_details_dialog.html.js';
 
 /**
  * Dialog to show Data Leak Prevention (DLP) restriction details about a file.
  */
 export class XfDlpRestrictionDetailsDialog extends HTMLElement {
-  // TODO(crbug.com/1351739): Add translation strings instead of hardcoded
-  // values.
   private dialog: CrDialogElement;
-  private messageContainer: HTMLDivElement;
   private details: chrome.fileManagerPrivate.DlpRestrictionDetails[] = [];
 
   constructor() {
@@ -26,8 +25,6 @@
     this.attachShadow({mode: 'open'}).appendChild(fragment);
 
     this.dialog = this.shadowRoot!.querySelector('#dialog')! as CrDialogElement;
-    this.messageContainer =
-        this.shadowRoot?.querySelector('#message')! as HTMLDivElement;
   }
 
   /**
@@ -43,11 +40,6 @@
       return;
     }
     this.details = details;
-    // Add the general text.
-    const message = 'This file is confidential and subject to restrictions ' +
-        'by administrator policy. The following file access and ' +
-        'transfer actions are enforced.';
-    this.messageContainer.innerHTML = message;
     // Add a section for each restriction level.
     this.showDetailsForLevel(chrome.fileManagerPrivate.DlpLevel.BLOCK);
     this.showDetailsForLevel(chrome.fileManagerPrivate.DlpLevel.WARN);
@@ -122,13 +114,15 @@
         }
       }
       if (excludedUrls.length === 0) {
-        urlsLabel.textContent = 'File access by all urls';
+        urlsLabel.textContent = str('DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL');
       } else {
-        urlsLabel.textContent =
-            'File access by all urls except ' + excludedUrls.join(', ');
+        urlsLabel.textContent = strf(
+            'DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT',
+            excludedUrls.join(', '));
       }
     } else {
-      urlsLabel.textContent = 'File access by ' + urls.join(', ');
+      urlsLabel.textContent =
+          strf('DLP_RESTRICTION_DETAILS_FILE_ACCESS', urls.join(', '));
     }
   }
 
@@ -186,7 +180,28 @@
     const componentsLabel: HTMLLabelElement =
         this.shadowRoot?.querySelector(`#${level}-components`)! as
         HTMLLabelElement;
-    componentsLabel.textContent = 'File transfer to ' + components.join(', ');
+    componentsLabel.textContent = strf(
+        'DLP_RESTRICTION_DETAILS_FILE_TRANSFER',
+        components.map((component) => this.componentToI18n(component))
+            .join(', '));
+  }
+
+  private componentToI18n(component: chrome.fileManagerPrivate.VolumeType) {
+    switch (component) {
+      case chrome.fileManagerPrivate.VolumeType.DRIVE:
+        return str('DRIVE_DIRECTORY_LABEL');
+      case chrome.fileManagerPrivate.VolumeType.REMOVABLE:
+        return str('DLP_COMPONENT_REMOVABLE');
+      case chrome.fileManagerPrivate.VolumeType.CROSTINI:
+        return str('DLP_COMPONENT_LINUX');
+      case chrome.fileManagerPrivate.VolumeType.ANDROID_FILES:
+        return str('DLP_COMPONENT_PLAY');
+      case chrome.fileManagerPrivate.VolumeType.GUEST_OS:
+        return str('DLP_COMPONENT_VM');
+      default:
+        console.warn(`Got unexpected VolumeType value ${component}.`);
+        return '';
+    }
   }
 }
 
diff --git a/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog_unittest.ts b/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog_unittest.ts
index c423c1c4..0e2ba43 100644
--- a/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog_unittest.ts
+++ b/ui/file_manager/file_manager/widgets/xf_dlp_restriction_details_dialog_unittest.ts
@@ -5,6 +5,7 @@
 import './xf_dlp_restriction_details_dialog.js';
 
 import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {assertEquals, assertFalse, assertNotEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
 
 import {installMockChrome} from '../common/js/mock_chrome.js';
@@ -18,10 +19,37 @@
   document.body.innerHTML = '<xf-dlp-restriction-details-dialog>' +
       '</xf-dlp-restriction-details-dialog>';
 
+  // Mock LoadTimeData strings.
+  loadTimeData.resetForTesting({
+    'DLP_RESTRICTION_DETAILS_TITLE': 'Administrator policy',
+    'DLP_RESTRICTION_DETAILS_MESSAGE': 'This file is confidential and subject' +
+        'to administrator policy.',
+    'DLP_RESTRICTION_DETAILS_BLOCK': 'Administrator policy prevents:',
+    'DLP_RESTRICTION_DETAILS_WARN': 'Administrator policy doesn\'t recommend:',
+    'DLP_RESTRICTION_DETAILS_REPORT': 'Administrator monitors:',
+    'DLP_RESTRICTION_DETAILS_FILE_ACCESS': 'File access by $1',
+    'DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL': 'File access by all urls',
+    'DLP_RESTRICTION_DETAILS_FILE_ACCESS_ALL_EXCEPT':
+        'File access by all urls except $1',
+    'DLP_RESTRICTION_DETAILS_FILE_TRANSFER': 'File transfer to $1',
+    'DRIVE_DIRECTORY_LABEL': 'Google Drive',
+    'DLP_COMPONENT_REMOVABLE': 'removable storage',
+    'DLP_COMPONENT_LINUX': 'Linux',
+    'DLP_COMPONENT_PLAY': 'Play',
+    'DLP_COMPONENT_VM': 'virtual machine',
+  });
+
   const mockChrome = {
     fileManagerPrivate: {
       DlpLevel:
           {BLOCK: 'block', WARN: 'warn', REPORT: 'report', ALLOW: 'allow'},
+      VolumeType: {
+        DRIVE: 'drive',
+        REMOVABLE: 'removable',
+        CROSTINI: 'crostini',
+        ANDROID_FILES: 'android_files',
+        GUEST_OS: 'guest_os',
+      },
     },
     runtime: {},
   };
@@ -181,7 +209,8 @@
   dialog.showDlpRestrictionDetailsDialog(details);
   assertFalse(blockDetails.hasAttribute('hidden'));
   assertEquals(getBlockUrls().textContent, 'File access by all urls');
-  assertEquals(getBlockComponents().textContent, 'File transfer to drive');
+  assertEquals(
+      getBlockComponents().textContent, 'File transfer to Google Drive');
 
   // Other restriction levels should still be hidden.
   assertTrue(getWarnDetails().hasAttribute('hidden'));
@@ -246,7 +275,8 @@
   assertTrue(
       blockDetails.querySelector('#block-li-urls')!.hasAttribute('hidden'));
   assertEquals(
-      getBlockComponents().textContent, 'File transfer to drive, removable');
+      getBlockComponents().textContent,
+      'File transfer to Google Drive, removable storage');
 
   // Other restriction levels should still be hidden.
   assertTrue(getWarnDetails().hasAttribute('hidden'));
@@ -276,7 +306,8 @@
   assertFalse(blockDetails.hasAttribute('hidden'));
   assertEquals(
       getBlockUrls().textContent, 'File access by https://external.com');
-  assertEquals(getBlockComponents().textContent, 'File transfer to drive');
+  assertEquals(
+      getBlockComponents().textContent, 'File transfer to Google Drive');
 
   // Other restriction levels should still be hidden.
   assertTrue(warnDetails.hasAttribute('hidden'));
@@ -300,7 +331,8 @@
   assertFalse(warnDetails.hasAttribute('hidden'));
   assertEquals(getWarnUrls().textContent, 'File access by https://example.com');
   assertEquals(
-      getWarnComponents().textContent, 'File transfer to drive, removable');
+      getWarnComponents().textContent,
+      'File transfer to Google Drive, removable storage');
   assertFalse(reportDetails.hasAttribute('hidden'));
   assertEquals(
       getReportUrls().textContent, 'File access by https://external.com');
@@ -325,7 +357,8 @@
   assertTrue(
       reportDetails.querySelector('#report-li-urls')!.hasAttribute('hidden'));
   assertEquals(
-      getReportComponents().textContent, 'File transfer to drive, removable');
+      getReportComponents().textContent,
+      'File transfer to Google Drive, removable storage');
 
   // Block and warn sections should now be hidden.
   assertTrue(blockDetails.hasAttribute('hidden'));
diff --git a/ui/gfx/display_color_spaces.cc b/ui/gfx/display_color_spaces.cc
index 9415f0b..10df605 100644
--- a/ui/gfx/display_color_spaces.cc
+++ b/ui/gfx/display_color_spaces.cc
@@ -58,13 +58,14 @@
     : DisplayColorSpaces() {
   if (!c.IsValid())
     return;
+  primaries_ = c.GetPrimaries();
   for (size_t i = 0; i < kConfigCount; i++)  // NOLINT (modernize-loop-convert)
     color_spaces_[i] = c;
 }
 
-DisplayColorSpaces::DisplayColorSpaces(const ColorSpace& c, BufferFormat f) {
+DisplayColorSpaces::DisplayColorSpaces(const ColorSpace& c, BufferFormat f)
+    : DisplayColorSpaces(c) {
   for (size_t i = 0; i < kConfigCount; i++) {
-    color_spaces_[i] = c.IsValid() ? c : gfx::ColorSpace::CreateSRGB();
     buffer_formats_[i] = f;
   }
 }
@@ -120,16 +121,6 @@
          GetOutputColorSpace(ContentColorUsage::kHDR, true).IsHDR();
 }
 
-SkColorSpacePrimaries DisplayColorSpaces::GetPrimaries() const {
-  // TODO(https://crbug.com/1274220): Use `primaries_`, once it is set on all
-  // platforms.
-  return GetRasterColorSpace().GetPrimaries();
-}
-
-void DisplayColorSpaces::SetPrimaries(const SkColorSpacePrimaries& primaries) {
-  // TODO(https://crbug.com/1274220): Store `primaries` in `primaries_`.
-}
-
 ColorSpace DisplayColorSpaces::GetScreenInfoColorSpace() const {
   return GetOutputColorSpace(ContentColorUsage::kHDR, false /* needs_alpha */);
 }
diff --git a/ui/gfx/display_color_spaces.h b/ui/gfx/display_color_spaces.h
index 8ddab0d4..b051533 100644
--- a/ui/gfx/display_color_spaces.h
+++ b/ui/gfx/display_color_spaces.h
@@ -115,8 +115,10 @@
   bool SupportsHDR() const;
 
   // Return the primaries that define the color gamut of the display.
-  SkColorSpacePrimaries GetPrimaries() const;
-  void SetPrimaries(const SkColorSpacePrimaries& primaries);
+  const SkColorSpacePrimaries& GetPrimaries() const { return primaries_; }
+  void SetPrimaries(const SkColorSpacePrimaries& primaries) {
+    primaries_ = primaries;
+  }
 
   // Output as a vector of strings. This is a helper function for printing in
   // about:gpu. All output vectors will be the same length. Each entry will be
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
index 1a5fcb2..685d02c 100644
--- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
+++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
@@ -259,9 +259,9 @@
   }
 
   auto* root_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   auto* mock_primary_surface = server_.GetObject<wl::MockSurface>(
-      window_->primary_subsurface()->wayland_surface()->GetSurfaceId());
+      window_->primary_subsurface()->wayland_surface()->get_surface_id());
 
   CallbacksHelper cbs_helper;
   // Submit a frame with an overlay and background.
@@ -353,7 +353,7 @@
   auto* mock_overlay_surface = server_.GetObject<wl::MockSurface>(
       (*window_->wayland_subsurfaces().begin())
           ->wayland_surface()
-          ->GetSurfaceId());
+          ->get_surface_id());
 
   // Submit another frame with only an overlay.
   {
@@ -549,9 +549,9 @@
   }
 
   auto* root_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   auto* mock_primary_surface = server_.GetObject<wl::MockSurface>(
-      window_->primary_subsurface()->wayland_surface()->GetSurfaceId());
+      window_->primary_subsurface()->wayland_surface()->get_surface_id());
 
   CallbacksHelper cbs_helper;
   // Submit a frame with 1 primary plane, 1 underlay, and 1 background.
@@ -632,7 +632,7 @@
   testing::Mock::VerifyAndClearExpectations(&mock_primary_surface);
   auto* subsurface = window_->wayland_subsurfaces().begin()->get();
   auto* mock_overlay_surface = server_.GetObject<wl::MockSurface>(
-      subsurface->wayland_surface()->GetSurfaceId());
+      subsurface->wayland_surface()->get_surface_id());
 
   // Give mojo the chance to pass the callbacks.
   base::RunLoop().RunUntilIdle();
@@ -940,9 +940,9 @@
       native_pixmap, test_buffer_size));
 
   auto* root_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   auto* mock_primary_surface = server_.GetObject<wl::MockSurface>(
-      window_->primary_subsurface()->wayland_surface()->GetSurfaceId());
+      window_->primary_subsurface()->wayland_surface()->get_surface_id());
 
   CallbacksHelper cbs_helper;
   // Submit a frame with an overlay and background.
diff --git a/ui/ozone/platform/wayland/host/wayland_data_drag_controller_unittest.cc b/ui/ozone/platform/wayland/host/wayland_data_drag_controller_unittest.cc
index 6552ffb..dec796484 100644
--- a/ui/ozone/platform/wayland/host/wayland_data_drag_controller_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_data_drag_controller_unittest.cc
@@ -894,7 +894,8 @@
 
   Sync();
   ASSERT_TRUE(popup_window.get());
-  auto* surface = GetMockSurface(popup_window->root_surface()->GetSurfaceId());
+  auto* surface =
+      GetMockSurface(popup_window->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   EXPECT_NE(nullptr, surface->xdg_surface()->xdg_popup());
 }
@@ -914,7 +915,7 @@
     self->Sync();
 
     auto* surface =
-        self->GetMockSurface(menu_window->root_surface()->GetSurfaceId());
+        self->GetMockSurface(menu_window->root_surface()->get_surface_id());
     ASSERT_TRUE(surface);
     EXPECT_EQ(nullptr, surface->sub_surface());
   };
diff --git a/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc b/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc
index 186302d..83bd058 100644
--- a/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc
@@ -84,7 +84,7 @@
   uint32_t tstamp = 0;
   wl_resource* surface_res =
       server_
-          .GetObject<wl::MockSurface>(window1->root_surface()->GetSurfaceId())
+          .GetObject<wl::MockSurface>(window1->root_surface()->get_surface_id())
           ->resource();
   wl_resource* pointer_res = server_.seat()->pointer()->resource();
 
@@ -137,7 +137,7 @@
   uint32_t tstamp = 0;
   wl_resource* surface_res =
       server_
-          .GetObject<wl::MockSurface>(window1->root_surface()->GetSurfaceId())
+          .GetObject<wl::MockSurface>(window1->root_surface()->get_surface_id())
           ->resource();
   wl_resource* touch_res = server_.seat()->touch()->resource();
 
diff --git a/ui/ozone/platform/wayland/host/wayland_event_watcher_unittest.cc b/ui/ozone/platform/wayland/host/wayland_event_watcher_unittest.cc
index 1fc78c3..f714abab 100644
--- a/ui/ozone/platform/wayland/host/wayland_event_watcher_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_event_watcher_unittest.cc
@@ -34,7 +34,7 @@
 TEST_P(WaylandEventWatcherTest, CrashKeyResourceError) {
   const std::string kTestErrorString = "This is a nice error.";
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   auto* xdg_surface = mock_surface->xdg_surface();
 
   // Prepare the expectation error string.
@@ -56,7 +56,7 @@
 
 TEST_P(WaylandEventWatcherTest, CrashKeyResourceNoMemory) {
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   auto* xdg_surface = mock_surface->xdg_surface();
 
   // Prepare the expectation error string.
diff --git a/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc b/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc
index 54b090f..b92a35e 100644
--- a/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc
@@ -160,7 +160,7 @@
   Sync();
 
   wl::MockSurface* other_surface = server_.GetObject<wl::MockSurface>(
-      other_window->root_surface()->GetSurfaceId());
+      other_window->root_surface()->get_surface_id());
   ASSERT_TRUE(other_surface);
 
   wl_pointer_send_enter(pointer_->resource(), 1, surface_->resource(), 0, 0);
diff --git a/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc b/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc
index 8f506e4..62944faa 100644
--- a/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc
@@ -187,7 +187,7 @@
   EXPECT_EQ(3u, platform_screen_->GetAllDisplays().size());
 
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
 
   wl_surface_send_enter(surface->resource(), output1->resource());
@@ -384,7 +384,7 @@
 TEST_P(WaylandScreenTest, GetAcceleratedWidgetAtScreenPoint) {
   // Now, send enter event for the surface, which was created before.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   wl_surface_send_enter(surface->resource(), output_->resource());
 
@@ -608,7 +608,7 @@
 
   // Now, send enter event for the surface, which was created before.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   wl_surface_send_enter(surface->resource(), output_->resource());
 
@@ -657,7 +657,7 @@
                                         gfx::kNullAcceleratedWidget, &delegate);
 
   auto* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
 
   // Announce pointer capability so that WaylandPointer is created on the client
@@ -685,7 +685,7 @@
   EXPECT_EQ(gfx::Point(10, 20), platform_screen_->GetCursorScreenPoint());
 
   auto* second_surface = server_.GetObject<wl::MockSurface>(
-      second_window->root_surface()->GetSurfaceId());
+      second_window->root_surface()->get_surface_id());
   ASSERT_TRUE(second_surface);
   // Now, leave the first surface and enter second one.
   wl_pointer_send_leave(pointer->resource(), ++serial, surface->resource());
@@ -731,7 +731,7 @@
   Sync();
 
   auto* menu_surface = server_.GetObject<wl::MockSurface>(
-      menu_window->root_surface()->GetSurfaceId());
+      menu_window->root_surface()->get_surface_id());
   ASSERT_TRUE(menu_surface);
 
   wl_pointer_send_enter(pointer->resource(), ++serial, menu_surface->resource(),
@@ -784,7 +784,7 @@
   Sync();
 
   auto* nested_menu_surface = server_.GetObject<wl::MockSurface>(
-      nested_menu_window->root_surface()->GetSurfaceId());
+      nested_menu_window->root_surface()->get_surface_id());
   ASSERT_TRUE(nested_menu_surface);
 
   wl_pointer_send_enter(pointer->resource(), ++serial,
diff --git a/ui/ozone/platform/wayland/host/wayland_subsurface.cc b/ui/ozone/platform/wayland/host/wayland_subsurface.cc
index c195544..f298523 100644
--- a/ui/ozone/platform/wayland/host/wayland_subsurface.cc
+++ b/ui/ozone/platform/wayland/host/wayland_subsurface.cc
@@ -52,7 +52,7 @@
 WaylandSubsurface::~WaylandSubsurface() = default;
 
 gfx::AcceleratedWidget WaylandSubsurface::GetWidget() const {
-  return wayland_surface_.GetWidget();
+  return wayland_surface_.get_widget();
 }
 
 void WaylandSubsurface::Show() {
diff --git a/ui/ozone/platform/wayland/host/wayland_surface.cc b/ui/ozone/platform/wayland/host/wayland_surface.cc
index 82f7666..9b93222 100644
--- a/ui/ozone/platform/wayland/host/wayland_surface.cc
+++ b/ui/ozone/platform/wayland/host/wayland_surface.cc
@@ -100,13 +100,7 @@
   next_explicit_release_request_ = std::move(callback);
 }
 
-uint32_t WaylandSurface::GetSurfaceId() const {
-  if (!surface_)
-    return 0u;
-  return surface_.id();
-}
-
-gfx::AcceleratedWidget WaylandSurface::GetWidget() const {
+gfx::AcceleratedWidget WaylandSurface::get_widget() const {
   return root_window_ ? root_window_->GetWidget() : gfx::kNullAcceleratedWidget;
 }
 
@@ -310,7 +304,7 @@
   return region;
 }
 
-zwp_linux_surface_synchronization_v1* WaylandSurface::GetSurfaceSync() {
+zwp_linux_surface_synchronization_v1* WaylandSurface::GetOrCreateSurfaceSync() {
   // The server needs to support the linux_explicit_synchronization protocol.
   if (!connection_->linux_explicit_synchronization_v1()) {
     NOTIMPLEMENTED_LOG_ONCE();
@@ -325,10 +319,6 @@
   return surface_sync_.get();
 }
 
-augmented_surface* WaylandSurface::GetAugmentedSurface() {
-  return augmented_surface_.get();
-}
-
 wl::Object<wl_subsurface> WaylandSurface::CreateSubsurface(
     WaylandSurface* parent) {
   DCHECK(parent);
@@ -347,14 +337,15 @@
     // need to be updated.
     wl_surface_attach(surface_.get(), pending_state_.buffer, 0, 0);
 
-    // Do not call GetSurfaceSync() if the buffer management doesn't happen with
-    // WaylandBufferManagerHost. That is, if Wayland EGL implementation is used,
-    // buffers are attached/swapped via eglSwapBuffers, which may internally
-    // (depends on the implementation) also create a surface sync. Creating a
-    // surface sync in this case is not necessary. Moreover, a Wayland protocol
-    // error will be raised as only one surface sync can exist.
+    // Do not call GetOrCreateSurfaceSync() if the buffer management doesn't
+    // happen with WaylandBufferManagerHost. That is, if Wayland EGL
+    // implementation is used, buffers are attached/swapped via eglSwapBuffers,
+    // which may internally (depends on the implementation) also create a
+    // surface sync. Creating a surface sync in this case is not necessary.
+    // Moreover, a Wayland protocol error will be raised as only one surface
+    // sync can exist.
     if (pending_state_.buffer) {
-      auto* surface_sync = GetSurfaceSync();
+      auto* surface_sync = GetOrCreateSurfaceSync();
       if (surface_sync) {
         if (!pending_state_.acquire_fence.is_null()) {
           zwp_linux_surface_synchronization_v1_set_acquire_fence(
@@ -440,8 +431,8 @@
   }
 
   if (pending_state_.background_color != state_.background_color) {
-    DCHECK(GetAugmentedSurface());
-    if (augmented_surface_get_version(GetAugmentedSurface()) >=
+    DCHECK(get_augmented_surface());
+    if (augmented_surface_get_version(get_augmented_surface()) >=
         static_cast<uint32_t>(
             AUGMENTED_SURFACE_SET_BACKGROUND_COLOR_SINCE_VERSION)) {
       wl_array color_data;
@@ -450,7 +441,7 @@
         wl::SkColorToWlArray(pending_state_.background_color.value(),
                              color_data);
 
-      augmented_surface_set_background_color(GetAugmentedSurface(),
+      augmented_surface_set_background_color(get_augmented_surface(),
                                              &color_data);
 
       wl_array_release(&color_data);
@@ -458,8 +449,8 @@
   }
 
   if (pending_state_.rounded_clip_bounds != state_.rounded_clip_bounds) {
-    DCHECK(GetAugmentedSurface());
-    if (augmented_surface_get_version(GetAugmentedSurface()) >=
+    DCHECK(get_augmented_surface());
+    if (augmented_surface_get_version(get_augmented_surface()) >=
         AUGMENTED_SURFACE_SET_ROUNDED_CLIP_BOUNDS_SINCE_VERSION) {
       gfx::RRectF rounded_clip_bounds = pending_state_.rounded_clip_bounds;
       gfx::Transform scale_transform;
@@ -468,7 +459,7 @@
       scale_transform.TransformRRectF(&rounded_clip_bounds);
 
       augmented_surface_set_rounded_clip_bounds(
-          GetAugmentedSurface(), rounded_clip_bounds.rect().x(),
+          get_augmented_surface(), rounded_clip_bounds.rect().x(),
           rounded_clip_bounds.rect().y(), rounded_clip_bounds.rect().width(),
           rounded_clip_bounds.rect().height(),
           wl_fixed_from_double(
@@ -584,7 +575,7 @@
   // Apply viewport scale (wp_viewport.set_destination).
   if (!std::equal(std::begin(dst_to_set), std::end(dst_to_set),
                   std::begin(dst_set_))) {
-    auto* augmented_surface = GetAugmentedSurface();
+    auto* augmented_surface = get_augmented_surface();
     if (dst_to_set[0] > 0.f && augmented_surface &&
         connection_->surface_augmenter()->SupportsSubpixelAccuratePosition()) {
       // Subpixel accurate positioning is available since the surface augmenter
@@ -592,7 +583,7 @@
       // setting destination with wl_fixed. Verify that with dchecks.
       DCHECK_EQ(AUGMENTED_SURFACE_SET_DESTINATION_SIZE_SINCE_VERSION,
                 SURFACE_AUGMENTER_GET_AUGMENTED_SUBSURFACE_SINCE_VERSION);
-      DCHECK(augmented_surface_get_version(GetAugmentedSurface()) >=
+      DCHECK(augmented_surface_get_version(get_augmented_surface()) >=
              AUGMENTED_SURFACE_SET_DESTINATION_SIZE_SINCE_VERSION);
       augmented_surface_set_destination_size(
           augmented_surface, wl_fixed_from_double(viewport_dst_dip.width()),
diff --git a/ui/ozone/platform/wayland/host/wayland_surface.h b/ui/ozone/platform/wayland/host/wayland_surface.h
index 443f28b2..12149b8d 100644
--- a/ui/ozone/platform/wayland/host/wayland_surface.h
+++ b/ui/ozone/platform/wayland/host/wayland_surface.h
@@ -67,10 +67,11 @@
   void RequestExplicitRelease(ExplicitReleaseCallback callback);
 
   // Returns an id that identifies the |wl_surface_|.
-  uint32_t GetSurfaceId() const;
+  uint32_t get_surface_id() const { return surface_ ? surface_.id() : 0u; }
+
   // Returns a gfx::AcceleratedWidget that identifies the WaylandWindow that
   // this WaylandSurface belongs to.
-  gfx::AcceleratedWidget GetWidget() const;
+  gfx::AcceleratedWidget get_widget() const;
 
   // Initializes the WaylandSurface and returns true iff success.
   // This may return false if a wl_surface could not be created, for example.
@@ -168,7 +169,7 @@
 
   // Sets the rounded clip bounds for this surface.
   void set_rounded_clip_bounds(const gfx::RRectF& rounded_clip_bounds) {
-    if (GetAugmentedSurface())
+    if (get_augmented_surface())
       pending_state_.rounded_clip_bounds = rounded_clip_bounds;
   }
 
@@ -176,7 +177,7 @@
   // wl_buffer contents during the compositing step on the Wayland compositor
   // side.
   void set_background_color(absl::optional<SkColor4f> background_color) {
-    if (GetAugmentedSurface())
+    if (get_augmented_surface())
       pending_state_.background_color = background_color;
   }
 
@@ -317,8 +318,10 @@
 
   // Creates (if not created) the synchronization surface and returns a pointer
   // to it.
-  zwp_linux_surface_synchronization_v1* GetSurfaceSync();
-  augmented_surface* GetAugmentedSurface();
+  zwp_linux_surface_synchronization_v1* GetOrCreateSurfaceSync();
+  augmented_surface* get_augmented_surface() {
+    return augmented_surface_.get();
+  }
 
   const raw_ptr<WaylandConnection> connection_;
   raw_ptr<WaylandWindow> root_window_ = nullptr;
diff --git a/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc
index d514eee2..c1a368d6 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc
@@ -1142,7 +1142,7 @@
 
       // Send the window to |output|.
       wl::MockSurface* surface = server->GetObject<wl::MockSurface>(
-          window->root_surface()->GetSurfaceId());
+          window->root_surface()->get_surface_id());
       ASSERT_TRUE(surface);
       wl_surface_send_enter(surface->resource(), output->resource());
       self->Sync();
diff --git a/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc b/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc
index f1106aa..26a4cb7 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc
@@ -106,7 +106,7 @@
   ASSERT_TRUE(pointer);
 
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window1->root_surface()->GetSurfaceId());
+      window1->root_surface()->get_surface_id());
   wl_pointer_send_enter(pointer->resource(), 1, surface->resource(), 0, 0);
   wl_pointer_send_frame(pointer->resource());
 
@@ -149,7 +149,7 @@
   ASSERT_TRUE(keyboard);
 
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window1->root_surface()->GetSurfaceId());
+      window1->root_surface()->get_surface_id());
 
   struct wl_array empty;
   wl_array_init(&empty);
diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
index 44769544..9fd6716 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
@@ -325,7 +325,7 @@
 
   wl::TestXdgPopup* GetTestXdgPopupByWindow(WaylandWindow* window) {
     wl::MockSurface* mock_surface = server_.GetObject<wl::MockSurface>(
-        window->root_surface()->GetSurfaceId());
+        window->root_surface()->get_surface_id());
     if (mock_surface) {
       auto* mock_xdg_surface = mock_surface->xdg_surface();
       if (mock_xdg_surface)
@@ -351,7 +351,7 @@
 
   window_->set_update_visual_size_immediately_for_testing(false);
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // Configure event makes Wayland update bounds, but does not change toplevel
   // input region, opaque region or window geometry immediately. Such actions
@@ -381,7 +381,7 @@
   window_->set_apply_pending_state_on_update_visual_size_for_testing(false);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // Set*() calls do not send wl_surface requests.
   EXPECT_CALL(*mock_surface, SetOpaqueRegion(_)).Times(0);
@@ -428,7 +428,7 @@
 
   // Send the window to |output1|.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   wl_surface_send_enter(surface->resource(), output->resource());
 
@@ -593,7 +593,7 @@
 
   window_->set_update_visual_size_immediately_for_testing(false);
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // UpdateVisualSize with different size from configure events does not
   // acknowledge toplevel configure.
@@ -832,7 +832,7 @@
   // The state must not be changed to the fullscreen before the surface is
   // activated.
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   EXPECT_FALSE(mock_surface->xdg_surface());
   EXPECT_CALL(delegate, OnWindowStateChanged(_, _)).Times(0);
   window->ToggleFullscreen();
@@ -876,7 +876,7 @@
 
   // The state gets changed to maximize and the delegate notified.
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   EXPECT_FALSE(mock_surface->xdg_surface());
   EXPECT_CALL(delegate_, OnWindowStateChanged(_, _)).Times(1);
 
@@ -1232,7 +1232,7 @@
 
 TEST_P(WaylandWindowTest, UpdateWindowRegion) {
   wl::MockSurface* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // Change bounds.
   const gfx::Rect initial_bounds = window_->GetBoundsInDIP();
@@ -1817,7 +1817,7 @@
 
   // Test that CanDispatchEvent is set correctly.
   wl::MockSurface* toplevel_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   wl_pointer_send_enter(server_.seat()->pointer()->resource(), ++serial,
                         toplevel_surface->resource(), 0, 0);
 
@@ -1862,7 +1862,7 @@
                              {menu_window.get(), nested_menu_window.get()});
 
   wl::MockSurface* menu_window_surface = server_.GetObject<wl::MockSurface>(
-      menu_window->root_surface()->GetSurfaceId());
+      menu_window->root_surface()->get_surface_id());
 
   wl_pointer_send_leave(server_.seat()->pointer()->resource(), ++serial,
                         toplevel_surface->resource());
@@ -1887,7 +1887,7 @@
 
   wl::MockSurface* nested_menu_window_surface =
       server_.GetObject<wl::MockSurface>(
-          nested_menu_window->root_surface()->GetSurfaceId());
+          nested_menu_window->root_surface()->get_surface_id());
 
   wl_pointer_send_leave(server_.seat()->pointer()->resource(), ++serial,
                         menu_window_surface->resource());
@@ -1971,7 +1971,7 @@
 
   // Send the window to |output1|.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   wl_surface_send_enter(surface->resource(), output1->resource());
   Sync();
@@ -2012,7 +2012,7 @@
   for (const auto& type : window_types) {
     // Send the window to |output1|.
     wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-        window_->root_surface()->GetSurfaceId());
+        window_->root_surface()->get_surface_id());
     ASSERT_TRUE(surface);
     wl_surface_send_enter(surface->resource(), output1->resource());
     Sync();
@@ -2076,7 +2076,7 @@
   Sync();
 
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
 
   struct {
@@ -2154,7 +2154,7 @@
 
   // Send the window to |output1|.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
 
   wl_surface_send_enter(surface->resource(), secondary_output->resource());
@@ -2200,7 +2200,7 @@
 
   // Send the window to |output1|.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   wl_surface_send_enter(surface->resource(), output1->resource());
   wl_surface_send_enter(surface->resource(), output2->resource());
@@ -2324,7 +2324,7 @@
 
   // Enter |output1|.
   wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   ASSERT_TRUE(surface);
   wl_surface_send_enter(surface->resource(), output1->resource());
   Sync();
@@ -2343,7 +2343,7 @@
   // Pretend Wayland sends that menu entered output2, while the toplevel is on
   // output1.  Output1 must still be preferred by the menu.
   wl::MockSurface* menu_surface = server_.GetObject<wl::MockSurface>(
-      menu_window->root_surface()->GetSurfaceId());
+      menu_window->root_surface()->get_surface_id());
   wl_surface_send_enter(menu_surface->resource(), output1->resource());
   Sync();
 
@@ -2544,7 +2544,7 @@
 
 TEST_P(WaylandWindowTest, SetOpaqueRegion) {
   wl::MockSurface* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   gfx::Rect new_bounds(500, 600);
   auto state_array = MakeStateArray({XDG_TOPLEVEL_STATE_ACTIVATED});
@@ -2600,7 +2600,7 @@
   Sync();
 
   auto* mock_surface_popup = server_.GetObject<wl::MockSurface>(
-      wayland_popup->root_surface()->GetSurfaceId());
+      wayland_popup->root_surface()->get_surface_id());
   auto* mock_xdg_popup = mock_surface_popup->xdg_surface()->xdg_popup();
 
   EXPECT_EQ(mock_xdg_popup->anchor_rect().origin(),
@@ -2640,7 +2640,7 @@
     Sync();
 
     auto* mock_surface_nested = server_.GetObject<wl::MockSurface>(
-        nested_wayland_popup->root_surface()->GetSurfaceId());
+        nested_wayland_popup->root_surface()->get_surface_id());
     auto* mock_xdg_popup_nested =
         mock_surface_nested->xdg_surface()->xdg_popup();
 
@@ -2772,7 +2772,7 @@
   Sync();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   EXPECT_TRUE(mock_surface->xdg_surface());
   EXPECT_TRUE(mock_surface->xdg_surface()->xdg_toplevel());
 
@@ -2804,7 +2804,7 @@
   Sync();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   EXPECT_TRUE(mock_surface->xdg_surface());
   EXPECT_TRUE(mock_surface->xdg_surface()->xdg_popup());
 
@@ -2855,7 +2855,7 @@
 
   // Configure window to be ready to attach wl_buffers.
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   EXPECT_TRUE(mock_surface->xdg_surface());
   EXPECT_TRUE(mock_surface->xdg_surface()->xdg_toplevel());
   SendConfigureEvent(mock_surface->xdg_surface(), {100, 100}, 1, states.get());
@@ -2924,7 +2924,7 @@
   Sync();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   auto* mock_xdg_toplevel = mock_surface->xdg_surface()->xdg_toplevel();
 
   // Only app id must be set now.
@@ -2996,7 +2996,7 @@
     constexpr uint32_t button_release_serial = 4;
 
     wl::MockSurface* toplevel_surface = server_.GetObject<wl::MockSurface>(
-        window_->root_surface()->GetSurfaceId());
+        window_->root_surface()->get_surface_id());
     struct wl_array empty;
     wl_array_init(&empty);
     wl_keyboard_send_enter(server_.seat()->keyboard()->resource(),
@@ -3065,7 +3065,7 @@
     constexpr uint32_t touch_up_serial = 3;
 
     wl::MockSurface* toplevel_surface = server_.GetObject<wl::MockSurface>(
-        window_->root_surface()->GetSurfaceId());
+        window_->root_surface()->get_surface_id());
     struct wl_array empty;
     wl_array_init(&empty);
     wl_keyboard_send_enter(server_.seat()->keyboard()->resource(), enter_serial,
@@ -3228,7 +3228,7 @@
   // Emulate a nested menu creation triggered by a mouse button event and ensure
   // ozone/wayland does not attempt to grab it, as its parent also has not grab.
   auto* server_root_menu_surface = server_.GetObject<wl::MockSurface>(
-      root_menu->root_surface()->GetSurfaceId());
+      root_menu->root_surface()->get_surface_id());
   ASSERT_TRUE(server_root_menu_surface);
 
   auto* pointer_resource = server_.seat()->pointer()->resource();
@@ -3329,9 +3329,9 @@
     Sync();
 
     auto* mock_surface_root_window = server_.GetObject<wl::MockSurface>(
-        window->root_surface()->GetSurfaceId());
+        window->root_surface()->get_surface_id());
     auto* mock_surface_subsurface = server_.GetObject<wl::MockSurface>(
-        wayland_subsurface->wayland_surface()->GetSurfaceId());
+        wayland_subsurface->wayland_surface()->get_surface_id());
     EXPECT_TRUE(mock_surface_subsurface);
     wayland_subsurface->ConfigureAndShowSurface(
         subsurface_bounds, gfx::RectF(0, 0, 640, 480) /*parent_bounds_px*/,
@@ -3424,15 +3424,15 @@
   wl::TestSubSurface* test_subs[3] = {
       server_
           .GetObject<wl::MockSurface>(
-              subsurfaces[0]->wayland_surface()->GetSurfaceId())
+              subsurfaces[0]->wayland_surface()->get_surface_id())
           ->sub_surface(),
       server_
           .GetObject<wl::MockSurface>(
-              subsurfaces[1]->wayland_surface()->GetSurfaceId())
+              subsurfaces[1]->wayland_surface()->get_surface_id())
           ->sub_surface(),
       server_
           .GetObject<wl::MockSurface>(
-              subsurfaces[2]->wayland_surface()->GetSurfaceId())
+              subsurfaces[2]->wayland_surface()->get_surface_id())
           ->sub_surface()};
 
   EXPECT_CALL(*test_subs[0], PlaceAbove(_)).Times(1);
@@ -3478,7 +3478,7 @@
 
   auto* surface = window_->root_surface();
   auto* test_viewport =
-      server_.GetObject<wl::MockSurface>(surface->GetSurfaceId())->viewport();
+      server_.GetObject<wl::MockSurface>(surface->get_surface_id())->viewport();
 
   // Set viewport src and dst.
   EXPECT_CALL(*test_viewport, SetSource(512, 384, 512, 384)).Times(1);
@@ -3561,7 +3561,7 @@
   Sync();
 
   auto* mock_surface_popup = server_.GetObject<wl::MockSurface>(
-      menu_window->root_surface()->GetSurfaceId());
+      menu_window->root_surface()->get_surface_id());
   auto* mock_xdg_popup = mock_surface_popup->xdg_surface()->xdg_popup();
 
   EXPECT_EQ(mock_xdg_popup->anchor_rect().origin(),
@@ -3582,7 +3582,7 @@
 
   // Xdg objects can be recreated depending on the version of the xdg shell.
   mock_surface_popup = server_.GetObject<wl::MockSurface>(
-      menu_window->root_surface()->GetSurfaceId());
+      menu_window->root_surface()->get_surface_id());
   mock_xdg_popup = mock_surface_popup->xdg_surface()->xdg_popup();
 
   EXPECT_EQ(mock_xdg_popup->anchor_rect().origin(),
@@ -3723,7 +3723,7 @@
 
   // Test that CanDispatchEvent is set correctly.
   wl::MockSurface* toplevel_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   Sync();
   VerifyCanDispatchTouchEvents({window.get()}, {});
 
@@ -3778,7 +3778,7 @@
   Sync();
 
   wl::MockSurface* other_surface = server_.GetObject<wl::MockSurface>(
-      other_window->root_surface()->GetSurfaceId());
+      other_window->root_surface()->get_surface_id());
   ASSERT_TRUE(other_surface);
   auto* pointer = server_.seat()->pointer();
 
diff --git a/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures_unittest.cc b/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures_unittest.cc
index 65b09ac..fb494bc3 100644
--- a/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures_unittest.cc
@@ -89,7 +89,7 @@
 // See https://crbug.com/1283652
 TEST_P(WaylandPointerGesturesTest, PinchZoomScale) {
   auto* const mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   uint32_t serial = 0;
   auto* pointer = server_.seat()->pointer();
diff --git a/ui/ozone/platform/wayland/test/wayland_drag_drop_test.cc b/ui/ozone/platform/wayland/test/wayland_drag_drop_test.cc
index 838ec122..e164663f 100644
--- a/ui/ozone/platform/wayland/test/wayland_drag_drop_test.cc
+++ b/ui/ozone/platform/wayland/test/wayland_drag_drop_test.cc
@@ -47,7 +47,7 @@
 void WaylandDragDropTest::SendDndEnter(WaylandWindow* window,
                                        const gfx::Point& location) {
   auto* surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   OfferAndEnter(surface, location);
 }
 
@@ -88,7 +88,7 @@
     WaylandWindow* window,
     MockPlatformWindowDelegate* delegate) {
   auto* surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   wl_pointer_send_enter(pointer_->resource(), NextSerial(), surface->resource(),
                         0, 0);
   wl_pointer_send_frame(pointer_->resource());
@@ -98,7 +98,7 @@
     WaylandWindow* window,
     MockPlatformWindowDelegate* delegate) {
   auto* surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   wl_pointer_send_leave(pointer_->resource(), NextSerial(),
                         surface->resource());
   wl_pointer_send_frame(pointer_->resource());
@@ -122,7 +122,7 @@
                                         int id,
                                         const gfx::Point& location) {
   auto* surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   wl_touch_send_down(
       touch_->resource(), NextSerial(), NextTime(), surface->resource(), id,
       wl_fixed_from_double(location.x()), wl_fixed_from_double(location.y()));
diff --git a/ui/ozone/platform/wayland/test/wayland_test.cc b/ui/ozone/platform/wayland/test/wayland_test.cc
index 1df4e90..f4de1f36 100644
--- a/ui/ozone/platform/wayland/test/wayland_test.cc
+++ b/ui/ozone/platform/wayland/test/wayland_test.cc
@@ -83,7 +83,7 @@
   // Pause the server after it has responded to all incoming events.
   server_.Pause();
 
-  auto id = window_->root_surface()->GetSurfaceId();
+  auto id = window_->root_surface()->get_surface_id();
   surface_ = server_.GetObject<wl::MockSurface>(id);
   ASSERT_TRUE(surface_);
 
diff --git a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
index d2df5bc..4d1e070 100644
--- a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
+++ b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
@@ -480,7 +480,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // Can't commit for non-existing buffer id.
   constexpr uint32_t kNumberOfCommits = 0;
@@ -503,7 +503,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // Can't commit for non-existing buffer id.
   constexpr uint32_t kNumberOfCommits = 0;
@@ -637,10 +637,10 @@
 
       // Clear all the possible frame and release callbacks.
       auto* mock_surface = server_.GetObject<wl::MockSurface>(
-          window_->root_surface()->GetSurfaceId());
+          window_->root_surface()->get_surface_id());
       for (auto& subsurface : window_->wayland_subsurfaces_) {
         auto* mock_surface_of_subsurface = server_.GetObject<wl::MockSurface>(
-            subsurface->wayland_surface()->GetSurfaceId());
+            subsurface->wayland_surface()->get_surface_id());
         EXPECT_TRUE(mock_surface_of_subsurface);
         mock_surface_of_subsurface->SendFrameCallback();
         mock_surface_of_subsurface->ClearBufferReleases();
@@ -673,7 +673,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   constexpr uint32_t kNumberOfCommits = 3;
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(kNumberOfCommits);
@@ -789,7 +789,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   auto* mock_wp_presentation = server_.EnsureWpPresentation();
   ASSERT_TRUE(mock_wp_presentation);
 
@@ -916,7 +916,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   constexpr uint32_t kNumberOfCommits = 3;
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(kNumberOfCommits);
@@ -1042,7 +1042,7 @@
 
   const gfx::AcceleratedWidget widget = window_->GetWidget();
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   MockSurfaceGpu mock_surface_gpu(buffer_manager_gpu_.get(), widget_);
 
   auto* linux_dmabuf = server_.zwp_linux_dmabuf_v1();
@@ -1136,7 +1136,7 @@
     Sync();
 
     auto* mock_surface = server_.GetObject<wl::MockSurface>(
-        temp_window->root_surface()->GetSurfaceId());
+        temp_window->root_surface()->get_surface_id());
     MockSurfaceGpu mock_surface_gpu(buffer_manager_gpu_.get(), widget);
 
     auto* linux_dmabuf = server_.zwp_linux_dmabuf_v1();
@@ -1226,7 +1226,7 @@
   Sync();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window->root_surface()->GetSurfaceId());
+      window->root_surface()->get_surface_id());
   MockSurfaceGpu mock_surface_gpu(buffer_manager_gpu_.get(), widget);
 
   auto* linux_dmabuf = server_.zwp_linux_dmabuf_v1();
@@ -1310,7 +1310,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   constexpr uint32_t kNumberOfCommits = 3;
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(kNumberOfCommits);
@@ -1471,7 +1471,7 @@
   auto bounds = temp_window->GetBoundsInPixels();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      temp_window->root_surface()->GetSurfaceId());
+      temp_window->root_surface()->get_surface_id());
   ASSERT_TRUE(mock_surface);
 
   ActivateSurface(mock_surface->xdg_surface());
@@ -1547,7 +1547,7 @@
   const gfx::AcceleratedWidget widget = window_->GetWidget();
   const gfx::Rect bounds = window_->GetBoundsInPixels();
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   MockSurfaceGpu mock_surface_gpu(buffer_manager_gpu_.get(), widget);
 
@@ -1617,7 +1617,7 @@
   const gfx::AcceleratedWidget widget = window_->GetWidget();
   const gfx::Rect bounds = window_->GetBoundsInPixels();
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   MockSurfaceGpu mock_surface_gpu(buffer_manager_gpu_.get(), widget);
 
@@ -1686,7 +1686,7 @@
   const gfx::AcceleratedWidget widget = window_->GetWidget();
   const gfx::Rect bounds = window_->GetBoundsInPixels();
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   MockSurfaceGpu mock_surface_gpu(buffer_manager_gpu_.get(), widget);
 
@@ -1791,7 +1791,7 @@
   ASSERT_TRUE(!connection_->presentation());
   EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId1, _)).Times(1);
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(1);
   EXPECT_CALL(*mock_surface, Frame(_)).Times(1);
   EXPECT_CALL(*mock_surface,
@@ -1990,7 +1990,7 @@
       linux_dmabuf->buffer_params()[1]->buffer_resource());
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // root_surface shall not be committed as one of its subsurface is not
   // committed yet due to pending wl_buffer creation.
@@ -2049,7 +2049,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   constexpr uint32_t kNumberOfCommits = 3;
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(kNumberOfCommits);
@@ -2129,7 +2129,7 @@
   const gfx::Rect bounds = window_->GetBoundsInPixels();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(1);
   EXPECT_CALL(*mock_surface, Frame(_)).Times(1);
@@ -2252,11 +2252,11 @@
   // additional overlay surface. All of them must have buffers attached.
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   EXPECT_TRUE(mock_surface->attached_buffer());
 
   auto* mock_surface_primary_subsurface = server_.GetObject<wl::MockSurface>(
-      window_->primary_subsurface()->wayland_surface()->GetSurfaceId());
+      window_->primary_subsurface()->wayland_surface()->get_surface_id());
   EXPECT_TRUE(mock_surface_primary_subsurface->attached_buffer());
 
   EXPECT_EQ(1u, window_->wayland_subsurfaces().size());
@@ -2265,7 +2265,7 @@
                                              .begin()
                                              ->get()
                                              ->wayland_surface()
-                                             ->GetSurfaceId());
+                                             ->get_surface_id());
   EXPECT_TRUE(mock_surface_overlay_subsurface->attached_buffer());
 
   Sync();
@@ -2308,7 +2308,7 @@
   Sync();
 
   mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
   EXPECT_TRUE(mock_surface->attached_buffer());
 
   // The root surface should have the buffer detached.
@@ -2325,7 +2325,7 @@
   EXPECT_TRUE(window_->IsVisible());
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   constexpr uint32_t kNumberOfCommits = 0;
   EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(kNumberOfCommits);
@@ -2342,7 +2342,7 @@
 
 TEST_P(WaylandBufferManagerTest, CanSubmitOverlayPriority) {
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   std::vector<uint32_t> kBufferIds = {1, 2, 3};
 
@@ -2393,7 +2393,7 @@
 
     for (auto& subsurface : window_->wayland_subsurfaces_) {
       auto* mock_surface_of_subsurface = server_.GetObject<wl::MockSurface>(
-          subsurface->wayland_surface()->GetSurfaceId());
+          subsurface->wayland_surface()->get_surface_id());
       EXPECT_TRUE(mock_surface_of_subsurface);
       EXPECT_EQ(
           mock_surface_of_subsurface->prioritized_surface()->overlay_priority(),
@@ -2415,7 +2415,7 @@
   InitializeSurfaceAugmenter();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   std::vector<uint32_t> kBufferIds = {1, 2, 3};
 
@@ -2472,7 +2472,7 @@
 
         for (auto& subsurface : window_->wayland_subsurfaces_) {
           auto* mock_surface_of_subsurface = server_.GetObject<wl::MockSurface>(
-              subsurface->wayland_surface()->GetSurfaceId());
+              subsurface->wayland_surface()->get_surface_id());
           EXPECT_TRUE(mock_surface_of_subsurface);
 
           gfx::RRectF rounded_clip_bounds_dip = rounded_corners;
@@ -2527,7 +2527,7 @@
                                                false /* fail */);
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   // There will be 235 frames/commits.
   constexpr uint32_t kNumberOfCommits = 235u;
@@ -2643,7 +2643,7 @@
   Sync();
 
   auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
+      window_->root_surface()->get_surface_id());
 
   std::vector<wl::WaylandOverlayConfig> overlay_configs;
   auto bounds = window_->GetBoundsInPixels();
@@ -2675,7 +2675,7 @@
     Sync();
 
     auto* mock_surface = server_.GetObject<wl::MockSurface>(
-        temp_window->root_surface()->GetSurfaceId());
+        temp_window->root_surface()->get_surface_id());
     ASSERT_TRUE(mock_surface);
 
     ActivateSurface(mock_surface->xdg_surface());
@@ -2727,7 +2727,7 @@
         temp_window->wayland_subsurfaces_.begin()->get();
     DCHECK(subsurface);
     auto* mock_surface_of_subsurface = server_.GetObject<wl::MockSurface>(
-        subsurface->wayland_surface()->GetSurfaceId());
+        subsurface->wayland_surface()->get_surface_id());
     DCHECK(mock_surface_of_subsurface);
 
     auto* test_vp = mock_surface_of_subsurface->viewport();